summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Dufresne <nicolas.dufresne@collabora.com>2020-05-20 17:30:59 -0400
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>2020-05-20 21:35:06 +0000
commitbfb1506381ab702a05fc5037797f76f26cda1d83 (patch)
tree8eb11cd603c0216a42bdf1f3a27a45e30bd445c9
parent8a8c8afc867891d16c70ee411228d732c4c4fcd0 (diff)
v4l2src: Ignore non-increasing sequence number
With older kernel, older driver or just broken drivers, the sequence number may not be increasing. This simply ignore the sequence in this case. This would otherwise miss-leading large amount of lost frame being reported. Fixes #729 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/598>
-rw-r--r--sys/v4l2/gstv4l2src.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/v4l2/gstv4l2src.c b/sys/v4l2/gstv4l2src.c
index 5ebac9efcf..c5237011a5 100644
--- a/sys/v4l2/gstv4l2src.c
+++ b/sys/v4l2/gstv4l2src.c
@@ -978,7 +978,9 @@ retry:
/* use generated offset values only if there are not already valid ones
* set by the v4l2 device */
if (!GST_BUFFER_OFFSET_IS_VALID (*buf)
- || !GST_BUFFER_OFFSET_END_IS_VALID (*buf)) {
+ || !GST_BUFFER_OFFSET_END_IS_VALID (*buf)
+ || GST_BUFFER_OFFSET (*buf) <=
+ (v4l2src->offset - v4l2src->renegotiation_adjust)) {
GST_BUFFER_OFFSET (*buf) = v4l2src->offset;
GST_BUFFER_OFFSET_END (*buf) = v4l2src->offset + 1;
if (!half_frame || !v4l2src->next_offset_same)