The patch number 9809 was added via Laurent Pinchart 
<laurent.pinch...@skynet.be>
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:
        v4l-dvb-maintai...@linuxtv.org

------

From: Laurent Pinchart  <laurent.pinch...@skynet.be>
uvcvideo: Add nodrop module parameter to turn incomplete frame drop off.


The driver drops incomplete uncompressed video frames to avoid confusing
userspace with corrupt data. Add a nodrop module parameter to turn that
behaviour off and make all frames available to userspace.

Priority: normal

Signed-off-by: Laurent Pinchart <laurent.pinch...@skynet.be>


---

 linux/drivers/media/video/uvc/uvc_driver.c |    3 +++
 linux/drivers/media/video/uvc/uvc_video.c  |    3 ++-
 linux/drivers/media/video/uvc/uvcvideo.h   |    1 +
 3 files changed, 6 insertions(+), 1 deletion(-)

diff -r ffcead3b88b8 -r 07d965b42627 linux/drivers/media/video/uvc/uvc_driver.c
--- a/linux/drivers/media/video/uvc/uvc_driver.c        Tue Nov 25 22:26:38 
2008 +0100
+++ b/linux/drivers/media/video/uvc/uvc_driver.c        Sat Dec 06 20:25:14 
2008 +0100
@@ -44,6 +44,7 @@
 #define DRIVER_VERSION         "v0.1.0"
 #endif
 
+unsigned int uvc_no_drop_param;
 static unsigned int uvc_quirks_param;
 unsigned int uvc_trace_param;
 
@@ -1945,6 +1946,8 @@ module_init(uvc_init);
 module_init(uvc_init);
 module_exit(uvc_cleanup);
 
+module_param_named(nodrop, uvc_no_drop_param, uint, S_IRUGO|S_IWUSR);
+MODULE_PARM_DESC(nodrop, "Don't drop incomplete frames");
 module_param_named(quirks, uvc_quirks_param, uint, S_IRUGO|S_IWUSR);
 MODULE_PARM_DESC(quirks, "Forced device quirks");
 module_param_named(trace, uvc_trace_param, uint, S_IRUGO|S_IWUSR);
diff -r ffcead3b88b8 -r 07d965b42627 linux/drivers/media/video/uvc/uvc_video.c
--- a/linux/drivers/media/video/uvc/uvc_video.c Tue Nov 25 22:26:38 2008 +0100
+++ b/linux/drivers/media/video/uvc/uvc_video.c Sat Dec 06 20:25:14 2008 +0100
@@ -1007,7 +1007,8 @@ int uvc_video_enable(struct uvc_video_de
                return 0;
        }
 
-       if (video->streaming->cur_format->flags & UVC_FMT_FLAG_COMPRESSED)
+       if ((video->streaming->cur_format->flags & UVC_FMT_FLAG_COMPRESSED) ||
+           uvc_no_drop_param)
                video->queue.flags &= ~UVC_QUEUE_DROP_INCOMPLETE;
        else
                video->queue.flags |= UVC_QUEUE_DROP_INCOMPLETE;
diff -r ffcead3b88b8 -r 07d965b42627 linux/drivers/media/video/uvc/uvcvideo.h
--- a/linux/drivers/media/video/uvc/uvcvideo.h  Tue Nov 25 22:26:38 2008 +0100
+++ b/linux/drivers/media/video/uvc/uvcvideo.h  Sat Dec 06 20:25:14 2008 +0100
@@ -683,6 +683,7 @@ struct uvc_driver {
 #define UVC_WARN_MINMAX                0
 #define UVC_WARN_PROBE_DEF     1
 
+extern unsigned int uvc_no_drop_param;
 extern unsigned int uvc_trace_param;
 
 #define uvc_trace(flag, msg...) \


---

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

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

Reply via email to