The Bluetooth™ Sub-band Codec (SBC) is a low computational complexity audio coding system designed to obtain high quality audio at medium bit rates. SBC is used in all Bluetooth™ products offering audio streaming and will soon be used in all Bluetooth™ products offering wideband voice communication. SBC uses four or eight sub-bands, an adaptive bit allocation algorithm, and simple adaptive block PCM quantizers. SBC is fully described in Appendix B of the Advanced Audio Distribution Profile (A2DP) specification (Adopted Version 1.0, May 22, 2003)(referred to herein as “the A2DP specification”). The A2DP specification defines how high quality audio can be streamed from one device to another over a Bluetooth™ connection. This specification is incorporated by reference in its entirety as if fully set forth herein.
In SBC, an eight-bit integer value denoted bitpool is used to indicate the size of the bit pool to be allocated for encoding an audio stream. Using bitpool and other codec parameters (sampling frequency, channel mode, block length and the number of sub-bands), the bit rate and frame length of the audio stream may be determined as follows:
bit_rate = 8 * frame_length * fs / nrof_subbands / nrof_blocks,
bit_rate is the bit rate, and where
nrof_blocks denote the sampling frequency, the number of sub-bands and the number of blocks, respectively. The bit rate is expressed in kilobits per second (kb/s) and the sampling frequency is expressed in kilohertz (kHz). The frame length (
frame_length) is expressed in bytes as
frame_length = 4 + (4 * nrof_subbands * nrof_channels) / 8 +┌nrof_blocks * nrof_channels * bitpool / 8┐
for mono and dual channel modes, and
frame_length = 4 +(4 * nrof_subbands * nrof_channels) / 8 + ┌(join * nrof_subbands + nrof_blocks * bitpool) / 8┐
for stereo and joint stereo channel modes. Here,
nrof_channels denotes the number of channels. When joint stereo is used,
join=0. These equations use a ceiling function. The ceiling function of a real number
┌x┐, is a function that returns the smallest integer not less than
It can be seen from the foregoing that in SBC, given a fixed sampling frequency, channel mode, block length and number of sub-bands, the bit rate will be driven solely by bitpool. Thus, to increase the bit rate and thereby achieve improved audio quality, a relatively large bitpool may be used. However, this improved audio quality will come at the cost of increased power consumption by the encoder and decoder. Alternatively, to decrease the bit rate and thereby reduce power consumption, a relatively small bitpool may be used. However, this reduced power consumption will come at the cost of lower audio quality.
What is needed, then, is a technique that allows an audio communication system that uses SBC encoding to improve the quality of an encoded audio stream without increasing or substantially increasing power consumption by the SBC encoder and decoder. What is also needed is a technique that allows an audio communication system that uses SBC encoding to reduce the power consumption by the SBC encoder and decoder without reducing or substantially reducing the quality of an encoded audio stream.
An architecture for the integrated SBC codec in the Bluetooth core is described below in connection with FIGS. 8 and 9.
A block diagram illustrating the SBC encoder in more detail is shown in FIG. 8. The SBC encoder, generally referenced 170, comprises left/right polyphase analysis blocks 172, APCM blocks 174, bitstream packaging block 176 and derive allocation block 178.
The polyphase analysis blocks are operative to split the input PCM signal into subband samples and calculate the scale factors (i.e. a maximum level of each subband). The number of subbands can be four or eight. The derive allocation block functions to derive the subband levels in accordance with the scale factors and SBC parameters (e.g., bitpool). The APCM block functions to quantize the subband samples according to the levels calculated by the derive allocation block. The bitstream packaging block composes the SBC frame from its various inputs (i.e. header data, left and right APCM output, etc.).
A block diagram illustrating the SBC decoder in more detail is shown in FIG. 9. The SBC decoder, generally referenced 180, comprises bitstream unpacking block 180, APCM blocks 182, left/right polyphase synthesis blocks 184 and derive allocation block 186. The description of the decoder is similar to the encoder with the difference being the order of operations is reversed.