Commit c374685c authored by bcoudurier's avatar bcoudurier

parse mpeg4audio config to correctly detect mp3on4, fix iso mp3on4 reference files

git-svn-id: file:///var/local/repositories/ffmpeg/trunk@12961 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent 11f79726
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "riff.h" #include "riff.h"
#include "isom.h" #include "isom.h"
#include "dv.h" #include "dv.h"
#include "mpeg4audio.h"
#ifdef CONFIG_ZLIB #ifdef CONFIG_ZLIB
#include <zlib.h> #include <zlib.h>
...@@ -361,6 +362,14 @@ static int mp4_read_descr(MOVContext *c, ByteIOContext *pb, int *tag) ...@@ -361,6 +362,14 @@ static int mp4_read_descr(MOVContext *c, ByteIOContext *pb, int *tag)
#define MP4DecConfigDescrTag 0x04 #define MP4DecConfigDescrTag 0x04
#define MP4DecSpecificDescrTag 0x05 #define MP4DecSpecificDescrTag 0x05
static const AVCodecTag mp4_audio_types[] = {
{ CODEC_ID_MP3ON4, 29 }, /* old mp3on4 draft */
{ CODEC_ID_MP3ON4, 32 }, /* layer 1 */
{ CODEC_ID_MP3ON4, 33 }, /* layer 2 */
{ CODEC_ID_MP3ON4, 34 }, /* layer 3 */
{ CODEC_ID_NONE, 0 },
};
static int mov_read_esds(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom) static int mov_read_esds(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
{ {
AVStream *st = c->fc->streams[c->fc->nb_streams-1]; AVStream *st = c->fc->streams[c->fc->nb_streams-1];
...@@ -394,9 +403,13 @@ static int mov_read_esds(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom) ...@@ -394,9 +403,13 @@ static int mov_read_esds(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
get_buffer(pb, st->codec->extradata, len); get_buffer(pb, st->codec->extradata, len);
st->codec->extradata_size = len; st->codec->extradata_size = len;
/* from mplayer */ if (st->codec->codec_id == CODEC_ID_AAC) {
if ((*st->codec->extradata >> 3) == 29) { MPEG4AudioConfig cfg;
st->codec->codec_id = CODEC_ID_MP3ON4; ff_mpeg4audio_get_config(&cfg, st->codec->extradata,
st->codec->extradata_size);
if (!(st->codec->codec_id = codec_get_id(mp4_audio_types,
cfg.object_type)))
st->codec->codec_id = CODEC_ID_AAC;
} }
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment