parse mpeg4audio config to correctly detect mp3on4, fix iso mp3on4 reference files
Originally committed as revision 12961 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
69b1c62756
commit
1dec399449
@ -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)
|
|||||||
#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)
|
|||||||
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user