diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2010-06-17 05:52:37 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-08-08 22:43:01 -0400 |
commit | 9bde9f263e958b0d588aada03854fcc0f0c88b86 (patch) | |
tree | c27ae43a84136e18908a9a4d3bd9b541be6db9d8 /drivers/media/video/uvc/uvcvideo.h | |
parent | df49d113d16b18070b3d51832f3a02145eeb354b (diff) |
V4L/DVB: uvcvideo: Drop corrupted compressed frames
Corrupted video frames are dropped by default by the driver for
uncompressed formats. Data corruption is not less problematic for
compressed formats, so frame drop should be enabled by default for those
formats as well.
Mark buffers as faulty when an isochronous packet loss is detected for
any format, or when the buffer length doesn't match the image size for
uncompressed formats. Drop erroneous buffers regardless of whether the
format is compressed or uncompressed.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/uvc/uvcvideo.h')
-rw-r--r-- | drivers/media/video/uvc/uvcvideo.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/media/video/uvc/uvcvideo.h b/drivers/media/video/uvc/uvcvideo.h index ac272456fbfd..bdacf3beabf5 100644 --- a/drivers/media/video/uvc/uvcvideo.h +++ b/drivers/media/video/uvc/uvcvideo.h | |||
@@ -379,11 +379,12 @@ struct uvc_buffer { | |||
379 | struct list_head queue; | 379 | struct list_head queue; |
380 | wait_queue_head_t wait; | 380 | wait_queue_head_t wait; |
381 | enum uvc_buffer_state state; | 381 | enum uvc_buffer_state state; |
382 | unsigned int error; | ||
382 | }; | 383 | }; |
383 | 384 | ||
384 | #define UVC_QUEUE_STREAMING (1 << 0) | 385 | #define UVC_QUEUE_STREAMING (1 << 0) |
385 | #define UVC_QUEUE_DISCONNECTED (1 << 1) | 386 | #define UVC_QUEUE_DISCONNECTED (1 << 1) |
386 | #define UVC_QUEUE_DROP_INCOMPLETE (1 << 2) | 387 | #define UVC_QUEUE_DROP_CORRUPTED (1 << 2) |
387 | 388 | ||
388 | struct uvc_video_queue { | 389 | struct uvc_video_queue { |
389 | enum v4l2_buf_type type; | 390 | enum v4l2_buf_type type; |
@@ -562,7 +563,7 @@ extern struct uvc_driver uvc_driver; | |||
562 | 563 | ||
563 | /* Video buffers queue management. */ | 564 | /* Video buffers queue management. */ |
564 | extern void uvc_queue_init(struct uvc_video_queue *queue, | 565 | extern void uvc_queue_init(struct uvc_video_queue *queue, |
565 | enum v4l2_buf_type type); | 566 | enum v4l2_buf_type type, int drop_corrupted); |
566 | extern int uvc_alloc_buffers(struct uvc_video_queue *queue, | 567 | extern int uvc_alloc_buffers(struct uvc_video_queue *queue, |
567 | unsigned int nbuffers, unsigned int buflength); | 568 | unsigned int nbuffers, unsigned int buflength); |
568 | extern int uvc_free_buffers(struct uvc_video_queue *queue); | 569 | extern int uvc_free_buffers(struct uvc_video_queue *queue); |