[Bug 785951] New: urisourcebin/decodebin3: Don't use custom EOS events
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Mon Aug 7 15:34:39 UTC 2017
https://bugzilla.gnome.org/show_bug.cgi?id=785951
Bug ID: 785951
Summary: urisourcebin/decodebin3: Don't use custom EOS events
Classification: Platform
Product: GStreamer
Version: git master
OS: Linux
Status: NEW
Severity: normal
Priority: Normal
Component: gst-plugins-base
Assignee: gstreamer-bugs at lists.freedesktop.org
Reporter: bilboed at bilboed.com
QA Contact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
(Note: reproducible with seek_with_stop validate scenarios and playbin3)
urisourcebin and decodebin3 make usage of GST_EVENT_CUSTOM_DOWNSTREAM events
replacing the actual GST_EVENT_EOS to decide later on whether the EOS event
should be forwarded or not.
The problem with this is that queue/multiqueue/queue2 will drop any
non-{EOS|SEGMENT} events if the downstream flow return is GST_FLOW_EOS.
This results in hangs because:
1) upstream (say adaptivedemux) pushes GST_EVENT_EOS once it's done pushing
buffers (of which there is slightly too much, causing a downstream decoder/sink
to return GST_FLOW_EOS).
2) urisourcebin/decodebin3 converts that EOS to a GST_EVENT_CUSTOM_DOWNSTREAM
and pushes it through queue2 and multiqueue elements
3) => Those custom events get dropped because GST_FLOW_EOS was previously
returned
4) => Actual EOS events never reaches sinks
5) => hang
I am failing to remember the reason why we used custom downstream events
instead of actual EOS.
The ideal way forward would be to just use regular EOS events to which we add a
custom field in the event gststructure (gst_structure_set(eos_event_structure,
"urisourcebin", G_TYPE_BOOLEAN, TRUE, NULL).
--
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