Browse Source

V4L/DVB (5403): Set vsync_field correctly in ivtv.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Hans Verkuil 18 years ago
parent
commit
037c86c533
1 changed files with 7 additions and 3 deletions
  1. 7 3
      drivers/media/video/ivtv/ivtv-ioctl.c

+ 7 - 3
drivers/media/video/ivtv/ivtv-ioctl.c

@@ -1314,9 +1314,13 @@ static int ivtv_ivtv_ioctls(struct file *filp, unsigned int cmd, void *arg)
 				ev->type = VIDEO_EVENT_DECODER_STOPPED;
 			else if (test_and_clear_bit(IVTV_F_I_EV_VSYNC, &itv->i_flags)) {
 				ev->type = VIDEO_EVENT_VSYNC;
-				ev->timestamp = test_bit(IVTV_F_I_EV_VSYNC_FIELD, &itv->i_flags) ?
-					1 : 0;
-				clear_bit(IVTV_F_I_EV_VSYNC_ENABLED, &itv->i_flags);
+				ev->u.vsync_field = test_bit(IVTV_F_I_EV_VSYNC_FIELD, &itv->i_flags) ?
+					VIDEO_VSYNC_FIELD_ODD : VIDEO_VSYNC_FIELD_EVEN;
+				if (itv->output_mode == OUT_UDMA_YUV &&
+					(itv->yuv_info.lace_mode & IVTV_YUV_MODE_MASK) ==
+								IVTV_YUV_MODE_PROGRESSIVE) {
+					ev->u.vsync_field = VIDEO_VSYNC_FIELD_PROGRESSIVE;
+				}
 			}
 			if (ev->type)
 				return 0;