[Bug 796723] New: v4l2src + jpegdec dropping every second frame (timestamping / clocking / QoS issues?)

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Fri Jun 29 18:32:21 UTC 2018


https://bugzilla.gnome.org/show_bug.cgi?id=796723

            Bug ID: 796723
           Summary: v4l2src + jpegdec dropping every second frame
                    (timestamping / clocking / QoS issues?)
    Classification: Platform
           Product: GStreamer
           Version: 1.14.1
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: don't know
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: marcan at marcan.st
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

I'd been using GStreamer 1.12, which uses libv4l2, with this v4l2src usage:

gst-launch-1.0 v4l2src device=/dev/v4l/buffalo !
'video/x-raw,width=1280,height=720,framerate=30/1' ! videoconvert !
fpsdisplaysink

AFAIK this works because the webcam outputs MJPEG and libv4l2 decodes it (the
camera cannot output uncompressed video at 30FPS). GStreamer 1.14 disabled use
of libv4l2 by default, though the above pipeline still works with
GST_V4L2_USE_LIBV4L2=1. I used this with kind of basic pattern with a more
complicated pipeline compositing multiple cameras and a screen capture.

However, trying to use gstreamer's own jpegdec instead, as is required without
libv4l2, does not work properly (using libv4l2 with jpegdec doesn't work
either). This is the test pipeline:

gst-launch-1.0 v4l2src device=/dev/v4l/buffalo !
'image/jpeg,width=1280,height=720,framerate=30/1' ! jpegdec ! videoconvert !
fpsdisplaysink

I get 15 FPS output, and every second frame is dropped. This only happens with
one of my two webcams - the other yields a clean 30 FPS. With GST_DEBUG=5 I see
a line like this every second frame:

0:00:06.137449218 12416 0x55621e964590 DEBUG           videodecoder
gstvideodecoder.c:3155:gst_video_decoder_clip_and_push_buf:<jpegdec0> Dropping
frame due to QoS. start:0:00:04.839125944 deadline:0:00:04.839125944
earliest_time:0:00:04.854135807

Using "fpsdisplaysink sync=false" works around the issue and yields 30 FPS (for
both cameras).

I get the feeling there's a clocking issue. Having both the webcam produce
frames at a certain rate and the display consume them at its own rate (60Hz,
which is a multiple of 30Hz) seems to make jpegdec think it's too late to the
party after every output frame, on the next frame. Both webcams are nominally
30 FPS, but I guess one is probably slightly under and one slightly over that.

I'll attach debug logs for the second pipeline above, with both webcams (the
one that causes dropped frames and the one that doesn't).

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list