[FFmpeg-cvslog] mov: handle h263 and flv1 for codec_tag 'H', '2', '6', '3'

Janne Grunau git at videolan.org
Thu Dec 20 12:12:02 CET 2012


ffmpeg | branch: master | Janne Grunau <janne-libav at jannau.net> | Wed Dec 19 10:31:12 2012 +0100| [bb2bab92e737394a5b91df650fab7f3992c8af59] | committer: Janne Grunau

mov: handle h263 and flv1 for codec_tag 'H','2','6','3'

The sample in https://bugzilla.libav.org/show_bug.cgi?id=393 and
samples/F4V/H263_NM_f.mp4 both have codec_tag H263 for different
codecs. H263 is apparently used by Flash Media Server for Sorensen
Spark videos.

Patch based on commit 5442083b1c541dd166b3adf39131259fc846a62b by
Carl Eugen Hoyos. Fixes bug 393.

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

 libavformat/isom.c |    2 +-
 libavformat/mov.c  |    4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/libavformat/isom.c b/libavformat/isom.c
index 1294a1d..ccf4ca1 100644
--- a/libavformat/isom.c
+++ b/libavformat/isom.c
@@ -211,7 +211,7 @@ const AVCodecTag ff_codec_movvideo_tags[] = {
 
     { AV_CODEC_ID_DIRAC,     MKTAG('d', 'r', 'a', 'c') },
     { AV_CODEC_ID_DNXHD,     MKTAG('A', 'V', 'd', 'n') }, /* AVID DNxHD */
-    { AV_CODEC_ID_FLV1,      MKTAG('H', '2', '6', '3') }, /* Flash Media Server */
+    { AV_CODEC_ID_H263,      MKTAG('H', '2', '6', '3') },
     { AV_CODEC_ID_MSMPEG4V3, MKTAG('3', 'I', 'V', 'D') }, /* 3ivx DivX Doctor */
     { AV_CODEC_ID_RAWVIDEO,  MKTAG('A', 'V', '1', 'x') }, /* AVID 1:1x */
     { AV_CODEC_ID_RAWVIDEO,  MKTAG('A', 'V', 'u', 'p') },
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 8503a7e..d5a75c4 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -1171,6 +1171,10 @@ int ff_mov_read_stsd_entries(MOVContext *c, AVIOContext *pb, int entries)
             /* codec_tag YV12 triggers an UV swap in rawdec.c */
             if (!memcmp(st->codec->codec_name, "Planar Y'CbCr 8-bit 4:2:0", 25))
                 st->codec->codec_tag=MKTAG('I', '4', '2', '0');
+            /* Flash Media Server uses tag H263 with Sorenson Spark */
+            if (format == MKTAG('H','2','6','3') &&
+                !memcmp(st->codec->codec_name, "Sorenson H263", 13))
+                st->codec->codec_id = AV_CODEC_ID_FLV1;
 
             st->codec->bits_per_coded_sample = avio_rb16(pb); /* depth */
             color_table_id = avio_rb16(pb); /* colortable id */



More information about the ffmpeg-cvslog mailing list