Aac Encoder
Aac Encoder
Aac Encoder
Library
Disclaimer
Information in this document is subject to change without notice. Companies, names, and data used in examples
herein are fictitious unless otherwise noted. Product and corporate names may be trademarks or registered trademarks
of other companies. They are used for explanation only, with no intent to infringe. All rights reserved. No part
of this publication may be reproduced or utilized in any form or by any means, electronic or mechanical, including
photocopying and microfilm, without permission in writing from the publisher.
1 Introduction 1
1.1 Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Encoder Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Library Usage 3
2.1 API Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Calling Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3 Encoder Instance Allocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.4 Input/Output Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4.1 Provide Buffer Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4.2 Provide Input/Output Argument Lists . . . . . . . . . . . . . . . . . . . . . . . . 5
2.5 Feed Input Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.6 Output Bitstream Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.7 Meta Data Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.8 Encoder Reconfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.9 Encoder Parametrization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.9.1 Mandatory Encoder Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.9.2 Channel Mode Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.9.3 Audio Quality Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.9.4 ELD Auto Configuration Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.10 Audio Channel Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.11 Supported Bitrates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.12 Recommended Sampling Rate and Bitrate Combinations . . . . . . . . . . . . . . . . . . 10
2.12.1 AAC-LC, HE-AAC, HE-AACv2 in Dualrate SBR mode. . . . . . . . . . . . . . . 10
2.12.2 AAC-LD, AAC-ELD, AAC-ELD with SBR in Dualrate SBR mode. . . . . . . . . 11
2.12.3 AAC-ELD with SBR in Downsampled SBR mode. . . . . . . . . . . . . . . . . . 11
3 Encoder Behaviour 13
3.1 Bandwidth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Frame Sizes & Bit Reservoir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2.1 Estimating Average Frame Sizes . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 Encoder Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4 Class Index 17
4.1 Class List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5 File Index 19
5.1 File List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6 Class Documentation 21
6.1 AACENC_BufDesc Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.1.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.1.2 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
ii CONTENTS
6.1.2.1 bufElSizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.1.2.2 bufferIdentifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.1.2.3 bufs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.1.2.4 bufSizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.1.2.5 numBufs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.2 AACENC_InArgs Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.2.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.2.2 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.2.2.1 numAncBytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.2.2.2 numInSamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.3 AACENC_InfoStruct Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.3.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.3.2 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.3.2.1 confBuf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.3.2.2 confSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.3.2.3 encoderDelay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.3.2.4 frameLength . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.3.2.5 inBufFillLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.3.2.6 inputChannels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.3.2.7 maxAncBytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.3.2.8 maxOutBufBytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.4 AACENC_MetaData Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.4.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.4.2 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.4.2.1 centerMixLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.4.2.2 comp_profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.4.2.3 comp_TargetRefLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.4.2.4 dolbySurroundMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.4.2.5 drc_profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.4.2.6 drc_TargetRefLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.4.2.7 ETSI_DmxLvl_present . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.4.2.8 PCE_mixdown_idx_present . . . . . . . . . . . . . . . . . . . . . . . . 25
6.4.2.9 prog_ref_level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.4.2.10 prog_ref_level_present . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.4.2.11 surroundMixLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.5 AACENC_OutArgs Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.5.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.5.2 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.5.2.1 numAncBytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.5.2.2 numInSamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.5.2.3 numOutBytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7 File Documentation 27
7.1 aacenc_lib.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
7.1.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
7.1.2 Typedef Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.1.2.1 HANDLE_AACENCODER . . . . . . . . . . . . . . . . . . . . . . . 30
7.1.3 Enumeration Type Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.1.3.1 AACENC_BufferIdentifier . . . . . . . . . . . . . . . . . . . . . . . . 30
7.1.3.2 AACENC_CTRLFLAGS . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.1.3.3 AACENC_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.1.3.4 AACENC_METADATA_DRC_PROFILE . . . . . . . . . . . . . . . . 31
7.1.3.5 AACENC_PARAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
7.1.4 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
CONTENTS iii
7.1.4.1 aacEncClose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
7.1.4.2 aacEncEncode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
7.1.4.3 aacEncGetLibInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.1.4.4 aacEncInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.1.4.5 aacEncoder_GetParam . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.1.4.6 aacEncoder_SetParam . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.1.4.7 aacEncOpen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Chapter 1
Introduction
1.1 Scope
This document describes the high-level interface and usage of the ISO/MPEG-2/4 AAC Encoder library
developed by the Fraunhofer Institute for Integrated Circuits (IIS).
The library implements encoding on the basis of the MPEG-2 and MPEG-4 AAC Low-Complexity stan-
dard, and depending on the library’s configuration, MPEG-4 High-Efficiency AAC v2 and/or AAC-ELD
standard.
All references to SBR (Spectral Band Replication) are only applicable to HE-AAC or AAC-ELD versions
of the library. All references to PS (Parametric Stereo) are only applicable to HE-AAC v2 versions of the
library.
• ISO/IEC 13818-7 (MPEG-2 AAC), which defines the syntax of MPEG-2 AAC audio bitstreams.
• ISO/IEC 14496-3 (MPEG-4 AAC, subparts 1 and 4), which defines the syntax of MPEG-4 AAC
audio bitstreams.
• Lutzky, Schuller, Gayer, Krämer, Wabnik, "A guideline to audio codec delay", 116th AES Conven-
tion, May 8, 2004
MPEG Advanced Audio Coding is based on a time-to-frequency mapping of the signal. The signal is
partitioned into overlapping portions and transformed into frequency domain. The spectral components are
then quantized and coded.
An MPEG-2 or MPEG-4 AAC audio bitstream is composed of frames. Contrary to MPEG-1/2 Layer-3
(mp3), the length of individual frames is not restricted to a fixed number of bytes, but can take on any
length between 1 and 768 bytes.
2 Introduction
Chapter 2
Library Usage
2. Call aacEncoder_SetParam() for each parameter to be set. AOT, samplingrate, channelMode, bitrate
and transport type are mandatory.
3. Call aacEncEncode() with NULL parameters to initialize encoder instance with present parameter
set.
4. Call aacEncInfo() to retrieve a configuration data block to be transmitted out of band. This is required
when using RFC3640 or RFC3016 like transport.
4 Library Usage
Feed input buffer with new audio data and provide input/output arguments to aacEncEncode().
• If the amount of memory consumption is not an issue, the encoder instance can be allocated for the
maximum number of possible audio channels (for example 6 or 8) with the full functional range
supported by the library. This is the default open procedure for the AAC encoder if memory con-
sumption does not need to be minimized.
aacEncOpen(&hAacEncoder,0,0)
• If the required MPEG-4 AOTs do not call for the full functional range of the library, encoder modules
can be allocated selectively.
------------------------------------------------------
AAC | SBR | PS | MD | FLAGS | value
-----+-----+-----+----+-----------------------+-------
X | - | - | - | (0x01) | 0x01
X | X | - | - | (0x01|0x02) | 0x03
X | X | X | - | (0x01|0x02|0x04) | 0x07
X | - | - | X | (0x01 |0x10) | 0x11
X | X | - | X | (0x01|0x02 |0x10) | 0x13
X | X | X | X | (0x01|0x02|0x04|0x10) | 0x17
------------------------------------------------------
- AAC: Allocate AAC Core Encoder module.
- SBR: Allocate Spectral Band Replication module.
- PS: Allocate Parametric Stereo module.
- MD: Allocate Meta Data module within AAC encoder.
aacEncOpen(&hAacEncoder,value,0)
• Specifying the maximum number of channels to be supported in the encoder instance can be done as
follows.
– For example allocate an encoder instance which supports 2 channels for all supported AOTs.
The library itself may be capable of encoding up to 6 or 8 channels but in this example only
2 channel encoding is required and thus only buffers for 2 channels are allocated to save data
memory.
aacEncOpen(&hAacEncoder,0,2)
2.4 Input/Output Arguments 5
– Additionally the maximum number of supported channels in the SBR module can be denoted
separately.
In this example the encoder instance provides a maximum of 6 channels out of which up to 2
channels support SBR. This encoder instance can produce for example 5.1 channel AAC-LC
streams or stereo HE-AAC (v2) streams. HE-AAC 5.1 multi channel is not possible since only
2 out of 6 channels support SBR, which saves data memory.
aacEncOpen(&hAacEncoder,0,6|(2<<8))
In the present encoder API, the input and output buffers are described with buffer descriptors. This mech-
anism allows a flexible handling of input and output buffers without impact to the actual encoding call.
Optional buffers are necessary e.g. for ancillary data, meta data input or additional output buffers describ-
ing superframing data in DAB+ or DRM+.
At least one input buffer for audio input data and one output buffer for bitstream data must be allocated.
The input buffer size can be a user defined multiple of the number of input channels. PCM input data
will be copied from the user defined PCM buffer to an internal input buffer and so input data can be less
than one AAC audio frame. The output buffer size should be 6144 bits per channel excluding the LFE
channel. If the output data does not fit into the provided buffer, an AACENC_ERROR will be returned by
aacEncEncode().
All input and output buffer must be clustered in input and output buffer arrays.
The input and output arguments of an aacEncEncode() call are described in argument structures.
6 Library Usage
After the encoder’s internal buffer is fed with incoming audio samples, and aacEncEncode() processed the
new input data, update/move remaining samples in input buffer, simulating a modulo buffer:
If you use file I/O then for example call mpegFileWrite_Write() from the library libMpegFileWrite
aacEncoder_SetParam(hAacEncoder, AACENC_METADATA_MODE
, 0-2);
This configuration indicates how to embed meta data into bitstrem. Either no insertion, MPEG or ETSI
style. The meta data itself must be specified within the meta data setup structure AACENC_MetaData.
Changing one of the AACENC_MetaData setup parameters can be achieved from outside the library within
IN_METADATA_SETUP input buffer. There is no need to supply meta data setup structure every frame.
If there is no new meta setup data available, the encoder uses the previous setup or the default configuration
in initial state.
In general the audio compressor and limiter within the encoder library can be configured with the AACEN-
C_METADATA_DRC_PROFILE parameter AACENC_MetaData::drc_profile and and AACENC_Meta-
Data::comp_profile.
2.8 Encoder Reconfiguration 7
aacEncoder_SetParam(hAacEncoder, AACENC_CONTROL_STATE
, AACENC_CTRLFLAGS);
The following parameters must be specified when the encoder instance is initialized.
Beyond that is an internal auto mode which preinitizializes the AACENC_BITRATE parameter if the
parameter was not set from extern. The bitrate depends on the number of effective channels and sampling
rate and is determined as follows.
The input audio data is described with the AACENC_CHANNELMODE parameter in the aacEncoder_-
SetParam() call. It is not possible to use the encoder instance with a ’number of input channels’ argument.
Instead, the channelMode must be set as follows.
aacEncoder_SetParam(hAacEncoder, AACENC_CHANNELMODE
, value);
The parameter is specified in ::CHANNEL_MODE and can be mapped from the number of input channels
in the following way.
8 Library Usage
The default encoder configuration is suggested to be used. Encoder tools such as TNS and PNS are activated
by default and are internally controlled (see Encoder Tools).
There is an additional quality parameter called AACENC_AFTERBURNER. In the default configuration
this quality switch is deactivated because it would cause a workload increase which might be significant.
If workload is not an issue in the application we recommended to activate this feature.
aacEncoder_SetParam(hAacEncoder, AACENC_AFTERBURNER
, 1);
For ELD configuration a so called auto configurator is available which configures SBR and the SBR ratio
by itself. The configurator is used when the encoder parameter AACENC_SBR_MODE and AACENC_-
SBR_RATIO are not set explicitely.
Based on sampling rate and chosen bitrate per channel a reasonable SBR configuration will be used.
------------------------------------------------------------
Sampling Rate | Channel Bitrate | SBR | SBR Ratio
-----------------+-----------------+------+-----------------
]min, 16] kHz | min - 27999 | on | downsampled SBR
| 28000 - max | off | ---
-----------------+-----------------+------+-----------------
]16 - 24] kHz | min - 39999 | on | downsampled SBR
| 40000 - max | off | ---
-----------------+-----------------+------+-----------------
]24 - 32] kHz | min - 27999 | on | dualrate SBR
| 28000 - 55999 | on | downsampled SBR
| 56000 - max | off | ---
-----------------+-----------------+------+-----------------
]32 - 44.1] kHz | min - 63999 | on | dualrate SBR
| 64000 - max | off | ---
-----------------+-----------------+------+-----------------
]44.1 - 48] kHz | min - 63999 | on | dualrate SBR
| 64000 - max | off | ---
------------------------------------------------------------
-------------------------------------------------------------------------------
ChannelMode | ChCfg | front_El | side_El | back_El | lfe_El
-----------------------+--------+---------------+----------+----------+--------
MODE_1 | 1 | SCE | | |
MODE_2 | 2 | CPE | | |
MODE_1_2 | 3 | SCE, CPE | | |
MODE_1_2_1 | 4 | SCE, CPE | | SCE |
MODE_1_2_2 | 5 | SCE, CPE | | CPE |
MODE_1_2_2_1 | 6 | SCE, CPE | | CPE | LFE
MODE_1_2_2_2_1 | 7 | SCE, CPE, CPE | | CPE | LFE
2.11 Supported Bitrates 9
-----------------------+--------+---------------+----------+----------+--------
MODE_7_1_REAR_SURROUND | 0 | SCE, CPE | | CPE, CPE | LFE
MODE_7_1_FRONT_CENTER | 0 | SCE, CPE, CPE | | CPE | LFE
-------------------------------------------------------------------------------
- SCE: Single Channel Element.
- CPE: Channel Pair.
- SCE: Low Frequency Element.
Moreover, the Table describes all fixed Channel Elements for each Channel Mode which are assigned to a
speaker arrangement. The arrangement includes front, side, back and lfe Audio Channel Elements.
This mapping of Audio Channel Elements is defined in MPEG standard for Channel Config 1-7. The
Channel assignment for MODE_1_1, MODE_2_2 and MODE_2_1 is used from the ARIB standard. All
other configurations are defined as suggested in MPEG.
In case of Channel Config 0 or writing matrix mixdown coefficients, the encoder enables the writing of
Program Config Element itself as described in encPCE. The configuration used in Program Config Element
refers to the denoted Table.
Beside the Channel Element assignment the Channel Modes are resposible for audio input data channel
mapping. The Channel Mapping of the audio data depends on the selected AACENC_CHANNELORDER
which can be MPEG or WAV like order.
Following Table describes the complete channel mapping for both Channel Order configurations.
---------------------------------------------------------------------------------------
ChannelMode | MPEG-Channelorder | WAV-Channelorder
-----------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---
MODE_1 | 0 | | | | | | | | 0 | | | | | | |
MODE_2 | 0 | 1 | | | | | | | 0 | 1 | | | | | |
MODE_1_2 | 0 | 1 | 2 | | | | | | 2 | 0 | 1 | | | | |
MODE_1_2_1 | 0 | 1 | 2 | 3 | | | | | 2 | 0 | 1 | 3 | | | |
MODE_1_2_2 | 0 | 1 | 2 | 3 | 4 | | | | 2 | 0 | 1 | 3 | 4 | | |
MODE_1_2_2_1 | 0 | 1 | 2 | 3 | 4 | 5 | | | 2 | 0 | 1 | 4 | 5 | 3 | |
MODE_1_2_2_2_1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 2 | 6 | 7 | 0 | 1 | 4 | 5 | 3
-----------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---
MODE_7_1_REAR_SURROUND | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 2 | 0 | 1 | 6 | 7 | 4 | 5 | 3
MODE_7_1_FRONT_CENTER | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 2 | 6 | 7 | 0 | 1 | 4 | 5 | 3
---------------------------------------------------------------------------------------
The denoted mapping is important for correct audio channel assignment when using MPEG or WAV
ordering. The incoming audio channels are distributed MPEG like starting at the front channels and ending
at the back channels. The distribution is used as described in Table concering Channel Config and fix
channel elements. Please see the following example for clarification.
to write the most basic and minimal valid bitstream. It consists of the bitstream format header information
and other static/mandatory information within the AAC payload. The maximum AAC framesize allowed
by the MPEG-4 standard determines the maximum allowed bitrate for AAC-LC. For HE-AAC and HE-A-
AC v2 a library internal look-up table is used.
A good working point in terms of audio quality, sampling rate and bitrate, is at 1 to 1.5 bits/audio sample
for AAC-LC, 0.625 bits/audio sample for dualrate HE-AAC, 1.125 bits/audio sample for downsampled H-
E-AAC and 0.5 bits/audio sample for HE-AAC v2. For example for one channel with a sampling frequency
of 48 kHz, the range from 48 kbit/s to 72 kbit/s achieves reasonable audio quality for AAC-LC.
For HE-AAC and HE-AAC v2 the lowest possible audio input sampling frequency is 16 kHz because then
the AAC-LC core encoder operates in dual rate mode at its lowest possible sampling frequency, which is 8
kHz. HE-AAC v2 requires stereo input audio data.
Please note that in HE-AAC or HE-AAC v2 mode the encoder supports much higher bitrates than are
appropriate for HE-AAC or HE-AAC v2. For example, at a bitrate of more than 64 kbit/s for a stereo audio
signal at 44.1 kHz it usually makes sense to use AAC-LC, which will produce better audio quality at that
bitrate than HE-AAC or HE-AAC v2.
Encoder Behaviour
3.1 Bandwidth
The FDK AAC encoder usually does not use the full frequency range of the input signal, but restricts the
bandwidth according to certain library-internal settings. They can be changed in the table "bandWidth-
Table" in the file bandwidth.cpp (if available).
The encoder API provides the AACENC_BANDWIDTH parameter to adjust the bandwidth explicitly.
aacEncoder_SetParam(hAacEncoder, AACENC_BANDWIDTH
, value);
However it is not recommended to change these settings, because they are based on numerious listening
tests and careful tweaks to ensure the best overall encoding quality.
Theoretically a signal of for example 48 kHz can contain frequencies up to 24 kHz, but to use this full
range in an audio encoder usually does not make sense. Usually the encoder has a very limited amount
of bits to spend (typically 128 kbit/s for stereo 48 kHz content) and to allow full range bandwidth would
waste a lot of these bits for frequencies the human ear is hardly able to perceive anyway, if at all. Hence
it is wise to use the available bits for the really important frequency range and just skip the rest. At lower
bitrates (e. g. <= 80 kbit/s for stereo 48 kHz content) the encoder will choose an even smaller bandwidth,
because an encoded signal with smaller bandwidth and hence less artifacts sounds better than a signal with
higher bandwidth but then more coding artefacts across all frequencies. These artefacts would occur if
small bitrates and high bandwidths are chosen because the available bits are just not enough to encode all
frequencies well.
Unfortunately some people evaluate encoding quality based on possible bandwidth as well, but it is a
two-sided sword considering the trade-off described above.
Another aspect is workload consumption. The higher the allowed bandwidth, the more frequency lines
have to be processed, which in turn increases the workload.
delay real time streaming. Over a longer period in time the bitrate will be constant in the AAC constant
bitrate mode, e.g. for ISDN transmission. This means that in AAC each bitstream frame will in general
have a different length in bytes but over time it will reach the target bitrate. One could also make an MPEG
compliant AAC encoder which always produces constant length packages for each AAC frame, but the
audio quality would be considerably worse since the bit reservoir technique would have to be switched off
completely. A higher bit rate would have to be used to get the same audio quality as with an enabled bit
reservoir.
The maximum AAC frame length, regardless of the available bit reservoir, is defined as 6144 bits per
channel.
For mp3 by the way, the same bit reservoir technique exists, but there each bit stream frame has a constant
length for a given bit rate (ignoring the padding byte). In mp3 there is a so-called "back pointer" which
tells the decoder which bits belong to the current mp3 frame - and in general some or many bits have been
transmitted in an earlier mp3 frame. Basically this leads to the same "bit exchange between mp3 frames"
as in AAC but with virtually constant length frames.
This variable frame length at "constant bit rate" is not something special in this Fraunhofer IIS AAC
encoder. AAC has been designed in that way.
A HE-AAC v1 or v2 audio frame contains 2048 PCM samples per channel (there is also one mode with
1920 samples per channel but this is only for special purposes such as DAB+ digital radio).
The number of HE-AAC frames N _F RAM ES per second at 44.1 kHz is:
At a bit rate of 8 kbps the average number of bits per frame N _BIT S_P ER_F RAM E is:
other bitrates. This is done automatically inside the encoder library. PNS is disabled inside the encoder
library if an MPEG-2 AOT is choosen since PNS is an MPEG-4 AAC feature.
If SBR is activated, the encoder automatically deactivates PNS internally. If TNS is disabled but PNS is
allowed, the encoder deactivates PNS calculation internally.
16 Encoder Behaviour
Chapter 4
Class Index
File Index
Class Documentation
#include <aacenc_lib.h>
Public Attributes
• INT numBufs
• void ∗∗ bufs
• INT ∗ bufferIdentifiers
• INT ∗ bufSizes
• INT ∗ bufElSizes
Number of buffers.
The documentation for this struct was generated from the following file:
• aacenc_lib.h
#include <aacenc_lib.h>
Public Attributes
• INT numInSamples
• INT numAncBytes
• aacenc_lib.h
#include <aacenc_lib.h>
6.3 AACENC_InfoStruct Struct Reference 23
Public Attributes
• UINT maxOutBufBytes
• UINT maxAncBytes
• UINT inBufFillLevel
• UINT inputChannels
• UINT frameLength
• UINT encoderDelay
• UCHAR confBuf [64]
• UINT confSize
Codec delay in PCM samples/channel. Depends on framelength and AOT. Does not include framing delay
for filling up encoder PCM input buffer.
Amount of input audio samples consumed each frame per channel, depending on audio object type config-
uration.
Internal input buffer fill level in samples per channel. This parameter will automatically be cleared if
samplingrate or channel(Mode/Order) changes.
Maximum number of ancillary data bytes which can be inserted into bitstream within one frame.
24 Class Documentation
Maximum number of encoder bitstream bytes within one frame. Size depends on maximum number of
supported channels in encoder instance. For superframing (as used for example in DAB+), size has to be a
multiple accordingly.
The documentation for this struct was generated from the following file:
• aacenc_lib.h
Public Attributes
• AACENC_METADATA_DRC_PROFILE drc_profile
• AACENC_METADATA_DRC_PROFILE comp_profile
• INT drc_TargetRefLevel
• INT comp_TargetRefLevel
• INT prog_ref_level_present
• INT prog_ref_level
• UCHAR PCE_mixdown_idx_present
• UCHAR ETSI_DmxLvl_present
• SCHAR centerMixLevel
• SCHAR surroundMixLevel
• UCHAR dolbySurroundMode
Used to define expected level to: Scaled with 16 bit. x∗2∧ 16.
Programme Reference Level = Dialogue Level: -31.75dB .. 0 dB ; stepsize: 0.25dB Scaled with 16 bit.
x∗2∧ 16.
• aacenc_lib.h
Public Attributes
• INT numOutBytes
• INT numInSamples
• INT numAncBytes
• aacenc_lib.h
Chapter 7
File Documentation
aacenc_lib.h
machine_type.h FDK_audio.h
Classes
• struct AACENC_InfoStruct
• struct AACENC_BufDesc
• struct AACENC_InArgs
• struct AACENC_OutArgs
• struct AACENC_MetaData
Typedefs
Enumerations
• enum AACENC_ERROR {
AACENC_OK = 0x0000,
AACENC_INVALID_HANDLE = 0x0020,
AACENC_MEMORY_ERROR = 0x0021,
AACENC_UNSUPPORTED_PARAMETER = 0x0022,
AACENC_INVALID_CONFIG = 0x0023,
AACENC_INIT_ERROR = 0x0040,
AACENC_INIT_AAC_ERROR = 0x0041,
AACENC_INIT_SBR_ERROR = 0x0042,
AACENC_INIT_TP_ERROR = 0x0043,
AACENC_INIT_META_ERROR = 0x0044,
AACENC_ENCODE_ERROR = 0x0060,
AACENC_ENCODE_EOF = 0x0080 }
• enum AACENC_BufferIdentifier {
IN_AUDIO_DATA = 0,
IN_ANCILLRY_DATA = 1,
IN_METADATA_SETUP = 2,
OUT_BITSTREAM_DATA = 3,
OUT_AU_SIZES = 4 }
• enum AACENC_METADATA_DRC_PROFILE {
AACENC_METADATA_DRC_NONE = 0,
AACENC_METADATA_DRC_FILMSTANDARD = 1,
AACENC_METADATA_DRC_FILMLIGHT = 2,
AACENC_METADATA_DRC_MUSICSTANDARD = 3,
AACENC_METADATA_DRC_MUSICLIGHT = 4,
AACENC_METADATA_DRC_SPEECH = 5 }
• enum AACENC_CTRLFLAGS {
AACENC_INIT_NONE = 0x0000,
AACENC_INIT_CONFIG = 0x0001,
AACENC_INIT_STATES = 0x0002,
AACENC_INIT_TRANSPORT = 0x1000,
AACENC_RESET_INBUFFER = 0x2000,
AACENC_INIT_ALL = 0xFFFF }
• enum AACENC_PARAM {
7.1 aacenc_lib.h File Reference 29
AACENC_AOT = 0x0100,
AACENC_BITRATE = 0x0101,
AACENC_BITRATEMODE = 0x0102,
AACENC_SAMPLERATE = 0x0103,
AACENC_SBR_MODE = 0x0104,
AACENC_GRANULE_LENGTH = 0x0105,
AACENC_CHANNELMODE = 0x0106,
AACENC_CHANNELORDER = 0x0107,
AACENC_SBR_RATIO = 0x0108,
AACENC_AFTERBURNER = 0x0200,
AACENC_BANDWIDTH = 0x0203,
AACENC_PEAK_BITRATE = 0x0207,
AACENC_TRANSMUX = 0x0300,
AACENC_HEADER_PERIOD = 0x0301,
AACENC_SIGNALING_MODE = 0x0302,
AACENC_TPSUBFRAMES = 0x0303,
AACENC_AUDIOMUXVER = 0x0304,
AACENC_PROTECTION = 0x0306,
AACENC_ANCILLARY_BITRATE = 0x0500,
AACENC_METADATA_MODE = 0x0600,
AACENC_CONTROL_STATE = 0xFF00,
AACENC_NONE = 0xFFFF }
AAC encoder setting parameters.
Functions
• AACENC_ERROR aacEncOpen (HANDLE_AACENCODER ∗phAacEncoder, const UINT enc-
Modules, const UINT maxChannels)
Open an instance of the encoder.
• AACENC_ERROR aacEncClose (HANDLE_AACENCODER ∗phAacEncoder)
Close the encoder instance.
• AACENC_ERROR aacEncEncode (const HANDLE_AACENCODER hAacEncoder, const AACE-
NC_BufDesc ∗inBufDesc, const AACENC_BufDesc ∗outBufDesc, const AACENC_InArgs ∗inargs,
AACENC_OutArgs ∗outargs)
Encode audio data.
• AACENC_ERROR aacEncInfo (const HANDLE_AACENCODER hAacEncoder, AACENC_Info-
Struct ∗pInfo)
Acquire info about present encoder instance.
• AACENC_ERROR aacEncoder_SetParam (const HANDLE_AACENCODER hAacEncoder, const
AACENC_PARAM param, const UINT value)
Set one single AAC encoder parameter.
• UINT aacEncoder_GetParam (const HANDLE_AACENCODER hAacEncoder, const AACENC_-
PARAM param)
Get one single AAC encoder parameter.
• AACENC_ERROR aacEncGetLibInfo (LIB_INFO ∗info)
Get information about encoder library build.
AAC encoder buffer descriptors identifier. This identifier are used within buffer descriptors AACENC_-
BufDesc::bufferIdentifiers.
Enumerator:
IN_AUDIO_DATA Audio input buffer, interleaved INT_PCM samples.
IN_ANCILLRY_DATA Ancillary data to be embedded into bitstream.
IN_METADATA_SETUP Setup structure for embedding meta data.
OUT_BITSTREAM_DATA Buffer holds bitstream output data.
OUT_AU_SIZES Buffer contains sizes of each access unit. This information is necessary for super-
framing.
Enumerator:
AACENC_INIT_NONE Do not trigger initialization.
AACENC_INIT_CONFIG Initialize all encoder modules configuration.
AACENC_INIT_STATES Reset all encoder modules history buffer.
AACENC_INIT_TRANSPORT Initialize transport lib with new parameters.
AACENC_RESET_INBUFFER Reset fill level of internal input buffer.
AACENC_INIT_ALL Initialize all.
Enumerator:
AACENC_OK No error happened. All fine.
AACENC_INVALID_HANDLE Handle passed to function call was invalid.
AACENC_MEMORY_ERROR Memory allocation failed.
AACENC_UNSUPPORTED_PARAMETER Parameter not available.
7.1 aacenc_lib.h File Reference 31
Enumerator:
AACENC_METADATA_DRC_NONE None.
AACENC_METADATA_DRC_FILMSTANDARD Film standard.
AACENC_METADATA_DRC_FILMLIGHT Film light.
AACENC_METADATA_DRC_MUSICSTANDARD Music standard.
AACENC_METADATA_DRC_MUSICLIGHT Music light.
AACENC_METADATA_DRC_SPEECH Speech.
Enumerator:
AACENC_AOT Audio object type. See ::AUDIO_OBJECT_TYPE in FDK_audio.h.
• 2: MPEG-4 AAC Low Complexity.
• 5: MPEG-4 AAC Low Complexity with Spectral Band Replication (HE-AAC).
• 29: MPEG-4 AAC Low Complexity with Spectral Band Replication and Parametric Stereo
(HE-AAC v2). This configuration can be used only with stereo input audio data.
• 23: MPEG-4 AAC Low-Delay.
• 39: MPEG-4 AAC Enhanced Low-Delay. Since there is no ::AUDIO_OBJECT_TYPE for
ELD in combination with SBR defined, enable SBR explicitely by AACENC_SBR_MODE
parameter.
AACENC_BITRATE Total encoder bitrate. This parameter is mandatory and interacts with AACE-
NC_BITRATEMODE.
• CBR: Bitrate in bits/second. See Supported Bitrates for details.
AACENC_BITRATEMODE Bitrate mode. Configuration can be different kind of bitrate configurations-
:
32 File Documentation
AAC-LC only will then only decode the AAC part, which means the decoded audio will
sound band-limited.
For MPEG-2 transport types (ADTS,ADIF), only implicit signaling is possible.
For LOAS and LATM, explicit backwards compatible signaling only works together with
AudioMuxVersion==1. The reason is that, for explicit backwards compatible signaling, ad-
ditional information will be appended to the ASC. A decoder that is only capable of decod-
ing AAC-LC will skip this part. Nevertheless, for jumping to the end of the ASC, it needs
to know the ASC length. Transmitting the length of the ASC is a feature of AudioMux-
Version==1, it is not possible to transmit the length of the ASC with AudioMuxVersion==0,
therefore an AAC-LC-only decoder will not be able to parse a LOAS/LATM stream that
was being encoded with AudioMuxVersion==0.
For downsampled SBR, explicit signaling is mandatory. The reason for this is that the ex-
tension sampling frequency (which is in case of SBR the sampling frequqncy of the SBR
part) can only be signaled in explicit mode.
For AAC-ELD, the SBR information is transmitted in the ELDSpecific Config, which is part
of the AudioSpecificConfig. Therefore, the settings here will have no effect on AAC-ELD.
AACENC_TPSUBFRAMES Number of sub frames in a transport frame for LOAS/LATM or ADTS
(default 1).
• ADTS: Maximum number of sub frames restricted to 4.
• LOAS/LATM: Maximum number of sub frames restricted to 2.
AACENC_AUDIOMUXVER AudioMuxVersion to be used for LATM. (AudioMuxVersionA, cur-
rently not implemented):
• 0: Default, no transmission of tara Buffer fullness, no ASC length and including actual latm
Buffer fullnes.
• 1: Transmission of tara Buffer fullness, ASC length and actual latm Buffer fullness.
• 2: Transmission of tara Buffer fullness, ASC length and maximum level of latm Buffer
fullness.
AACENC_PROTECTION Configure protection in tranpsort layer:
• 0: No protection. (default)
• 1: CRC active for ADTS bitstream format.
AACENC_ANCILLARY_BITRATE Constant ancillary data bitrate in bits/second.
• 0: Either no ancillary data or insert exact number of bytes, denoted via input parameter,
numAncBytes in AACENC_InArgs.
• else: Insert ancillary data with specified bitrate.
AACENC_METADATA_MODE Configure Meta Data. See AACENC_MetaData for further details-
:
• 0: Do not embed any metadata.
• 1: Embed MPEG defined metadata only.
• 2: Embed all metadata.
AACENC_CONTROL_STATE There is an automatic process which internally reconfigures the en-
coder instance when a configuration parameter changed or an error occured. This paramerter
allows overwriting or getting the control status of this process. See AACENC_CTRLFLAGS.
AACENC_NONE
Parameters
phAacEncoder Pointer to the encoder handle to be deallocated.
Returns
• AACENC_OK, on success.
• AACENC_INVALID_HANDLE, on failure.
• PCM input data will be retrieved from external input buffer until the fill level allows encoding a
single frame. This functionality allows an external buffer with reduced size in comparison to the
AAC or HE-AAC audio frame length.
• If the value of the input samples argument is zero, just internal reinitialization will be applied if it is
requested.
• At the end of a file the flushing process can be triggerd via setting the value of the input samples
argument to -1. The encoder delay lines are fully flushed when the encoder returns no valid bitstream
data AACENC_OutArgs::numOutBytes. Furthermore the end of file is signaled by the return value
AACENC_ENCODE_EOF.
• If an error occured in the previous frame or any of the encoder parameters changed, an internal
reinitialization process will be applied before encoding the incoming audio samples.
• The function can also be used for an independent reconfiguration process without encoding. The first
parameter has to be a valid encoder handle and all other parameters can be set to NULL.
• If the size of the external bitbuffer in outBufDesc is not sufficient for writing the whole bitstream, an
internal error will be the return value and a reconfiguration will be triggered.
Parameters
hAacEncoder A valid AAC encoder handle.
inBufDesc Input buffer descriptor, see AACENC_BufDesc:
• At least one input buffer with audio data is expected.
• Optionally a second input buffer with ancillary data can be fed.
36 File Documentation
Returns
• AACENC_OK, on success.
• AACENC_INVALID_HANDLE, AACENC_ENCODE_ERROR, on failure in encoding pro-
cess.
• AACENC_INVALID_CONFIG, AACENC_INIT_ERROR, AACENC_INIT_AAC_ERROR, A-
ACENC_INIT_SBR_ERROR, AACENC_INIT_TP_ERROR, AACENC_INIT_META_ERRO-
R, on failure in encoder initialization.
• AACENC_ENCODE_EOF, when flushing fully concluded.
Parameters
info Pointer to an allocated LIB_INFO struct.
Returns
• AACENC_OK, on success.
• AACENC_INVALID_HANDLE, AACENC_INIT_ERROR, on failure.
Parameters
hAacEncoder A valid AAC encoder handle.
pInfo Pointer to AACENC_InfoStruct. Filled on return.
7.1 aacenc_lib.h File Reference 37
Returns
• AACENC_OK, on succes.
• AACENC_INIT_ERROR, on failure.
Parameters
hAacEncoder A valid AAC encoder handle.
param Parameter to be returned. See AACENC_PARAM.
Returns
Internal configuration value of specifed parameter AACENC_PARAM.
Parameters
hAacEncoder A valid AAC encoder handle.
param Parameter to be set. See AACENC_PARAM.
value Parameter value. See parameter description in AACENC_PARAM.
Returns
• AACENC_OK, on success.
• AACENC_INVALID_HANDLE, AACENC_UNSUPPORTED_PARAMETER, AACENC_IN-
VALID_CONFIG, on failure.
Parameters
phAacEncoder A pointer to an encoder handle. Initialized on return.
encModules Specify encoder modules to be supported in this encoder instance:
• 0x0: Allocate memory for all available encoder modules.
• else: Select memory allocation regarding encoder modules. Following flags are
possible and can be combined.
– 0x01: AAC module.
– 0x02: SBR module.
– 0x04: PS module.
– 0x10: Metadata module.
– example: (0x01|0x02|0x04|0x10) allocates all modules and is equivalent to
default configuration denotet by 0x0.
maxChannels Number of channels to be allocated. This parameter can be used in different ways:
• 0: Allocate maximum number of AAC and SBR channels as supported by the
library.
• nChannels: Use same maximum number of channels for allocating memory in
AAC and SBR module.
• nChannels | (nSbrCh<<8): Number of SBR channels can be different to AAC
channels to save data memory.
Returns
• AACENC_OK, on succes.
• AACENC_INVALID_HANDLE, AACENC_MEMORY_ERROR, AACENC_INVALID_CO-
NFIG, on failure.
Index
AACENC_AFTERBURNER AACENC_INIT_TP_ERROR
aacenc_lib.h, 32 aacenc_lib.h, 31
AACENC_ANCILLARY_BITRATE AACENC_INIT_TRANSPORT
aacenc_lib.h, 34 aacenc_lib.h, 30
AACENC_AOT AACENC_INVALID_CONFIG
aacenc_lib.h, 31 aacenc_lib.h, 30
AACENC_AUDIOMUXVER AACENC_INVALID_HANDLE
aacenc_lib.h, 34 aacenc_lib.h, 30
AACENC_BANDWIDTH AACENC_MEMORY_ERROR
aacenc_lib.h, 32 aacenc_lib.h, 30
AACENC_BITRATE AACENC_METADATA_DRC_FILMLIGHT
aacenc_lib.h, 31 aacenc_lib.h, 31
AACENC_BITRATEMODE AACENC_METADATA_DRC_FILMSTANDARD
aacenc_lib.h, 31 aacenc_lib.h, 31
AACENC_CHANNELMODE AACENC_METADATA_DRC_MUSICLIGHT
aacenc_lib.h, 32 aacenc_lib.h, 31
AACENC_CHANNELORDER AACENC_METADATA_DRC_MUSICSTANDA-
aacenc_lib.h, 32 RD
AACENC_CONTROL_STATE aacenc_lib.h, 31
aacenc_lib.h, 34 AACENC_METADATA_DRC_NONE
AACENC_ENCODE_EOF aacenc_lib.h, 31
aacenc_lib.h, 31 AACENC_METADATA_DRC_SPEECH
AACENC_ENCODE_ERROR aacenc_lib.h, 31
aacenc_lib.h, 31 AACENC_METADATA_MODE
AACENC_GRANULE_LENGTH aacenc_lib.h, 34
aacenc_lib.h, 32 AACENC_NONE
AACENC_HEADER_PERIOD aacenc_lib.h, 34
aacenc_lib.h, 33 AACENC_OK
AACENC_INIT_AAC_ERROR aacenc_lib.h, 30
aacenc_lib.h, 31 AACENC_PEAK_BITRATE
AACENC_INIT_ALL aacenc_lib.h, 32
aacenc_lib.h, 30 AACENC_PROTECTION
AACENC_INIT_CONFIG aacenc_lib.h, 34
aacenc_lib.h, 30 AACENC_RESET_INBUFFER
AACENC_INIT_ERROR aacenc_lib.h, 30
aacenc_lib.h, 31 AACENC_SAMPLERATE
AACENC_INIT_META_ERROR aacenc_lib.h, 32
aacenc_lib.h, 31 AACENC_SBR_MODE
AACENC_INIT_NONE aacenc_lib.h, 32
aacenc_lib.h, 30 AACENC_SBR_RATIO
AACENC_INIT_SBR_ERROR aacenc_lib.h, 32
aacenc_lib.h, 31 AACENC_SIGNALING_MODE
AACENC_INIT_STATES aacenc_lib.h, 33
aacenc_lib.h, 30 AACENC_TPSUBFRAMES
40 INDEX
aacenc_lib.h, 34 aacenc_lib.h, 36
AACENC_TRANSMUX aacEncOpen
aacenc_lib.h, 32 aacenc_lib.h, 37
AACENC_UNSUPPORTED_PARAMETER aacEncoder_GetParam
aacenc_lib.h, 30 aacenc_lib.h, 37
AACENC_BufDesc, 21 aacEncoder_SetParam
bufElSizes, 21 aacenc_lib.h, 37
bufSizes, 21 aacenc_lib.h
bufferIdentifiers, 21 AACENC_AFTERBURNER, 32
bufs, 21 AACENC_ANCILLARY_BITRATE, 34
numBufs, 22 AACENC_AOT, 31
AACENC_BufferIdentifier AACENC_AUDIOMUXVER, 34
aacenc_lib.h, 30 AACENC_BANDWIDTH, 32
AACENC_CTRLFLAGS AACENC_BITRATE, 31
aacenc_lib.h, 30 AACENC_BITRATEMODE, 31
AACENC_ERROR AACENC_CHANNELMODE, 32
aacenc_lib.h, 30 AACENC_CHANNELORDER, 32
AACENC_InArgs, 22 AACENC_CONTROL_STATE, 34
numAncBytes, 22 AACENC_ENCODE_EOF, 31
numInSamples, 22 AACENC_ENCODE_ERROR, 31
AACENC_InfoStruct, 22 AACENC_GRANULE_LENGTH, 32
confBuf, 23 AACENC_HEADER_PERIOD, 33
confSize, 23 AACENC_INIT_AAC_ERROR, 31
encoderDelay, 23 AACENC_INIT_ALL, 30
frameLength, 23 AACENC_INIT_CONFIG, 30
inBufFillLevel, 23 AACENC_INIT_ERROR, 31
inputChannels, 23 AACENC_INIT_META_ERROR, 31
maxAncBytes, 23 AACENC_INIT_NONE, 30
maxOutBufBytes, 23 AACENC_INIT_SBR_ERROR, 31
AACENC_MetaData, 24 AACENC_INIT_STATES, 30
centerMixLevel, 24 AACENC_INIT_TP_ERROR, 31
comp_TargetRefLevel, 24 AACENC_INIT_TRANSPORT, 30
comp_profile, 24 AACENC_INVALID_CONFIG, 30
dolbySurroundMode, 24 AACENC_INVALID_HANDLE, 30
drc_TargetRefLevel, 25 AACENC_MEMORY_ERROR, 30
drc_profile, 25 AACENC_METADATA_DRC_FILMLIGHT,
ETSI_DmxLvl_present, 25 31
PCE_mixdown_idx_present, 25 AACENC_METADATA_DRC_FILMSTAND-
prog_ref_level, 25 ARD, 31
prog_ref_level_present, 25 AACENC_METADATA_DRC_MUSICLIGH-
surroundMixLevel, 25 T, 31
AACENC_OutArgs, 25 AACENC_METADATA_DRC_MUSICSTAN-
numAncBytes, 26 DARD, 31
numInSamples, 26 AACENC_METADATA_DRC_NONE, 31
numOutBytes, 26 AACENC_METADATA_DRC_SPEECH, 31
AACENC_PARAM AACENC_METADATA_MODE, 34
aacenc_lib.h, 31 AACENC_NONE, 34
aacEncClose AACENC_OK, 30
aacenc_lib.h, 34 AACENC_PEAK_BITRATE, 32
aacEncEncode AACENC_PROTECTION, 34
aacenc_lib.h, 35 AACENC_RESET_INBUFFER, 30
aacEncGetLibInfo AACENC_SAMPLERATE, 32
aacenc_lib.h, 36 AACENC_SBR_MODE, 32
aacEncInfo AACENC_SBR_RATIO, 32
INDEX 41
AACENC_SIGNALING_MODE, 33 frameLength
AACENC_TPSUBFRAMES, 34 AACENC_InfoStruct, 23
AACENC_TRANSMUX, 32
AACENC_UNSUPPORTED_PARAMETER, 30HANDLE_AACENCODER
IN_ANCILLRY_DATA, 30 aacenc_lib.h, 30
IN_AUDIO_DATA, 30
IN_METADATA_SETUP, 30 IN_ANCILLRY_DATA
OUT_AU_SIZES, 30 aacenc_lib.h, 30
OUT_BITSTREAM_DATA, 30 IN_AUDIO_DATA
aacenc_lib.h, 27 aacenc_lib.h, 30
AACENC_BufferIdentifier, 30 IN_METADATA_SETUP
AACENC_CTRLFLAGS, 30 aacenc_lib.h, 30
AACENC_ERROR, 30 inBufFillLevel
AACENC_PARAM, 31 AACENC_InfoStruct, 23
aacEncClose, 34 inputChannels
AACENC_InfoStruct, 23
aacEncEncode, 35
aacEncGetLibInfo, 36 maxAncBytes
aacEncInfo, 36 AACENC_InfoStruct, 23
aacEncOpen, 37 maxOutBufBytes
aacEncoder_GetParam, 37 AACENC_InfoStruct, 23
aacEncoder_SetParam, 37
HANDLE_AACENCODER, 30 numAncBytes
AACENC_InArgs, 22
bufElSizes AACENC_OutArgs, 26
AACENC_BufDesc, 21 numBufs
bufSizes AACENC_BufDesc, 22
AACENC_BufDesc, 21 numInSamples
bufferIdentifiers AACENC_InArgs, 22
AACENC_BufDesc, 21 AACENC_OutArgs, 26
bufs numOutBytes
AACENC_BufDesc, 21 AACENC_OutArgs, 26
centerMixLevel OUT_AU_SIZES
AACENC_MetaData, 24 aacenc_lib.h, 30
comp_TargetRefLevel OUT_BITSTREAM_DATA
AACENC_MetaData, 24 aacenc_lib.h, 30
comp_profile
AACENC_MetaData, 24 PCE_mixdown_idx_present
confBuf AACENC_MetaData, 25
AACENC_InfoStruct, 23 prog_ref_level
confSize AACENC_MetaData, 25
AACENC_InfoStruct, 23 prog_ref_level_present
AACENC_MetaData, 25
dolbySurroundMode
AACENC_MetaData, 24 surroundMixLevel
drc_TargetRefLevel AACENC_MetaData, 25
AACENC_MetaData, 25
drc_profile
AACENC_MetaData, 25
ETSI_DmxLvl_present
AACENC_MetaData, 25
encoderDelay
AACENC_InfoStruct, 23