[FFmpeg-cvslog] Force correct extradata for AVID AVCI50 in mov.

Carl Eugen Hoyos git at videolan.org
Tue Jul 9 13:25:40 CEST 2013


ffmpeg | branch: master | Carl Eugen Hoyos <cehoyos at ag.or.at> | Tue Jul  9 10:19:21 2013 +0200| [9a1ec1f2f223b19f5ce574c3683ac6827fe93633] | committer: Carl Eugen Hoyos

Force correct extradata for AVID AVCI50 in mov.

Fixes ticket #2106.

Reviewed-by: Kieran Kunhya

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

 libavformat/mov.c |   18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index 99c396e..9c6ad99 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -1014,6 +1014,22 @@ static int mov_read_avid(MOVContext *c, AVIOContext *pb, MOVAtom atom)
     return mov_read_extradata(c, pb, atom, AV_CODEC_ID_AVUI);
 }
 
+static int mov_read_ares(MOVContext *c, AVIOContext *pb, MOVAtom atom)
+{
+    AVCodecContext *codec = c->fc->streams[c->fc->nb_streams-1]->codec;
+    if (codec->codec_tag == MKTAG('A', 'V', 'i', 'n') &&
+        codec->codec_id == AV_CODEC_ID_H264 &&
+        atom.size > 11) {
+        avio_skip(pb, 10);
+        /* For AVID AVCI50, force width of 1440 to be able to select the correct SPS and PPS */
+        if (avio_rb16(pb) == 0xd4d)
+            codec->width = 1440;
+        return 0;
+    }
+
+    return mov_read_avid(c, pb, atom);
+}
+
 static int mov_read_svq3(MOVContext *c, AVIOContext *pb, MOVAtom atom)
 {
     return mov_read_extradata(c, pb, atom, AV_CODEC_ID_SVQ3);
@@ -2801,7 +2817,7 @@ static const MOVParseTableEntry mov_default_parse_table[] = {
 { MKTAG('A','C','L','R'), mov_read_avid },
 { MKTAG('A','P','R','G'), mov_read_avid },
 { MKTAG('A','A','L','P'), mov_read_avid },
-{ MKTAG('A','R','E','S'), mov_read_avid },
+{ MKTAG('A','R','E','S'), mov_read_ares },
 { MKTAG('a','v','s','s'), mov_read_avss },
 { MKTAG('c','h','p','l'), mov_read_chpl },
 { MKTAG('c','o','6','4'), mov_read_stco },



More information about the ffmpeg-cvslog mailing list