From 66448be77f769c3675ccd8ccb82558a96c3a71bb Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Tue, 2 May 2017 10:32:30 +0900 Subject: [PATCH] qtdemux: Fix crash on mss stream caused by invalid stsd entry access Since mss has no moov, default stsd entry should be created with media-caps. https://bugzilla.gnome.org/show_bug.cgi?id=782042 --- gst/isomp4/qtdemux.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c index 6c955754f1..87fed9b858 100644 --- a/gst/isomp4/qtdemux.c +++ b/gst/isomp4/qtdemux.c @@ -1971,6 +1971,10 @@ gst_qtdemux_setcaps (GstQTDemux * demux, GstCaps * caps) stream = _create_stream (); demux->streams[demux->n_streams] = stream; demux->n_streams = 1; + /* mss has no stsd/stsd entry, use id 0 as default */ + stream->stsd_entries_length = 1; + stream->stsd_sample_description_id = stream->cur_stsd_entry_index = 0; + stream->stsd_entries = g_new0 (QtDemuxStreamStsdEntry, 1); } else { stream = demux->streams[0]; } @@ -3444,6 +3448,11 @@ qtdemux_parse_tfhd (GstQTDemux * qtdemux, GstByteReader * tfhd, (*stream)->stsd_sample_description_id = sample_description_index - 1; } + if (qtdemux->mss_mode) { + /* mss has no stsd entry */ + (*stream)->stsd_sample_description_id = 0; + } + if (flags & TF_DEFAULT_SAMPLE_DURATION) if (!gst_byte_reader_get_uint32_be (tfhd, default_sample_duration)) goto invalid_track;