# HG changeset patch # User aurel # Date 1214149948 0 # Node ID ed5686879cdb3425be19cb6b5c76205841799a90 # Parent 8bf1a8e12b433d07f63d1e2d920831d06a6762c3 matroskadec: decode track private data if needed original patch by Evgeniy Stepanov eugeni.stepanov _at_ gmail _dot_ com diff -r 8bf1a8e12b43 -r ed5686879cdb matroskadec.c --- a/matroskadec.c Sun Jun 22 15:49:44 2008 +0000 +++ b/matroskadec.c Sun Jun 22 15:52:28 2008 +0000 @@ -1610,6 +1610,23 @@ } } + if (track->codec_priv_size && track->encoding_scope & 2) { + uint8_t *orig_priv = track->codec_priv; + int offset = matroska_decode_buffer(&track->codec_priv, + &track->codec_priv_size, track); + if (offset > 0) { + track->codec_priv = av_malloc(track->codec_priv_size + offset); + memcpy(track->codec_priv, track->encoding_settings, offset); + memcpy(track->codec_priv+offset, orig_priv, track->codec_priv_size); + track->codec_priv_size += offset; + av_free(orig_priv); + } else if (!offset) { + av_free(orig_priv); + } else + av_log(matroska->ctx, AV_LOG_ERROR, + "Failed to decode codec private data\n"); + } + if (track->type && matroska->num_tracks < ARRAY_SIZE(matroska->tracks)) { matroska->tracks[matroska->num_tracks++] = track; } else {