Mercurial > libavformat.hg
changeset 943:4e7a66723f1d libavformat
mp4 codecs objecttype handling patch by (Baptiste COUDURIER <baptiste.coudurier smartjog com)
author | michael |
---|---|
date | Sat, 11 Feb 2006 18:27:57 +0000 |
parents | 0b4d844727ff |
children | 7082e2e7a3cd |
files | mov.c mov.h movenc.c |
diffstat | 3 files changed, 39 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/mov.c Sat Feb 11 17:44:06 2006 +0000 +++ b/mov.c Sat Feb 11 18:27:57 2006 +0000 @@ -21,6 +21,7 @@ #include "avformat.h" #include "avi.h" +#include "mov.h" #ifdef CONFIG_ZLIB #include <zlib.h> @@ -82,6 +83,35 @@ /* getting rid of these */ #define CODEC_TYPE_MOV_OTHER (enum CodecType) 2 +/* http://gpac.sourceforge.net/tutorial/mediatypes.htm */ +const CodecTag ff_mov_obj_type[] = { + { CODEC_ID_MPEG4 , 32 }, + { CODEC_ID_H264 , 33 }, + { CODEC_ID_AAC , 64 }, + { CODEC_ID_MPEG2VIDEO, 96 }, /* MPEG2 Simple */ + { CODEC_ID_MPEG2VIDEO, 97 }, /* MPEG2 Main */ + { CODEC_ID_MPEG2VIDEO, 98 }, /* MPEG2 SNR */ + { CODEC_ID_MPEG2VIDEO, 99 }, /* MPEG2 Spatial */ + { CODEC_ID_MPEG2VIDEO, 100 }, /* MPEG2 High */ + { CODEC_ID_MPEG2VIDEO, 101 }, /* MPEG2 422 */ + { CODEC_ID_AAC , 102 }, /* MPEG2 AAC Main */ + { CODEC_ID_AAC , 103 }, /* MPEG2 AAC Low */ + { CODEC_ID_AAC , 104 }, /* MPEG2 AAC SSR */ + { CODEC_ID_MP3 , 105 }, + { CODEC_ID_MPEG1VIDEO, 106 }, + { CODEC_ID_MP2 , 107 }, + { CODEC_ID_MJPEG , 108 }, + { CODEC_ID_PCM_S16LE , 224 }, + { CODEC_ID_VORBIS , 225 }, + { CODEC_ID_AC3 , 226 }, + { CODEC_ID_PCM_ALAW , 227 }, + { CODEC_ID_PCM_MULAW , 228 }, + { CODEC_ID_PCM_S16BE , 230 }, + { CODEC_ID_H263 , 242 }, + { CODEC_ID_H261 , 243 }, + { 0, 0 }, +}; + static const CodecTag mov_video_tags[] = { /* { CODEC_ID_, MKTAG('c', 'v', 'i', 'd') }, *//* Cinepak */ /* { CODEC_ID_H263, MKTAG('r', 'a', 'w', ' ') }, *//* Uncompressed RGB */ @@ -656,6 +686,7 @@ sc->esds.max_bitrate = get_be32(pb); sc->esds.avg_bitrate = get_be32(pb); + st->codec->codec_id= codec_get_id(ff_mov_obj_type, sc->esds.object_type_id); len = mov_mp4_read_descr(pb, &tag); //av_log(NULL, AV_LOG_DEBUG, "LEN %d TAG %d m:%d a:%d\n", len, tag, sc->esds.max_bitrate, sc->esds.avg_bitrate); if (tag == MP4DecSpecificDescrTag) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mov.h Sat Feb 11 18:27:57 2006 +0000 @@ -0,0 +1,7 @@ +#ifndef FFMPEG_MOV_H +#define FFMPEG_MOV_H + +/* mov.c */ +extern const CodecTag ff_mov_obj_type[]; + +#endif /* FFMPEG_MOV_H */
--- a/movenc.c Sat Feb 11 17:44:06 2006 +0000 +++ b/movenc.c Sat Feb 11 18:27:57 2006 +0000 @@ -20,6 +20,7 @@ #include "avformat.h" #include "avi.h" #include "avio.h" +#include "mov.h" #undef NDEBUG #include <assert.h> @@ -77,26 +78,6 @@ /* output language code from iso639 language name */ extern int ff_mov_iso639_to_lang(const char *lang, int mp4); -const CodecTag ff_mov_obj_type[] = { - { CODEC_ID_MPEG4 , 32 }, - { CODEC_ID_AAC , 64 }, - { CODEC_ID_MPEG1VIDEO, 106 }, - { CODEC_ID_MPEG2VIDEO, 96 },//mpeg2 profiles - { CODEC_ID_MP2 , 107 },//FIXME mpeg2 mpeg audio -> 105 - { CODEC_ID_MP3 , 107 },//FIXME mpeg2 mpeg audio -> 105 - { CODEC_ID_H264 , 33 }, - { CODEC_ID_H263 , 242 }, - { CODEC_ID_H261 , 243 }, - { CODEC_ID_MJPEG , 108 }, - { CODEC_ID_PCM_S16LE , 224 }, - { CODEC_ID_VORBIS , 225 }, - { CODEC_ID_AC3 , 226 }, - { CODEC_ID_PCM_ALAW , 227 }, - { CODEC_ID_PCM_MULAW , 228 }, - { CODEC_ID_PCM_S16BE , 230 }, - { 0,0 }, -}; - //FIXME supprt 64bit varaint with wide placeholders static offset_t updateSize (ByteIOContext *pb, offset_t pos) {