The Helix AAC decoder is highly optimized for ARM processors and meets or exceeds the performance of other commercial implementations. It also features one of the first widely available fixed-point implementations of SBR.
Key Features
- MPEG-2 and MPEG-4 low complexity decoding (intensity stereo, MS, TNS, PNS)
- Spectral band replication (SBR), high-quality mode
- Mono, stereo, and multichannel modes
- ADTS, ADIF, and raw data block decoding
- MP4, RM, and other file formats supported via Helix client
Technical Specifications
Average CPU Usage
1. MPEG4-LC AAC (SBR not used) | | | Processor Model (1) | |||
| | | | |||
| | | | | | |
44.1 KHz | 1 | 96 Kbps | 11 / 13 MHz | 9 / 11 MHz | 9 / 11 MHz | 10 / 12 MHz |
44.1 KHz | 2 | 128 Kbps | 19 / 23 MHz | 17 / 21 MHz | 17 / 20 MHz | 18 / 21 MHz |
| | | | | | |
2. MPEG4-LC HE-AAC (SBR enabled, "high quality" mode)
| | | Processor Model (1) | |||
| | | | |||
| | | | | | |
| | | | | | |
(1) Tested with ARMulator, simulated zero-wait-state memory
Notes:
- Compiled using ARM ADS 1.2
- Tested with ARMulator, zero-wait state memory
- Results are average CPU usage, typical content
- first MHz value is when TNS is off, second value is when TNS is on
Memory Usage
1. MPEG4-LC AAC (SBR not used)- ROM (const globals) = 27128
- RAM (heap, max 2 channels) = 20656
- Code size - x86 (MSVC++ 6.0) = 22654
- Code size - ARM (ADS ARM9TDMI) = 20120
- Additional RAM required per channel = 4104
- ROM (const globals) = 37580
- RAM (heap, max 2 channels) = 79580
- Code size - x86 (MSVC++ 6.0) = 47822
- Code size - ARM (ADS ARM9TDMI) = 41764
- Additional RAM required per channel = 17198
Notes:
- Memory usage constant for all sample rates, bit rates
- Does not include input buffer (encoded data) or output buffer (PCM)
- There is no zero-init or read-write global data
- All values are in bytes
Frequently Asked Questions
What features are currently not supported in the aacPlus decoder?
- main or SSR profile, LTP
- coupling channel elements (CCE)
- 960/1920-sample frame size
- low-power mode SBR decoding
- downsampled (single-rate) SBR decoding
Where is the code in CVS?
- See the Helix Datatype project page: http://datatype.helixcommunity.org
The CVS root is /cvsroot/datatype, and the module name (path) is aac/codec/fixpt/decoder
Where does the build system put the code in my local source tree?
- datatype/aac/codec/fixpt
- In the build menu, use one of the following bif files: helix.bif (HEAD) or hxclient_1_5_0_cayenne.bif
- Select the target "datatype_aac_codec"
- Make sure the define "HELIX_CONFIG_FIXEDPOINT", is either in the profile or config (cf) file that you are currently using.
Build System Menu
-> Current Directory: D:\client_150_cayenne
[0] Set BIF branch (hxclient_1_5_0_cayenne)
[1] Set Target(s) (datatype_aac_codec)
=======================================-> Current Directory: D:\client_150_cayenne
[0] Set BIF branch (hxclient_1_5_0_cayenne)
[1] Set Target(s) (datatype_aac_codec)
How do I play .mp4/.3gp streams that contain AAC-encoded streams?
- In the build menu, use the same bif as you have used above
- Select the target "splay". This builds a command-line player through which you can play .mp4/.3gp streams
- For instructions to check out source, go to Quickstart Guide
Build System Menu
-> Current Directory: D:\client_150_cayenne
[0] Set BIF branch (hxclient_1_5_0_cayenne)
[1] Set Target(s) (splay)
=======================================-> Current Directory: D:\client_150_cayenne
[0] Set BIF branch (hxclient_1_5_0_cayenne)
[1] Set Target(s) (splay)
Where do developers go to acquire their aacPlus patent license?
- For information regarding patent licensing for AAC, please see Via Licensing's website.
- For information regarding patent licensing for aacPlus, please see Coding Technologies' website.