For enabling VBR, the general consensus seems to be to use the
qscale flag. There doesn't seem to be any consistent way to
indicate the actual desired quality though. Both libfaac and
libmp3lame calculate avctx->global_quality / FF_QP2LAMBDA and set
that as the libraries' VBR quality parameters, with wildly different
results. On libmp3lame, the VBR quality parameter is between 0 (best)
and 10 (worst), while the scale goes in the opposite direction for
libfaac, where higher quality values gives you better quality.

Therefore, for now, I just pass the actual value of
avctx->global_quality through. You can set it to values between 1
and 5:
1 - about 32 kbps/channel
2 - about 40 kbps/channel
3 - about 48-56 kbps/channel
4 - about 64 kbps/channel
5 - about 80-96 kbps/channel
---

Added a sensible default for the bitrate, depending on the
sample rate, SBR/PS configuration and channel types, as
suggested by Justin and Alex.

 Changelog                  |    1 +
 configure                  |    5 +
 doc/general.texi           |   12 +-
 libavcodec/Makefile        |    1 +
 libavcodec/allcodecs.c     |    1 +
 libavcodec/libfdk-aacenc.c |  383 ++++++++++++++++++++++++++++++++++++++++++++
 6 files changed, 401 insertions(+), 2 deletions(-)
 create mode 100644 libavcodec/libfdk-aacenc.c

diff --git a/Changelog b/Changelog
index 2fb5e3d..c56740c 100644
--- a/Changelog
+++ b/Changelog
@@ -33,6 +33,7 @@ version <next>:
 - Microsoft ATC Screen decoder
 - RTSP listen mode
 - TechSmith Screen Codec 2 decoder
+- AAC encoding via libfdk-aac
 
 
 version 0.8:
diff --git a/configure b/configure
index 4d83d4b..397be73 100755
--- a/configure
+++ b/configure
@@ -170,6 +170,7 @@ External library support:
   --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394
                            and libraw1394 [no]
   --enable-libfaac         enable FAAC support via libfaac [no]
+  --enable-libfdk-aac      enable AAC support via libfdk-aac [no]
   --enable-libfreetype     enable libfreetype [no]
   --enable-libgsm          enable GSM support via libgsm [no]
   --enable-libilbc         enable iLBC de/encoding via libilbc [no]
@@ -943,6 +944,7 @@ CONFIG_LIST="
     libcdio
     libdc1394
     libfaac
+    libfdk_aac
     libfreetype
     libgsm
     libilbc
@@ -1448,6 +1450,7 @@ h264_parser_select="golomb h264dsp h264pred"
 
 # external libraries
 libfaac_encoder_deps="libfaac"
+libfdk_aac_encoder_deps="libfdk_aac"
 libgsm_decoder_deps="libgsm"
 libgsm_encoder_deps="libgsm"
 libgsm_ms_decoder_deps="libgsm"
@@ -2968,6 +2971,7 @@ enabled avisynth   && require2 vfw32 "windows.h vfw.h" 
AVIFileInit -lavifil32
 enabled frei0r     && { check_header frei0r.h || die "ERROR: frei0r.h header 
not found"; }
 enabled gnutls     && require_pkg_config gnutls gnutls/gnutls.h 
gnutls_global_init
 enabled libfaac    && require2 libfaac "stdint.h faac.h" faacEncGetVersion 
-lfaac
+enabled libfdk_aac && require  libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen 
-lfdk-aac
 enabled libfreetype && require_pkg_config freetype2 "ft2build.h 
freetype/freetype.h" FT_Init_FreeType
 enabled libgsm     && require  libgsm gsm/gsm.h gsm_create -lgsm
 enabled libilbc    && require  libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc
@@ -3259,6 +3263,7 @@ echo "gnutls enabled            ${gnutls-no}"
 echo "libcdio support           ${libcdio-no}"
 echo "libdc1394 support         ${libdc1394-no}"
 echo "libfaac enabled           ${libfaac-no}"
+echo "libfdk-aac enabled        ${libfdk_aac-no}"
 echo "libgsm enabled            ${libgsm-no}"
 echo "libilbc enabled           ${libilbc-no}"
 echo "libmp3lame enabled        ${libmp3lame-no}"
diff --git a/doc/general.texi b/doc/general.texi
index 7e9cfaf..fcac114 100644
--- a/doc/general.texi
+++ b/doc/general.texi
@@ -18,8 +18,8 @@ explicitly requested by passing the appropriate flags to
 
 @section OpenCORE and VisualOn libraries
 
-Spun off Google Android sources, OpenCore and VisualOn libraries provide
-encoders for a number of audio codecs.
+Spun off Google Android sources, OpenCore, VisualOn and Fraunhofer
+libraries provide encoders for a number of audio codecs.
 
 @float NOTE
 OpenCORE and VisualOn libraries are under the Apache License 2.0
@@ -55,6 +55,14 @@ Go to @url{http://sourceforge.net/projects/opencore-amr/} 
and follow the
 instructions for installing the library.
 Then pass @code{--enable-libvo-amrwbenc} to configure to enable it.
 
+@subsection Fraunhofer AAC library
+
+Libav can make use of the Fraunhofer AAC library for AAC encoding.
+
+Go to @url{http://sourceforge.net/projects/opencore-amr/} and follow the
+instructions for installing the library.
+Then pass @code{--enable-libfdk-aac} to configure to enable it.
+
 @section LAME
 
 Libav can make use of the LAME library for MP3 encoding.
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index ac97d34..8d38ca2 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -595,6 +595,7 @@ OBJS-$(CONFIG_WTV_DEMUXER)             += mpeg4audio.o 
mpegaudiodata.o
 
 # external codec libraries
 OBJS-$(CONFIG_LIBFAAC_ENCODER)            += libfaac.o audio_frame_queue.o
+OBJS-$(CONFIG_LIBFDK_AAC_ENCODER)         += libfdk-aacenc.o 
audio_frame_queue.o
 OBJS-$(CONFIG_LIBGSM_DECODER)             += libgsm.o
 OBJS-$(CONFIG_LIBGSM_ENCODER)             += libgsm.o
 OBJS-$(CONFIG_LIBGSM_MS_DECODER)          += libgsm.o
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
index 068f191..bd48728 100644
--- a/libavcodec/allcodecs.c
+++ b/libavcodec/allcodecs.c
@@ -380,6 +380,7 @@ void avcodec_register_all(void)
 
     /* external libraries */
     REGISTER_ENCODER (LIBFAAC, libfaac);
+    REGISTER_ENCODER (LIBFDK_AAC, libfdk_aac);
     REGISTER_ENCDEC  (LIBGSM, libgsm);
     REGISTER_ENCDEC  (LIBGSM_MS, libgsm_ms);
     REGISTER_ENCDEC  (LIBILBC, libilbc);
diff --git a/libavcodec/libfdk-aacenc.c b/libavcodec/libfdk-aacenc.c
new file mode 100644
index 0000000..eec1e04
--- /dev/null
+++ b/libavcodec/libfdk-aacenc.c
@@ -0,0 +1,383 @@
+/*
+ * AAC encoder wrapper
+ * Copyright (c) 2012 Martin Storsjo
+ *
+ * This file is part of Libav.
+ *
+ * Libav is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * Libav is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Libav; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <fdk-aac/aacenc_lib.h>
+
+#include "avcodec.h"
+#include "audio_frame_queue.h"
+#include "internal.h"
+#include "libavutil/opt.h"
+
+typedef struct AACContext {
+    const AVClass *class;
+    HANDLE_AACENCODER handle;
+    int afterburner;
+    int eld_sbr;
+    int signaling;
+
+    AudioFrameQueue afq;
+} AACContext;
+
+static const AVOption aac_enc_options[] = {
+    { "afterburner", "Afterburner (improved quality)", offsetof(AACContext, 
afterburner), AV_OPT_TYPE_INT, { 1 }, 0, 1, AV_OPT_FLAG_AUDIO_PARAM | 
AV_OPT_FLAG_ENCODING_PARAM },
+    { "eld_sbr", "Enable SBR for ELD (for SBR in other configurations, use the 
-profile parameter)", offsetof(AACContext, eld_sbr), AV_OPT_TYPE_INT, { 0 }, 0, 
1, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM },
+    { "signaling", "SBR/PS signaling style", offsetof(AACContext, signaling), 
AV_OPT_TYPE_INT, { -1 }, -1, 2, AV_OPT_FLAG_AUDIO_PARAM | 
AV_OPT_FLAG_ENCODING_PARAM, "signaling" },
+    { "default", "Choose signaling implicitly (explicit hierarchical by 
default, implicit if global header is disabled)", 0, AV_OPT_TYPE_CONST, { -1 }, 
0, 0, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM, "signaling" },
+    { "implicit", "Implicit backwards compatible signaling", 0, 
AV_OPT_TYPE_CONST, { 0 }, 0, 0, AV_OPT_FLAG_AUDIO_PARAM | 
AV_OPT_FLAG_ENCODING_PARAM, "signaling" },
+    { "explicit_sbr", "Explicit SBR, implicit PS signaling", 0, 
AV_OPT_TYPE_CONST, { 1 }, 0, 0, AV_OPT_FLAG_AUDIO_PARAM | 
AV_OPT_FLAG_ENCODING_PARAM, "signaling" },
+    { "explicit_hierarchical", "Explicit hierarchical signaling", 0, 
AV_OPT_TYPE_CONST, { 2 }, 0, 0, AV_OPT_FLAG_AUDIO_PARAM | 
AV_OPT_FLAG_ENCODING_PARAM, "signaling" },
+    { NULL }
+};
+
+static const AVClass aac_enc_class = {
+    "libfdk_aac", av_default_item_name, aac_enc_options, LIBAVUTIL_VERSION_INT
+};
+
+static const char *aac_get_error(AACENC_ERROR err)
+{
+    switch (err) {
+    case AACENC_OK:
+        return "No error";
+    case AACENC_INVALID_HANDLE:
+        return "Invalid handle";
+    case AACENC_MEMORY_ERROR:
+        return "Memory allocation error";
+    case AACENC_UNSUPPORTED_PARAMETER:
+        return "Unsupported parameter";
+    case AACENC_INVALID_CONFIG:
+        return "Invalid config";
+    case AACENC_INIT_ERROR:
+        return "Initialization error";
+    case AACENC_INIT_AAC_ERROR:
+        return "AAC library initialization error";
+    case AACENC_INIT_SBR_ERROR:
+        return "SBR library initialization error";
+    case AACENC_INIT_TP_ERROR:
+        return "Transport library initialization error";
+    case AACENC_INIT_META_ERROR:
+        return "Metadata library initialization error";
+    case AACENC_ENCODE_ERROR:
+        return "Encoding error";
+    case AACENC_ENCODE_EOF:
+        return "End of file";
+    default:
+        return "Unknown error";
+    }
+}
+
+static int aac_encode_close(AVCodecContext *avctx)
+{
+    AACContext *s = avctx->priv_data;
+
+    if (s->handle)
+        aacEncClose(&s->handle);
+#if FF_API_OLD_ENCODE_AUDIO
+    av_freep(&avctx->coded_frame);
+#endif
+    av_freep(&avctx->extradata);
+    ff_af_queue_close(&s->afq);
+
+    return 0;
+}
+
+static av_cold int aac_encode_init(AVCodecContext *avctx)
+{
+    AACContext *s = avctx->priv_data;
+    int ret = AVERROR(EINVAL);
+    AACENC_InfoStruct info = { 0 };
+    CHANNEL_MODE mode;
+    AACENC_ERROR err;
+    int aot = FF_PROFILE_AAC_LOW + 1;
+    int sce = 0, cpe = 0;
+
+    if ((err = aacEncOpen(&s->handle, 0, avctx->channels)) != AACENC_OK) {
+        av_log(avctx, AV_LOG_ERROR, "Unable to open the encoder: %s\n",
+               aac_get_error(err));
+        goto error;
+    }
+
+    if (avctx->profile != FF_PROFILE_UNKNOWN)
+        aot = avctx->profile + 1;
+
+    if ((err = aacEncoder_SetParam(s->handle, AACENC_AOT, aot)) != AACENC_OK) {
+        av_log(avctx, AV_LOG_ERROR, "Unable to set the AOT %d: %s\n",
+               aot, aac_get_error(err));
+        goto error;
+    }
+
+    if (aot == FF_PROFILE_AAC_ELD + 1 && s->eld_sbr) {
+        if ((err = aacEncoder_SetParam(s->handle, AACENC_SBR_MODE,
+                                       1)) != AACENC_OK) {
+            av_log(avctx, AV_LOG_ERROR, "Unable to enable SBR for ELD: %s\n",
+                   aac_get_error(err));
+            goto error;
+        }
+    }
+
+    if ((err = aacEncoder_SetParam(s->handle, AACENC_SAMPLERATE,
+                                   avctx->sample_rate)) != AACENC_OK) {
+        av_log(avctx, AV_LOG_ERROR, "Unable to set the sample rate %d: %s\n",
+               avctx->sample_rate, aac_get_error(err));
+        goto error;
+    }
+
+    switch (avctx->channels) {
+    case 1: mode = MODE_1;       sce = 1; cpe = 0; break;
+    case 2: mode = MODE_2;       sce = 0; cpe = 1; break;
+    case 3: mode = MODE_1_2;     sce = 1; cpe = 1; break;
+    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;
+    default:
+        av_log(avctx, AV_LOG_ERROR,
+               "Unsupported number of channels %d\n", avctx->channels);
+        goto error;
+    }
+
+    if ((err = aacEncoder_SetParam(s->handle, AACENC_CHANNELMODE,
+                                   mode)) != AACENC_OK) {
+        av_log(avctx, AV_LOG_ERROR,
+               "Unable to set channel mode %d: %s\n", mode, 
aac_get_error(err));
+        goto error;
+    }
+
+    if ((err = aacEncoder_SetParam(s->handle, AACENC_CHANNELORDER,
+                                   1)) != AACENC_OK) {
+        av_log(avctx, AV_LOG_ERROR,
+               "Unable to set wav channel order %d: %s\n",
+               mode, aac_get_error(err));
+        goto error;
+    }
+
+    if (avctx->flags & CODEC_FLAG_QSCALE) {
+        int mode = avctx->global_quality;
+        if (mode <  1 || mode > 5) {
+            av_log(avctx, AV_LOG_WARNING,
+                   "VBR quality %d out of range, should be 1-5\n", mode);
+            mode = av_clip(mode, 1, 5);
+        }
+        if ((err = aacEncoder_SetParam(s->handle, AACENC_BITRATEMODE,
+                                       mode)) != AACENC_OK) {
+            av_log(avctx, AV_LOG_ERROR, "Unable to set the VBR bitrate mode 
%d: %s\n",
+                   mode, aac_get_error(err));
+            goto error;
+        }
+    } else {
+        if (avctx->bit_rate <= 0) {
+            if (avctx->profile == FF_PROFILE_AAC_HE_V2) {
+                sce = 1;
+                cpe = 0;
+            }
+            avctx->bit_rate = (96*sce + 128*cpe) * avctx->sample_rate / 44;
+            if (avctx->profile == FF_PROFILE_AAC_HE ||
+                avctx->profile == FF_PROFILE_AAC_HE_V2 ||
+                s->eld_sbr)
+                avctx->bit_rate /= 2;
+        }
+        if ((err = aacEncoder_SetParam(s->handle, AACENC_BITRATE,
+                                       avctx->bit_rate)) != AACENC_OK) {
+            av_log(avctx, AV_LOG_ERROR, "Unable to set the bitrate %d: %s\n",
+                   avctx->bit_rate, aac_get_error(err));
+            goto error;
+        }
+    }
+
+    /* Choose bitstream format - if global header is requested, use
+     * raw access units, otherwise use ADTS. */
+    if ((err = aacEncoder_SetParam(s->handle, AACENC_TRANSMUX,
+                                   avctx->flags & CODEC_FLAG_GLOBAL_HEADER ? 0 
: 2)) != AACENC_OK) {
+        av_log(avctx, AV_LOG_ERROR, "Unable to set the transmux format: %s\n",
+               aac_get_error(err));
+        goto error;
+    }
+
+    /* If no signaling mode is chosen, use explicit hierarchical signaling
+     * if using mp4 mode (raw access units, with global header) and
+     * implicit signaling if using ADTS. */
+    if (s->signaling < 0)
+        s->signaling = avctx->flags & CODEC_FLAG_GLOBAL_HEADER ? 2 : 0;
+
+    if ((err = aacEncoder_SetParam(s->handle, AACENC_SIGNALING_MODE,
+                                   s->signaling)) != AACENC_OK) {
+        av_log(avctx, AV_LOG_ERROR, "Unable to set signaling mode %d: %s\n",
+               s->signaling, aac_get_error(err));
+        goto error;
+    }
+
+    if ((err = aacEncoder_SetParam(s->handle, AACENC_AFTERBURNER,
+                                   s->afterburner)) != AACENC_OK) {
+        av_log(avctx, AV_LOG_ERROR, "Unable to set afterburner to %d: %s\n",
+               s->afterburner, aac_get_error(err));
+        goto error;
+    }
+
+    if ((err = aacEncEncode(s->handle, NULL, NULL, NULL, NULL)) != AACENC_OK) {
+        av_log(avctx, AV_LOG_ERROR, "Unable to initialize the encoder: %s\n",
+               aac_get_error(err));
+        return AVERROR(EINVAL);
+    }
+
+    if ((err = aacEncInfo(s->handle, &info)) != AACENC_OK) {
+        av_log(avctx, AV_LOG_ERROR, "Unable to get encoder info: %s\n",
+               aac_get_error(err));
+        goto error;
+    }
+
+#if FF_API_OLD_ENCODE_AUDIO
+    avctx->coded_frame = avcodec_alloc_frame();
+    if (!avctx->coded_frame) {
+        ret = AVERROR(ENOMEM);
+        goto error;
+    }
+#endif
+    avctx->frame_size = info.frameLength;
+    avctx->delay      = info.encoderDelay;
+    ff_af_queue_init(avctx, &s->afq);
+
+    if (avctx->flags & CODEC_FLAG_GLOBAL_HEADER) {
+        avctx->extradata_size = info.confSize;
+        avctx->extradata      = av_mallocz(avctx->extradata_size +
+                                           FF_INPUT_BUFFER_PADDING_SIZE);
+        if (!avctx->extradata) {
+            ret = AVERROR(ENOMEM);
+            goto error;
+        }
+
+        memcpy(avctx->extradata, info.confBuf, info.confSize);
+    }
+    return 0;
+error:
+    aac_encode_close(avctx);
+    return ret;
+}
+
+static int aac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
+                            const AVFrame *frame, int *got_packet_ptr)
+{
+    AACContext    *s        = avctx->priv_data;
+    AACENC_BufDesc in_buf   = { 0 }, out_buf = { 0 };
+    AACENC_InArgs  in_args  = { 0 };
+    AACENC_OutArgs out_args = { 0 };
+    int in_buffer_identifier = IN_AUDIO_DATA;
+    int in_buffer_size, in_buffer_element_size;
+    int out_buffer_identifier = OUT_BITSTREAM_DATA;
+    int out_buffer_size, out_buffer_element_size;
+    void *in_ptr, *out_ptr;
+    int ret;
+    AACENC_ERROR err;
+
+    /* handle end-of-stream small frame and flushing */
+    if (!frame) {
+        in_args.numInSamples = -1;
+    } else {
+        in_ptr                 = frame->data[0];
+        in_buffer_size         = 2 * avctx->channels * frame->nb_samples;
+        in_buffer_element_size = 2;
+
+        in_args.numInSamples     = avctx->channels * frame->nb_samples;
+        in_buf.numBufs           = 1;
+        in_buf.bufs              = &in_ptr;
+        in_buf.bufferIdentifiers = &in_buffer_identifier;
+        in_buf.bufSizes          = &in_buffer_size;
+        in_buf.bufElSizes        = &in_buffer_element_size;
+
+        /* add current frame to the queue */
+        if ((ret = ff_af_queue_add(&s->afq, frame) < 0))
+            return ret;
+    }
+
+    /* The maximum packet size is 6144 bits aka 768 bytes per channel. */
+    if ((ret = ff_alloc_packet(avpkt, FFMAX(8192, 768 * avctx->channels)))) {
+        av_log(avctx, AV_LOG_ERROR, "Error getting output packet\n");
+        return ret;
+    }
+
+    out_ptr                   = avpkt->data;
+    out_buffer_size           = avpkt->size;
+    out_buffer_element_size   = 1;
+    out_buf.numBufs           = 1;
+    out_buf.bufs              = &out_ptr;
+    out_buf.bufferIdentifiers = &out_buffer_identifier;
+    out_buf.bufSizes          = &out_buffer_size;
+    out_buf.bufElSizes        = &out_buffer_element_size;
+
+    if ((err = aacEncEncode(s->handle, &in_buf, &out_buf, &in_args,
+                            &out_args)) != AACENC_OK) {
+        if (!frame && err == AACENC_ENCODE_EOF)
+            return 0;
+        av_log(avctx, AV_LOG_ERROR, "Unable to encode frame: %s\n",
+               aac_get_error(err));
+        return AVERROR(EINVAL);
+    }
+
+    if (!out_args.numOutBytes)
+        return 0;
+
+    /* Get the next frame pts & duration */
+    ff_af_queue_remove(&s->afq, avctx->frame_size, &avpkt->pts,
+                       &avpkt->duration);
+
+    avpkt->size     = out_args.numOutBytes;
+    *got_packet_ptr = 1;
+    return 0;
+}
+
+static const AVProfile profiles[] = {
+    { FF_PROFILE_AAC_LOW,   "LC"       },
+    { FF_PROFILE_AAC_HE,    "HE-AAC"   },
+    { FF_PROFILE_AAC_HE_V2, "HE-AACv2" },
+    { FF_PROFILE_AAC_LD,    "LD"       },
+    { FF_PROFILE_AAC_ELD,   "ELD"      },
+    { FF_PROFILE_UNKNOWN },
+};
+
+static const AVCodecDefault aac_encode_defaults[] = {
+    { "b", "0" },
+    { NULL }
+};
+
+static const uint64_t aac_channel_layout[] = {
+    AV_CH_LAYOUT_MONO,
+    AV_CH_LAYOUT_STEREO,
+    AV_CH_LAYOUT_SURROUND,
+    AV_CH_LAYOUT_4POINT0,
+    AV_CH_LAYOUT_5POINT0_BACK,
+    AV_CH_LAYOUT_5POINT1_BACK,
+    0,
+};
+
+AVCodec ff_libfdk_aac_encoder = {
+    .name            = "libfdk_aac",
+    .type            = AVMEDIA_TYPE_AUDIO,
+    .id              = CODEC_ID_AAC,
+    .priv_data_size  = sizeof(AACContext),
+    .init            = aac_encode_init,
+    .encode2         = aac_encode_frame,
+    .close           = aac_encode_close,
+    .capabilities    = CODEC_CAP_SMALL_LAST_FRAME | CODEC_CAP_DELAY,
+    .sample_fmts     = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_S16,
+                                                      AV_SAMPLE_FMT_NONE },
+    .long_name       = NULL_IF_CONFIG_SMALL("Fraunhofer FDK AAC"),
+    .priv_class      = &aac_enc_class,
+    .defaults        = aac_encode_defaults,
+    .profiles        = profiles,
+    .channel_layouts = aac_channel_layout,
+};
-- 
1.7.9.4

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to