mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-09-20 05:16:38 +00:00
matroskadec: decode track private data if needed
original patch by Evgeniy Stepanov eugeni.stepanov _at_ gmail _dot_ com Originally committed as revision 13892 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
935ec5a1d5
commit
5e8477b011
@ -1610,6 +1610,23 @@ matroska_add_stream (MatroskaDemuxContext *matroska)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)) {
|
if (track->type && matroska->num_tracks < ARRAY_SIZE(matroska->tracks)) {
|
||||||
matroska->tracks[matroska->num_tracks++] = track;
|
matroska->tracks[matroska->num_tracks++] = track;
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user