From 7ceefec7141069b4adf4451a874766f8760c66d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alicia=20Boya=20Garc=C3=ADa?= Date: Fri, 21 Sep 2018 22:24:02 +0200 Subject: [PATCH] matroskademux: Emit no-more-pads after parsing Tracks Currently matroskademux does not emit no-more-pads until the first Cluster is parsed, even though the Tracks have already been parsed and from that point on there can be no more tracks. This is important in MSE because the browser needs to know when the MSE initialization segment has been completely parsed so that it can expose the tracks to the user. Some applications depend on this been done before they feed frames to the demuxer. As a consequence, historically WebKit has relied on hacks such as listening to the `pad-added` event, which made impossible to support multiple tracks in the same file. Let's fix that. https://bugzilla.gnome.org/show_bug.cgi?id=797187 --- gst/matroska/matroska-demux.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c index 77176fb620..683380bbf8 100644 --- a/gst/matroska/matroska-demux.c +++ b/gst/matroska/matroska-demux.c @@ -3128,6 +3128,8 @@ gst_matroska_demux_parse_tracks (GstMatroskaDemux * demux, GstEbmlRead * ebml) DEBUG_ELEMENT_STOP (demux, ebml, "Tracks", ret); demux->tracks_parsed = TRUE; + GST_DEBUG_OBJECT (demux, "signaling no more pads"); + gst_element_no_more_pads (GST_ELEMENT (demux)); return ret; } @@ -5196,8 +5198,6 @@ gst_matroska_demux_parse_id (GstMatroskaDemux * demux, guint32 id, demux->common.offset = demux->first_cluster_offset; } - GST_DEBUG_OBJECT (demux, "signaling no more pads"); - gst_element_no_more_pads (GST_ELEMENT (demux)); /* send initial segment - we wait till we know the first incoming timestamp, so we can properly set the start of the segment. */