From: Philippe Normand Date: Wed, 24 Feb 2016 08:12:03 +0000 (+0100) Subject: qtdemux: don't push encrypted buffer without cenc metadata X-Git-Tag: 1.10.4~544 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fb5d50cd07c4aa66d711e2cb0303637ab6d2f695;p=platform%2Fupstream%2Fgst-plugins-good.git qtdemux: don't push encrypted buffer without cenc metadata When the cenc metadata is stored outside of the moof box and the stream is exposed it is possible that the cenc metadata hasn't been processed yet while the first buffer is being pushed. When this happens the buffer can't possibly be decrypted downstream so don't push it. https://bugzilla.gnome.org/show_bug.cgi?id=762516 --- diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c index 20618a6..a7e188d 100644 --- a/gst/isomp4/qtdemux.c +++ b/gst/isomp4/qtdemux.c @@ -4971,6 +4971,12 @@ gst_qtdemux_decorate_and_push_buffer (GstQTDemux * qtdemux, gst_pad_push_event (stream->pad, event); } + if (qtdemux->cenc_aux_info_offset > 0 && info->crypto_info == NULL) { + GST_DEBUG_OBJECT (qtdemux, "cenc metadata hasn't been parsed yet"); + gst_buffer_unref (buf); + goto exit; + } + index = stream->sample_index - (stream->n_samples - info->crypto_info->len); if (G_LIKELY (index >= 0 && index < info->crypto_info->len)) { /* steal structure from array */