forked from FFmpeg/FFmpeg
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>
This commit is contained in:
parent
da25a6573f
commit
8456bd2c0f
1 changed files with 11 additions and 1 deletions
|
@ -548,8 +548,18 @@ static int mkv_write_codecprivate(AVFormatContext *s, AVIOContext *pb, AVCodecCo
|
||||||
if (qt_id) {
|
if (qt_id) {
|
||||||
if (!codec->codec_tag)
|
if (!codec->codec_tag)
|
||||||
codec->codec_tag = ff_codec_get_tag(ff_codec_movvideo_tags, codec->codec_id);
|
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);
|
avio_write(dyn_cp, codec->extradata, codec->extradata_size);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!ff_codec_get_tag(ff_codec_bmp_tags, codec->codec_id))
|
if (!ff_codec_get_tag(ff_codec_bmp_tags, codec->codec_id))
|
||||||
av_log(s, AV_LOG_WARNING, "codec %s is not supported by this format\n",
|
av_log(s, AV_LOG_WARNING, "codec %s is not supported by this format\n",
|
||||||
|
|
Loading…
Add table
Reference in a new issue