summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorBaptiste Coudurier <baptiste.coudurier@gmail.com>2008-04-25 14:09:42 +0000
committerBaptiste Coudurier <baptiste.coudurier@gmail.com>2008-04-25 14:09:42 +0000
commit45a97d301871e467d8cc01847a41357beb30065c (patch)
tree78617df783e88e32ce3e44be026498a0d7433ef3 /libavformat
parent4afaffca9ece5a6c781b8f37dc1a2b47962ddefd (diff)
set channels and sample rate from mpeg4audio config
Originally committed as revision 12964 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/mov.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 90294bf21e..64bb890076 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -28,6 +28,7 @@
#include "isom.h"
#include "dv.h"
#include "mpeg4audio.h"
+#include "mpegaudiodata.h"
#ifdef CONFIG_ZLIB
#include <zlib.h>
@@ -407,6 +408,17 @@ static int mov_read_esds(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
MPEG4AudioConfig cfg;
ff_mpeg4audio_get_config(&cfg, st->codec->extradata,
st->codec->extradata_size);
+ if (!cfg.chan_config || cfg.chan_config > 7)
+ return -1;
+ st->codec->channels = ff_mpeg4audio_channels[cfg.chan_config];
+ if (cfg.object_type == 29 && cfg.sampling_index < 3) // old mp3on4
+ st->codec->sample_rate = ff_mpa_freq_tab[cfg.sampling_index];
+ else
+ st->codec->sample_rate = cfg.sample_rate; // ext sample rate ?
+ dprintf(c->fc, "mp4a config channels %d obj %d ext obj %d "
+ "sample rate %d ext sample rate %d\n", st->codec->channels,
+ cfg.object_type, cfg.ext_object_type,
+ cfg.sample_rate, cfg.ext_sample_rate);
if (!(st->codec->codec_id = codec_get_id(mp4_audio_types,
cfg.object_type)))
st->codec->codec_id = CODEC_ID_AAC;
@@ -1296,13 +1308,9 @@ static int mov_read_trak(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
st->codec->width= 0; /* let decoder init width/height */
st->codec->height= 0;
break;
-#ifdef CONFIG_LIBFAAD
- case CODEC_ID_AAC:
-#endif
#ifdef CONFIG_VORBIS_DECODER
case CODEC_ID_VORBIS:
#endif
- case CODEC_ID_MP3ON4:
st->codec->sample_rate= 0; /* let decoder init parameters properly */
break;
}