Commit 0fbd8ee6 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Mauro Carvalho Chehab

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: default avatarLaurent Pinchart <laurent.pinchart@skynet.be>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent af009cf6
...@@ -44,6 +44,7 @@ ...@@ -44,6 +44,7 @@
#define DRIVER_VERSION "v0.1.0" #define DRIVER_VERSION "v0.1.0"
#endif #endif
unsigned int uvc_no_drop_param;
static unsigned int uvc_quirks_param; static unsigned int uvc_quirks_param;
unsigned int uvc_trace_param; unsigned int uvc_trace_param;
...@@ -1939,6 +1940,8 @@ static void __exit uvc_cleanup(void) ...@@ -1939,6 +1940,8 @@ static void __exit uvc_cleanup(void)
module_init(uvc_init); module_init(uvc_init);
module_exit(uvc_cleanup); 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_param_named(quirks, uvc_quirks_param, uint, S_IRUGO|S_IWUSR);
MODULE_PARM_DESC(quirks, "Forced device quirks"); MODULE_PARM_DESC(quirks, "Forced device quirks");
module_param_named(trace, uvc_trace_param, uint, S_IRUGO|S_IWUSR); module_param_named(trace, uvc_trace_param, uint, S_IRUGO|S_IWUSR);
......
...@@ -1003,7 +1003,8 @@ int uvc_video_enable(struct uvc_video_device *video, int enable) ...@@ -1003,7 +1003,8 @@ int uvc_video_enable(struct uvc_video_device *video, int enable)
return 0; 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; video->queue.flags &= ~UVC_QUEUE_DROP_INCOMPLETE;
else else
video->queue.flags |= UVC_QUEUE_DROP_INCOMPLETE; video->queue.flags |= UVC_QUEUE_DROP_INCOMPLETE;
......
...@@ -683,6 +683,7 @@ struct uvc_driver { ...@@ -683,6 +683,7 @@ struct uvc_driver {
#define UVC_WARN_MINMAX 0 #define UVC_WARN_MINMAX 0
#define UVC_WARN_PROBE_DEF 1 #define UVC_WARN_PROBE_DEF 1
extern unsigned int uvc_no_drop_param;
extern unsigned int uvc_trace_param; extern unsigned int uvc_trace_param;
#define uvc_trace(flag, msg...) \ #define uvc_trace(flag, msg...) \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment