[FFmpeg-cvslog] Only insert the icpf atom in ProRes mkv packets if it isn' t already present.

Carl Eugen Hoyos git at videolan.org
Thu Apr 17 19:11:24 CEST 2014


ffmpeg | branch: master | Carl Eugen Hoyos <cehoyos at ag.or.at> | Thu Apr 17 14:46:11 2014 +0200| [6c18200c2f6c19891c7173ae85ac7e9babbe03f3] | committer: Carl Eugen Hoyos

Only insert the icpf atom in ProRes mkv packets if it isn't already present.

The patch allows to read broken mkv files containing ProRes as written by
the Haali muxer.
Fixes a part of ticket #3434.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=6c18200c2f6c19891c7173ae85ac7e9babbe03f3
---

 libavformat/matroskadec.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index 6976da8..66268fd 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -2545,7 +2545,8 @@ static int matroska_parse_frame(MatroskaDemuxContext *matroska,
         pkt_data = wv_data;
     }
 
-    if (st->codec->codec_id == AV_CODEC_ID_PRORES)
+    if (st->codec->codec_id == AV_CODEC_ID_PRORES &&
+        AV_RB32(&data[4]) != MKBETAG('i', 'c', 'p', 'f'))
         offset = 8;
 
     pkt = av_mallocz(sizeof(AVPacket));
@@ -2556,7 +2557,7 @@ static int matroska_parse_frame(MatroskaDemuxContext *matroska,
         goto fail;
     }
 
-    if (st->codec->codec_id == AV_CODEC_ID_PRORES) {
+    if (st->codec->codec_id == AV_CODEC_ID_PRORES && offset == 8) {
         uint8_t *buf = pkt->data;
         bytestream_put_be32(&buf, pkt_size);
         bytestream_put_be32(&buf, MKBETAG('i', 'c', 'p', 'f'));



More information about the ffmpeg-cvslog mailing list