diff options
author | Nicolas Dufresne <nicolas.dufresne@collabora.com> | 2020-05-20 17:30:59 -0400 |
---|---|---|
committer | GStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2020-05-20 21:35:06 +0000 |
commit | bfb1506381ab702a05fc5037797f76f26cda1d83 (patch) | |
tree | 8eb11cd603c0216a42bdf1f3a27a45e30bd445c9 | |
parent | 8a8c8afc867891d16c70ee411228d732c4c4fcd0 (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.c | 4 |
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) |