The patch number 9031 was added via Mauro Carvalho Chehab <[EMAIL PROTECTED]>
to http://linuxtv.org/hg/v4l-dvb master development tree.

Kernel patches in this development tree may be modified to be backward
compatible with older kernels. Compatibility modifications will be
removed before inclusion into the mainstream Kernel

If anyone has any objections, please let us know by sending a message to:
        [EMAIL PROTECTED]

------

From: Laurent Pinchart  <[EMAIL PROTECTED]>
uvcvideo: Fix incomplete frame drop when switching to a variable size format.


When streaming in a fixed size format the driver sets a flag in the uvc_queue
structure to drop incomplete incoming frames. The flag wasn't cleared when
switching to a variable size format, which resulted in a broken
'MJPEG after YUV'.

Signed-off-by: Laurent Pinchart <[EMAIL PROTECTED]>
Signed-off-by: Mauro Carvalho Chehab <[EMAIL PROTECTED]>


---

 linux/drivers/media/video/uvc/uvc_v4l2.c  |    4 ----
 linux/drivers/media/video/uvc/uvc_video.c |    5 +++++
 2 files changed, 5 insertions(+), 4 deletions(-)

diff -r d188cee3f7f2 -r da14e820a648 linux/drivers/media/video/uvc/uvc_v4l2.c
--- a/linux/drivers/media/video/uvc/uvc_v4l2.c  Tue Sep 16 01:19:46 2008 +0000
+++ b/linux/drivers/media/video/uvc/uvc_v4l2.c  Tue Sep 16 01:24:29 2008 +0000
@@ -842,10 +842,6 @@ static int uvc_v4l2_do_ioctl(struct inod
                if (ret < 0)
                        return ret;
 
-               if (!(video->streaming->cur_format->flags &
-                   UVC_FMT_FLAG_COMPRESSED))
-                       video->queue.flags |= UVC_QUEUE_DROP_INCOMPLETE;
-
                rb->count = ret;
                ret = 0;
                break;
diff -r d188cee3f7f2 -r da14e820a648 linux/drivers/media/video/uvc/uvc_video.c
--- a/linux/drivers/media/video/uvc/uvc_video.c Tue Sep 16 01:19:46 2008 +0000
+++ b/linux/drivers/media/video/uvc/uvc_video.c Tue Sep 16 01:24:29 2008 +0000
@@ -971,6 +971,11 @@ int uvc_video_enable(struct uvc_video_de
                return 0;
        }
 
+       if (video->streaming->cur_format->flags & UVC_FMT_FLAG_COMPRESSED)
+               video->queue.flags &= ~UVC_QUEUE_DROP_INCOMPLETE;
+       else
+               video->queue.flags |= UVC_QUEUE_DROP_INCOMPLETE;
+
        if ((ret = uvc_queue_enable(&video->queue, 1)) < 0)
                return ret;
 


---

Patch is available at: 
http://linuxtv.org/hg/v4l-dvb/rev/da14e820a6489993a1d47ddf8ae9bb3f75a3b800

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to