From 644f021ccf4b8cd8ffd12c2022e5333215c24aa8 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sun, 30 Dec 2012 04:55:14 +0100 Subject: aacdec: simplify dmono Signed-off-by: Michael Niedermayer --- libavcodec/aac.h | 3 +-- libavcodec/aacdec.c | 11 +++++------ 2 files changed, 6 insertions(+), 8 deletions(-) (limited to 'libavcodec') diff --git a/libavcodec/aac.h b/libavcodec/aac.h index 9ceccf8909..32fbbc48c3 100644 --- a/libavcodec/aac.h +++ b/libavcodec/aac.h @@ -309,8 +309,7 @@ typedef struct AACContext { * @name Japanese DTV specific extension * @{ */ - int enable_jp_dmono; ///< enable japanese DTV specific 'dual mono' - int dmono_mode; ///< select the channel to decode in dual mono. + int dmono_mode; ///< 0->not dmono, 1->use first channel, 2->use second channel /** @} */ DECLARE_ALIGNED(32, float, temp)[128]; diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c index 0454bd49f0..2a9d6954fb 100644 --- a/libavcodec/aacdec.c +++ b/libavcodec/aacdec.c @@ -2435,7 +2435,7 @@ static int parse_adts_frame_header(AACContext *ac, GetBitContext *gb) * WITHOUT specifying PCE. * thus, set dual mono as default. */ - if (ac->enable_jp_dmono && ac->oc[0].status == OC_NONE) { + if (ac->dmono_mode && ac->oc[0].status == OC_NONE) { layout_map_tags = 2; layout_map[0][0] = layout_map[1][0] = TYPE_SCE; layout_map[0][2] = layout_map[1][2] = AAC_CHANNEL_FRONT; @@ -2588,7 +2588,7 @@ static int aac_decode_frame_int(AVCodecContext *avctx, void *data, multiplier = (ac->oc[1].m4ac.sbr == 1) ? ac->oc[1].m4ac.ext_sample_rate > ac->oc[1].m4ac.sample_rate : 0; samples <<= multiplier; /* for dual-mono audio (SCE + SCE) */ - is_dmono = ac->enable_jp_dmono && sce_count == 2 && + is_dmono = ac->dmono_mode && sce_count == 2 && ac->oc[1].channel_layout == (AV_CH_FRONT_LEFT | AV_CH_FRONT_RIGHT); if (samples) { @@ -2598,9 +2598,9 @@ static int aac_decode_frame_int(AVCodecContext *avctx, void *data, *got_frame_ptr = !!samples; if (is_dmono) { - if (ac->dmono_mode == 0) + if (ac->dmono_mode == 1) ((AVFrame *)data)->data[1] =((AVFrame *)data)->data[0]; - else if (ac->dmono_mode == 1) + else if (ac->dmono_mode == 2) ((AVFrame *)data)->data[0] =((AVFrame *)data)->data[1]; } @@ -2658,10 +2658,9 @@ static int aac_decode_frame(AVCodecContext *avctx, void *data, } } - ac->enable_jp_dmono = !!jp_dualmono; ac->dmono_mode = 0; if (jp_dualmono && jp_dualmono_size > 0) - ac->dmono_mode = *jp_dualmono; + ac->dmono_mode = 1 + *jp_dualmono; init_get_bits(&gb, buf, buf_size * 8); -- cgit v1.2.3