From fb5d50cd07c4aa66d711e2cb0303637ab6d2f695 Mon Sep 17 00:00:00 2001 From: Philippe Normand Date: Wed, 24 Feb 2016 09:12:03 +0100 Subject: 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 --- gst/isomp4/qtdemux.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c index 20618a6d4..a7e188d6c 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 */ -- cgit v1.2.1