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
This commit is contained in:
Philippe Normand 2016-02-24 09:12:03 +01:00 committed by Sebastian Dröge
parent 459ef195bb
commit fb5d50cd07

View file

@ -4971,6 +4971,12 @@ gst_qtdemux_decorate_and_push_buffer (GstQTDemux * qtdemux,
gst_pad_push_event (stream->pad, event); 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); index = stream->sample_index - (stream->n_samples - info->crypto_info->len);
if (G_LIKELY (index >= 0 && index < info->crypto_info->len)) { if (G_LIKELY (index >= 0 && index < info->crypto_info->len)) {
/* steal structure from array */ /* steal structure from array */