diff options
author | Janne Grunau <janne-libav@jannau.net> | 2012-12-19 10:31:12 +0100 |
---|---|---|
committer | Janne Grunau <janne-libav@jannau.net> | 2012-12-19 14:50:14 +0100 |
commit | bb2bab92e737394a5b91df650fab7f3992c8af59 (patch) | |
tree | 7b577e49832c288a21be5f81b3bccf3fa718d75d | |
parent | 1c8bf3bfed5ff5c504c8e3de96188a977f67cce0 (diff) | |
download | ffmpeg-bb2bab92e737394a5b91df650fab7f3992c8af59.tar.gz |
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.
-rw-r--r-- | libavformat/isom.c | 2 | ||||
-rw-r--r-- | libavformat/mov.c | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/libavformat/isom.c b/libavformat/isom.c index 1294a1d9a7..ccf4ca1e84 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 8503a7ebdd..d5a75c40eb 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 */ |