Advanced Audio Coding
- FourCC: AAC AACP MP4A mp4a VLB
- Company: ISO
- Samples: http://samples.mplayerhq.hu/A-codecs/AAC/
- Samples: sample repo at standards.iso.org
- Sample Docs: sample docs
Specification links:
- AAC: ISO/IEC 14496-3:2009, Old (free) drafts
- Conformance: ISO/IEC 14496-26:2010
- Gapless: 14496-24:2008, Draft
- ETSI 26.401-406
Reference Sources:
Usually stored in an MP4 container.
See also Understanding AAC.
Implementations
With Source Code
- Google has opensourced Android, which includes an Apache 2.0 licensed aac encoder and decoder:
- Intel has source for its IPP based AAC decoder:
- Real Networks has source for its Helix AAC fixedpoint decoder here:
- FAAC/FAAD
- FFmpeg/Libav
- HE-AAC encoder based on 3GPP reference implementation
Other Notables
- Nero has a well regarded freeware AAC encoder and decoder
- Coding Technologies the inventor of SBR has a shareware encoder available in Winamp
- Apple who popularized the format in its iTunes software has an encoders and decoders available in iTunes and QuickTime. Dolby was involved in its implementation. [1]
Decoder Features
AAC decoder feature matrix
Decoder | al17 | elem_id0 | bad_concat | lfe_is_sce | SBR | PS | CCE | Main | LTP | ER AAC LC | ER AAC LD | AAC-960 | ADTS (Implicit SBR+PS) | MP4 (Implicit SBR+PS) | MP4 (EBC SBR / Impl PS) | MP4 (EBC SBR / EBC PS) | MP4 (Impl SBR / ENBC PS) | 3GPP (EBC SBR / Impl PS) | 3GPP (ENBC SBR / Impl PS) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
mp4mcDec | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |||||||
libavcodec | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
libfaad2 | No | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | No | No | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes |
iTunes | No | No | Yes | No LFE | Yes | No? | No | No | No | No | No | No | No | No SBR | No PS | No PS | No PS | No PS | No PS |
WinAMP | Yes | Garbled | No | Yes | Yes | Yes | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | No | No |
Microsoft DTV-DVD Audio Decoder | No | Yes | Yes | No LFE | Yes | Yes | Yes | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Common AAC Flavors
MPEG-2 AAC-LC
The basic subset of AAC that most other flavors and profiles are based on.
The AAC Profile (MPEG-4 AAC-LC)
MPEG-2 AAC-LC plus a Perceptual Noise Substitution (PNS) tool.
The HE-AAC Profile (v1 and v2)
HE-AAC (also known by the Dolby trade name aacPlus) is MPEG-4 AAC-LC + SBR (Spectral Band Replication) and HE-AAC v2 (aacPlus v2) is MPEG-4 AAC-LC + SBR + PS (Parametric Stereo). Standard AAC-LC decoders can decode HE-AAC encoded files/streams but without SBR and PS you do not get the full quality.
- See also
- MP3PRO that also uses SBR.
MPEG-2/4 AAC Main
MPEG-2/4 AAC-LC plus a computationally intensive, intra-channel, inter-frame frequency domain prediction tool. Additionally this profile adds relaxation to the maximum TNS filter size, and time domain coupling. The details of the prediction tool are only given in ISO/IEC 13818-7 not in ISO/IEC 14496-3. In the wild this appears to be used in some Hulu streams.
MPEG-4 AAC LTP
MPEG-4 AAC-LC plus a less computationally intensive frequency domain prediction tool. This flavor is rarely seen in the wild. Despite being an MPEG-4 only flavor it can be embedded in an ADTS stream.
BSAC AAC
Bit Slice Arithmetic Coding (BSAC) is an alternate quantization and entropy coding scheme for AAC. It is used by the T-DMB broadcast standard.
Extensions
GAIN headers
See http://mp3gain.sourceforge.net and MP3 GAIN header.
MPEG Surround
MPEG Surround is a multichannel coding scheme that can used with any core coder audio but is most often used with (HE-)AAC and BSAC. MPEG Surround technology shares similar characteristics with PS (Parametric Stereo) used in HE-AAC v2 including mixing in the same SBR domain used by HE-AAC.
References:
AAC Encoding Guidelines
The following documents are must reads for anyone implementing an AAC encoder
- ISO/IEC 14496-3:2009 - Decoding AAC, systems MPEG-4 integration
- ISO/IEC 14496-26:2010 - Conformance, includes limits on various bitstream values
- ISO/IEC 14496-24:2008 - ISO Gapless AAC
- ISO/IEC 13818-7:2006 - MPEG-2 AAC includes informative annexes on encoding omitted from 14496-3
- 3GPP 26.403-405 - Elaborations on the annexes in 13818-7
- Improved ISO AAC Coder, Ivan Dimkovic, PsyTEL Research