[Bug 731274] New: Valid frames dropped after losing input signal with dvbsrc
GStreamer (bugzilla.gnome.org)
bugzilla at gnome.org
Thu Jun 5 08:08:21 PDT 2014
https://bugzilla.gnome.org/show_bug.cgi?id=731274
GStreamer | don't know | 1.3.2
Summary: Valid frames dropped after losing input signal with
dvbsrc
Classification: Platform
Product: GStreamer
Version: 1.3.2
OS/Version: Linux
Status: UNCONFIRMED
Severity: major
Priority: Normal
Component: don't know
AssignedTo: gstreamer-bugs at lists.freedesktop.org
ReportedBy: aurelien.zanelli at parrot.com
QAContact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
Running the following pipeline (template) on RPi for instance
gst-launch-1.0 dvbsrc <modulation-params> ! queue max-size-buffers=600
max-size-time=0 ! tsdemux ! h264parse ! omxh264dec ! glimagesink
Remove the antenna during 30s and re-plug it will cause the next 30s valid
frames to be dropped by the omxdecoder and so no image will be displayed.
What happened ?
We begin with a good signal and video on the screen and pipeline run correctly.
After a while, for example at 0:01:00, we lost the antenna signal. So the
dvbsrc won't push data anymore but the pipeline clock keep going and we have
some data block in tsdemux, h264parse (not enough data to complete buffer) and
we can also have some frame into the decoder. Let's say these data are
timestamped with 0:01:00.
When the signal comes back, for example at 0:02:00, the tsdemux/h264parse and
the decoder will output the old timestamped frames. When the videosink received
these frames, it performs QOS on it and will return a jitter of 0:01:00 and a
timestamp of 0:01:00.
Then, the videodecoder base class will parse the QOS event and set it's private
variable earliest_time to timestamp + 2 * jitter + priv->qos_frame_duration = ~
0:03:00. earliest_time is used to calculate the next frame deadline.
So all frames between 0:02:00 and 0:03:00 which are valid and not late will be
considered by the videodecoder base class to be late.
With the omxvideodecoder implementation, frames too late are dropped
(http://cgit.freedesktop.org/gstreamer/gst-omx/tree/omx/gstomxvideodec.c#n1356).
In fact they are already too late when they are handled by omxdecoder class.
I upload a log of the example pipeline with
--gst-debug=omxvideodec:6,basesink:5,videodecoder:5,GST_QOS:5 on
http://www.darkosphere.fr/tmp/gstreamer/dvb-qos-signal-lost.log
In this log, the gap occurs between 0:00:11.545868000 and 0:00:42.025934000
As a temporary workaround, I disabled the frame dropping in omxvideodec and I
get instantaneously the stream after a gap.
However I don't think the problem is especially in gst-omx nor in dvbsrc. I
think it can happen with all live pipeline and decoder which handle QOS. That's
why I set "don't know" as category.
Do you have any ideas and hints on how to solve this issue ? I look at GAP
event, but I don't succeed :)
--
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- 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