Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

V4L/DVB (9809): 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.

Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

authored by

Laurent Pinchart and committed by
Mauro Carvalho Chehab
0fbd8ee6 af009cf6

+6 -1
+3
drivers/media/video/uvc/uvc_driver.c
··· 44 44 #define DRIVER_VERSION "v0.1.0" 45 45 #endif 46 46 47 + unsigned int uvc_no_drop_param; 47 48 static unsigned int uvc_quirks_param; 48 49 unsigned int uvc_trace_param; 49 50 ··· 1940 1939 module_init(uvc_init); 1941 1940 module_exit(uvc_cleanup); 1942 1941 1942 + module_param_named(nodrop, uvc_no_drop_param, uint, S_IRUGO|S_IWUSR); 1943 + MODULE_PARM_DESC(nodrop, "Don't drop incomplete frames"); 1943 1944 module_param_named(quirks, uvc_quirks_param, uint, S_IRUGO|S_IWUSR); 1944 1945 MODULE_PARM_DESC(quirks, "Forced device quirks"); 1945 1946 module_param_named(trace, uvc_trace_param, uint, S_IRUGO|S_IWUSR);
+2 -1
drivers/media/video/uvc/uvc_video.c
··· 1003 1003 return 0; 1004 1004 } 1005 1005 1006 - if (video->streaming->cur_format->flags & UVC_FMT_FLAG_COMPRESSED) 1006 + if ((video->streaming->cur_format->flags & UVC_FMT_FLAG_COMPRESSED) || 1007 + uvc_no_drop_param) 1007 1008 video->queue.flags &= ~UVC_QUEUE_DROP_INCOMPLETE; 1008 1009 else 1009 1010 video->queue.flags |= UVC_QUEUE_DROP_INCOMPLETE;
+1
drivers/media/video/uvc/uvcvideo.h
··· 683 683 #define UVC_WARN_MINMAX 0 684 684 #define UVC_WARN_PROBE_DEF 1 685 685 686 + extern unsigned int uvc_no_drop_param; 686 687 extern unsigned int uvc_trace_param; 687 688 688 689 #define uvc_trace(flag, msg...) \