Browse Source

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

Originally committed as revision 4982 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Baptiste Coudurier Michael Niedermayer 19 years ago
parent
commit
e60b4ced1f
3 changed files with 39 additions and 20 deletions
  1. +31
    -0
      libavformat/mov.c
  2. +7
    -0
      libavformat/mov.h
  3. +1
    -20
      libavformat/movenc.c

+ 31
- 0
libavformat/mov.c 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
- 0
libavformat/mov.h 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 */

+ 1
- 20
libavformat/movenc.c 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)
{


Loading…
Cancel
Save