[Bug 709224] oggdemux doesn't send its eos before it has reached a key unit.

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Wed Oct 2 10:50:58 CEST 2013


https://bugzilla.gnome.org/show_bug.cgi?id=709224
  GStreamer | gst-plugins-base | git

Sebastian Dröge (slomo) <slomo> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
 Attachment #256227|none                        |needs-work
             status|                            |

--- Comment #9 from Sebastian Dröge (slomo) <slomo at circular-chaos.org> 2013-10-02 08:50:57 UTC ---
(From update of attachment 256227)
I'm not sure this is correct. This will return EOS immediately if one stream is
EOS. That's wrong, it should if all are EOS, see gst_ogg_demux_check_eos().

The correct behaviour for flow combination in demuxers is:
- One or more "fatal" errors => fatal error
- All not-linked => not-linked
- All eos => EOS
- Otherwise: OK

Fatal error would be not-negotiated and below. I'm not sure about flushing but
AFAIU flushing should only be returned if all pads are flushing.


Please add a utility function to gstutils.[ch] for this. Something like

GstFlowReturn gst_element_combine_flow_returns (GstElement *e, SomeCallback cb,
gpointer user_data);

Where SomeCallback is
GstFlowReturn SomeCallback (gpointer user_data) and returns the flow return of
the next pad.

So it would iterate over all pads, collect the flow returns and combine them.
When done it would return GST_FLOW_CUSTOM_SUCCESS or something like that.
Alternative do it index based and put a number of pads as parameter in the
function.

-- 
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