avformat/matroskaenc: wrap V_QUICKTIME codec private in something that looks like its part of quicktime stsd

This is needed for matroska spec compliance
Fixes playback of SVQ3 in matroska with vlc
Fixes Ticket 3256

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 8456bd2c0f)
This commit is contained in:
Michael Niedermayer
2014-01-19 20:59:28 +01:00
committed by Carl Eugen Hoyos
parent be66ae3b01
commit ea66bd0d24

View File

@@ -491,8 +491,18 @@ static int mkv_write_codecprivate(AVFormatContext *s, AVIOContext *pb, AVCodecCo
if (qt_id) {
if (!codec->codec_tag)
codec->codec_tag = ff_codec_get_tag(ff_codec_movvideo_tags, codec->codec_id);
if (codec->extradata_size)
if (codec->extradata_size) {
if ( ff_codec_get_id(ff_codec_movvideo_tags, codec->codec_tag) == codec->codec_id
&& ff_codec_get_id(ff_codec_movvideo_tags, AV_RL32(codec->extradata+4)) != codec->codec_id
) {
int i;
avio_wb32(dyn_cp, 0x5a + codec->extradata_size);
avio_wl32(dyn_cp, codec->codec_tag);
for(i=0; i<0x5a-8; i++)
avio_w8(dyn_cp, 0);
}
avio_write(dyn_cp, codec->extradata, codec->extradata_size);
}
} else {
if (!codec->codec_tag)
codec->codec_tag = ff_codec_get_tag(ff_codec_bmp_tags, codec->codec_id);