From b61d2782f3f8e61942673e0d0f7a73783e49f005 Mon Sep 17 00:00:00 2001 From: Baptiste Coudurier Date: Sat, 26 Apr 2008 13:56:52 +0000 Subject: [PATCH] use mpeg4audio common code Originally committed as revision 12988 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/mpegaudiodec.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/libavcodec/mpegaudiodec.c b/libavcodec/mpegaudiodec.c index 5f5af5c0c9..7c4fce5654 100644 --- a/libavcodec/mpegaudiodec.c +++ b/libavcodec/mpegaudiodec.c @@ -2475,9 +2475,11 @@ static int decode_frame_adu(AVCodecContext * avctx, #endif /* CONFIG_MP3ADU_DECODER */ #ifdef CONFIG_MP3ON4_DECODER + +#include "mpeg4audio.h" + /* Next 3 arrays are indexed by channel config number (passed via codecdata) */ static const uint8_t mp3Frames[16] = {0,1,1,2,3,3,4,5,2}; /* number of mp3 decoder instances */ -static const uint8_t mp3Channels[16] = {0,1,2,3,4,5,6,8,4}; /* total output channels */ /* offsets into output buffer, assume output order is FL FR BL BR C LFE */ static const uint8_t chan_offset[9][5] = { {0}, @@ -2495,6 +2497,7 @@ static const uint8_t chan_offset[9][5] = { static int decode_init_mp3on4(AVCodecContext * avctx) { MP3On4DecodeContext *s = avctx->priv_data; + MPEG4AudioConfig cfg; int i; if ((avctx->extradata_size < 2) || (avctx->extradata == NULL)) { @@ -2502,13 +2505,14 @@ static int decode_init_mp3on4(AVCodecContext * avctx) return -1; } - s->chan_cfg = (((unsigned char *)avctx->extradata)[1] >> 3) & 0x0f; - s->frames = mp3Frames[s->chan_cfg]; - if(!s->frames) { + ff_mpeg4audio_get_config(&cfg, avctx->extradata, avctx->extradata_size); + if (!cfg.chan_config || cfg.chan_config > 7) { av_log(avctx, AV_LOG_ERROR, "Invalid channel config number.\n"); return -1; } - avctx->channels = mp3Channels[s->chan_cfg]; + s->chan_cfg = cfg.chan_config; + s->frames = mp3Frames[s->chan_cfg]; + avctx->channels = ff_mpeg4audio_channels[s->chan_cfg]; /* Init the first mp3 decoder in standard way, so that all tables get builded * We replace avctx->priv_data with the context of the first decoder so that