From 3d5c859fa6dcca9c6b37f90a5dac148c01ab4758 Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Sun, 6 Apr 2014 20:54:48 +0200 Subject: [PATCH] Set Matroska private data when muxing Prores. The specification requires the mov code point to be written as "fourcc". --- libavformat/matroskadec.c | 2 ++ libavformat/matroskaenc.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 4390b6bb99..6976da8620 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -1914,6 +1914,8 @@ static int matroska_read_header(AVFormatContext *s) st->codec->block_align = track->audio.sub_packet_size; extradata_offset = 78; } + } else if (codec_id == AV_CODEC_ID_PRORES && track->codec_priv.size == 4) { + fourcc = AV_RL32(track->codec_priv.data); } track->codec_priv.size -= extradata_offset; diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 7d83665f94..529ab2a2b6 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -544,6 +544,9 @@ static int mkv_write_codecprivate(AVFormatContext *s, AVIOContext *pb, AVCodecCo } else avio_write(dyn_cp, codec->extradata + 12, codec->extradata_size - 12); + } else if (codec->codec_id == AV_CODEC_ID_PRORES && + ff_codec_get_id(ff_codec_movvideo_tags, codec->codec_tag) == AV_CODEC_ID_PRORES) { + avio_wl32(dyn_cp, codec->codec_tag); } else if (codec->extradata_size && codec->codec_id != AV_CODEC_ID_TTA) avio_write(dyn_cp, codec->extradata, codec->extradata_size);