Sub-band Codec (SBC) was adopted as a mandatory codec by the Bluetooth Special Interest Group (SIG) in the year 2002. It operates on blocks of 4, 8, 12, or 16 16-bit PCM audio signals sampled at 16, 32, 44.1, or 48 KHz and generates a compressed bit-stream having bit-rates in the range of 56 512 kbps. The codec uses a cosine modulated filter bank for analysis and synthesis. The filter-bank can be configured for 4 or 8 bands. The sub-band signals are quantized using a dynamic bit-allocation scheme and block adaptive PCM quantization. The codec supports two bit allocation algorithms, loudness and SNR, and four channel modes: mono, stereo, joint stereo, and dual channel. The codec is primarily used in Bluetooth technology based short-range wireless applications.
- Based on Bluetooth SIG A2DP Specification Revision V12
- Optimized ASM/C implementation.
- Re-entrant implementation
- C-callable APIs
- Generates 16-bit output audio signals sampled at 16, 32, 44.1, or 48 KHz.
- Support for input block lengths of 4, 8, 12, or 16 samples.
- Support for bit-rates ranging from 56 320 kbps for mono and 80 512 kbps for stereo.
- Support for loudness and SNR bit allocation schemes.
- Support for 4 or 8 sub-bands.
- Support for mono, stereo, joint stereo, and dual channel modes.
- Supports downmixing to mono output.
- Supports Interleaved and de-interleaved output.
- Supports Little-Endian implementation on ARM
- Optional support for xDM API's.
- Tested for compliance using a large database of audio test vectors
- Tested for loudness and SNR bit allocation schemes
- Tested for 4 or 8 sub-band cases.
- Tested for mono, stereo, joint-stereo, and dual channel test vectors.
- Tested for graceful exit in case of bit-stream related errors or exception.
- Tested for illegal memory access by the module on ARM platform.
- Module is fully interruptible.
- Tested for compliance with register preservation requirements
- Tested for Input buffer corruption
- Tested for I/O buffer alignment requirements
- Tested for multi-instance implementation.
- Tested with scratch contamination at frame boundaries
- Tested for 100% code coverage
- Range validation of all API parameters
- ARM implementation is validated on OMAP3530 (Cortex-A8) and DM6446/DM6467 (ARM926EJ-S) platforms.
ARM9E, ARM11, Cortex-A8, and Cortex-A9