v4l2-uvm-test: support msync
Change-Id: Id22ba53b30b4eae7c6419aaf4845af0d310d72d3
diff --git a/v4l2-uvm-test/src/drm.c b/v4l2-uvm-test/src/drm.c
index 70c2927..1b19c54 100644
--- a/v4l2-uvm-test/src/drm.c
+++ b/v4l2-uvm-test/src/drm.c
@@ -124,6 +124,8 @@
struct drm_frame *queue;
#endif
void * avsync;
+ int session;
+ int session_id;
bool last_frame;
};
@@ -692,6 +694,7 @@
unsigned int plane_id;
int rc;
drmModeModeInfo mode;
+ struct video_config config;
secure_mode = smode;
@@ -808,11 +811,18 @@
}
log_set_level((log_level >> 1) & 0x7);
- aml_dis.avsync = av_sync_create(0, AV_SYNC_MODE_VMASTER, 2, 2, 90000/mode.vrefresh);
+ aml_dis.session = av_sync_open_session(&aml_dis.session_id);
+ if (aml_dis.session < 0) {
+ printf("Failed to alloc avsync session\n");
+ return -1;
+ }
+ aml_dis.avsync = av_sync_create(aml_dis.session_id, AV_SYNC_MODE_VMASTER, AV_SYNC_TYPE_VIDEO, 3);
if (!aml_dis.avsync) {
printf("create avsync fails\n");
return -1;
}
+ config.delay = 2;
+ av_sync_video_config(aml_dis.avsync, &config);
return 0;
}
@@ -892,9 +902,10 @@
aml_dis.started = false;
pthread_join(aml_dis.disp_t, NULL);
close_buffer(drm_cli_fd, &osd_gem_buf);
- if (aml_dis.avsync)
+ if (aml_dis.avsync) {
av_sync_destroy(aml_dis.avsync);
-
+ av_sync_close_session (aml_dis.session);
+ }
#if 0
if (aml_dis.queue)
free(aml_dis.queue);