Advanced Audio Coding Encoder
Library
MPEG-2 and MPEG-4 AAC Low-Complexity,
MPEG-4 High-Efficiency AAC v2
MPEG-4 Enhanced Low Delay AAC
encoder
Fraunhofer Institut fuer Integrierte Schaltungen IIS,
Fraunhofer Institute for Integrated Circuits IIS
http://www.iis.fraunhofer.de/amm
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.
Revision 3.4.12 , September 2, 2013
Contents
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 . . . . . . . . . . . . . . . . . . . . . . . . 6
2.5 Feed Input Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.6 Output Bitstream Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.7 Meta Data Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.8 Encoder Reconfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.9 Encoder Parametrization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.9.1 Mandatory Encoder Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.9.2 Channel Mode Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.9.3 Audio Quality Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.9.4 ELD Auto Configuration Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.10 Audio Channel Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.11 Supported Bitrates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.12 Recommended Sampling Rate and Bitrate Combinations . . . . . . . . . . . . . . . . . . 11
2.12.1 AAC-LC, HE-AAC, HE-AACv2 in Dualrate SBR mode. . . . . . . . . . . . . . . 11
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. . . . . . . . . . . . . . . . . . 12
3 Encoder Behaviour 13
3.1 Bandwidth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
ii CONTENTS
3.2 Frame Sizes & Bit Reservoir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2.1 Estimating Average Frame Sizes . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 Encoder Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4 Class Index 15
4.1 Class List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5 File Index 17
5.1 File List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6 Class Documentation 19
6.1 AACENC_BufDesc Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.1.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.1.2 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.1.2.1 bufElSizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.1.2.2 bufferIdentifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.1.2.3 bufs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.1.2.4 bufSizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.1.2.5 numBufs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.2 AACENC_InArgs Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.2.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.2.2 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.2.2.1 numAncBytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.2.2.2 numInSamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.3 AACENC_InfoStruct Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.3.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.3.2 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.3.2.1 confBuf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.3.2.2 confSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.3.2.3 encoderDelay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.3.2.4 frameLength . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.3.2.5 inBufFillLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.3.2.6 inputChannels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.3.2.7 maxAncBytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.3.2.8 maxOutBufBytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.4 AACENC_MetaData Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.4.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.4.2 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
CONTENTS iii
6.4.2.1 centerMixLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.4.2.2 comp_profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.4.2.3 comp_TargetRefLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.4.2.4 dolbySurroundMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.4.2.5 drc_profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.4.2.6 drc_TargetRefLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.4.2.7 ETSI_DmxLvl_present . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.4.2.8 PCE_mixdown_idx_present . . . . . . . . . . . . . . . . . . . . . . . . 23
6.4.2.9 prog_ref_level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.4.2.10 prog_ref_level_present . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.4.2.11 surroundMixLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.5 AACENC_OutArgs Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.5.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.5.2 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.5.2.1 numAncBytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.5.2.2 numInSamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.5.2.3 numOutBytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
7 File Documentation 25
7.1 aacenc_lib.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
7.1.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.1.2 Typedef Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.1.2.1 HANDLE_AACENCODER . . . . . . . . . . . . . . . . . . . . . . . 28
7.1.3 Enumeration Type Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.1.3.1 AACENC_BufferIdentifier . . . . . . . . . . . . . . . . . . . . . . . . 28
7.1.3.2 AACENC_CTRLFLAGS . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.1.3.3 AACENC_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.1.3.4 AACENC_METADATA_DRC_PROFILE . . . . . . . . . . . . . . . . 29
7.1.3.5 AACENC_PARAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
7.1.4 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
7.1.4.1 aacEncClose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
7.1.4.2 aacEncEncode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
7.1.4.3 aacEncGetLibInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
7.1.4.4 aacEncInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
7.1.4.5 aacEncoder_GetParam . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
7.1.4.6 aacEncoder_SetParam . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
7.1.4.7 aacEncOpen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35