From e6a4c81af5fb8049d27c4bb114f3d629c2675276 Mon Sep 17 00:00:00 2001 From: Manasa Athreya Date: Wed, 23 Sep 2015 12:39:35 +0900 Subject: [PATCH] qtdemux: Check multi trex to find track id in mp4 mpeg-dash stream If stream has more than one trex box which is not matched to actual track id, it makes qtdemux crashed. Author : Manasa Athreya (manasa.athreya@lge.com) https://bugzilla.gnome.org/show_bug.cgi?id=754864 --- gst/isomp4/qtdemux.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c index db9fe984a8..bd4987b14d 100644 --- a/gst/isomp4/qtdemux.c +++ b/gst/isomp4/qtdemux.c @@ -8423,6 +8423,7 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) guint32 fourcc; guint value_size, stsd_len, len; guint32 track_id; + guint32 dummy; GST_DEBUG_OBJECT (qtdemux, "parse_trak"); @@ -8454,6 +8455,8 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) gst_qtdemux_stream_flush_segments_data (qtdemux, stream); gst_qtdemux_stream_flush_samples_data (qtdemux, stream); } + /* need defaults for fragments */ + qtdemux_parse_trex (qtdemux, stream, &dummy, &dummy, &dummy); if (stream->pending_tags == NULL) stream->pending_tags = gst_tag_list_new_empty (); @@ -10023,7 +10026,6 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) goto samples_failed; if (qtdemux->fragmented) { - guint32 dummy; guint64 offset; /* need all moov samples as basis; probably not many if any at all */ @@ -10041,8 +10043,6 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) GST_CLOCK_TIME_IS_VALID (qtdemux->segment.duration)) stream->duration = GSTTIME_TO_QTSTREAMTIME (stream, qtdemux->segment.duration); - /* need defaults for fragments */ - qtdemux_parse_trex (qtdemux, stream, &dummy, &dummy, &dummy); } /* configure segments */