mp4 codecs objecttype handling patch by (Baptiste COUDURIER <baptiste.coudurier smartjog com)

Originally committed as revision 4982 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Baptiste Coudurier 2006-02-11 18:27:57 +00:00 committed by Michael Niedermayer
parent f29f3b5d9f
commit e60b4ced1f
3 changed files with 39 additions and 20 deletions

View File

@ -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 @@ static int mov_read_esds(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
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) {

7
libavformat/mov.h Normal file
View File

@ -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 */

View File

@ -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 @@ static int mov_write_esds_tag(ByteIOContext *pb, MOVTrack* track);
/* 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)
{