diff options
author | Hendrik Leppkes <h.leppkes@gmail.com> | 2014-04-01 17:59:42 +0400 |
---|---|---|
committer | Hendrik Leppkes <h.leppkes@gmail.com> | 2017-08-04 20:12:12 +0300 |
commit | 01313eebb642d21c8e2d4f6e86076eb9fc4a9f97 (patch) | |
tree | b660f14e5eaccfb46584f3fa255ff27de66f3a18 /libavformat | |
parent | 1f8541e60e1977718a91be08d93ea52f95e0f34c (diff) |
matroskadec_haali: support V_PRORES
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/matroskadec_haali.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/libavformat/matroskadec_haali.c b/libavformat/matroskadec_haali.c index b70168dce9..896aeb976f 100644 --- a/libavformat/matroskadec_haali.c +++ b/libavformat/matroskadec_haali.c @@ -1107,6 +1107,8 @@ static int mkv_read_header(AVFormatContext *s) fourcc = AV_RL32((uint8_t *)info->CodecPrivate); codec_id = ff_codec_get_id(ff_codec_movvideo_tags, fourcc); } + } else if (!strcmp(info->CodecID, "V_PRORES") && (info->CodecPrivateSize == 4) && (info->CodecPrivate != NULL)) { + fourcc = AV_RL32((uint8_t *)info->CodecPrivate); } else if (codec_id == AV_CODEC_ID_PCM_S16BE) { switch (info->AV.Audio.BitDepth) { case 8: codec_id = AV_CODEC_ID_PCM_U8; break; @@ -1554,6 +1556,15 @@ again: memset(dvbdata+dvbsize, 0, FF_INPUT_BUFFER_PADDING_SIZE); av_buffer_unref(&pkt->buf); av_packet_from_data(pkt, dvbdata, dvbsize); + } else if (!strcmp(track->info->CodecID, "V_PRORES")) { + int size = pkt->size + 8; + uint8_t *buf = av_malloc(size + FF_INPUT_BUFFER_PADDING_SIZE); + AV_WB32(buf, pkt->size); + AV_WB32(buf + 4, MKBETAG('i', 'c', 'p', 'f')); + memcpy(buf + 8, pkt->data, pkt->size); + memset(buf+size, 0, FF_INPUT_BUFFER_PADDING_SIZE); + av_buffer_unref(&pkt->buf); + av_packet_from_data(pkt, buf, size); } if (track->refresh_extradata) { |