From 15fa856b82ea7dbbf69edc1074eb13dd00b0fa84 Mon Sep 17 00:00:00 2001 From: Jean First Date: Sun, 26 Jan 2014 01:31:53 +0100 Subject: libfdk-aacenc: Enable 7.1 channel encoding MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 7.1(wide) and 7.1(wide-side) channel layouts are supported in fdk-aac since the 0.1.3 release. The earlier versions of fdk-aac didn't include any library version defines in the public headers, thus checking for the AACENCODER_LIB_VL0 define is enough to know that we're building against a new enough version of fdk-aac. This change includes contributions by Tim Walker, Michael Niedermayer and Timothy Gu. Signed-off-by: Martin Storsjö --- libavcodec/libfdk-aacenc.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'libavcodec/libfdk-aacenc.c') diff --git a/libavcodec/libfdk-aacenc.c b/libavcodec/libfdk-aacenc.c index 48271692c4..0cd7e94e3f 100644 --- a/libavcodec/libfdk-aacenc.c +++ b/libavcodec/libfdk-aacenc.c @@ -151,6 +151,20 @@ static av_cold int aac_encode_init(AVCodecContext *avctx) case 4: mode = MODE_1_2_1; sce = 2; cpe = 1; break; case 5: mode = MODE_1_2_2; sce = 1; cpe = 2; break; case 6: mode = MODE_1_2_2_1; sce = 2; cpe = 2; break; +/* The version macro is introduced the same time as the 7.1 support, so this + should suffice. */ +#ifdef AACENCODER_LIB_VL0 + case 8: + sce = 2; + cpe = 3; + if (avctx->channel_layout == AV_CH_LAYOUT_7POINT1) { + mode = MODE_7_1_REAR_SURROUND; + } else { + // MODE_1_2_2_2_1 and MODE_7_1_FRONT_CENTER use the same channel layout + mode = MODE_7_1_FRONT_CENTER; + } + break; +#endif default: av_log(avctx, AV_LOG_ERROR, "Unsupported number of channels %d\n", avctx->channels); @@ -386,6 +400,10 @@ static const uint64_t aac_channel_layout[] = { AV_CH_LAYOUT_4POINT0, AV_CH_LAYOUT_5POINT0_BACK, AV_CH_LAYOUT_5POINT1_BACK, +#ifdef AACENCODER_LIB_VL0 + AV_CH_LAYOUT_7POINT1_WIDE_BACK, + AV_CH_LAYOUT_7POINT1, +#endif 0, }; -- cgit v1.2.3