Viewing posts for the category geektimes

A drawing bot for realizing everyday scenes and even stories

  • Microsoft corporate blog
  • Open source
  • GitHub
  • Machine learning
  • Artificial Intelligence

Drawing bot

Launching a taxi-hailing app in Tokyo: How Sony does it with S.Ride?

  • Development of mobile applications
  • Start-up development
  • Software

How Moovit improved its app to help people with disabilities ride transit with confidence

  • Microsoft corporate blog
  • Development of mobile applications
  • Transport
  • Urbanism

Alexandr Epaneshnikov, a 19-year-old Russian student who is legally blind, recently decided he wanted to be more independent by commuting on his own and relying less on his mom for rides to school. It meant taking a streetcar to a subway to his high school in Moscow, a 30-minute trip that Epaneshnikov assuredly navigates with a cane and Moovit, an urban mobility app optimized for screen readers.

Audio over Bluetooth: most detailed information about profiles, codecs, and devices

  • Wireless technologies
  • Sound

Bluetooth stack modifications to improve audio quality on headphones without AAC, aptX, or LDAC codecs

  • Development for Android
  • Wireless technologies
  • Sound

Before reading this article, it is recommended to read the previous one: Audio over Bluetooth: most detailed information about profiles, codecs, and devices / по-русски

Some wireless headphone users note low sound quality and lack of high frequencies when using the standard Bluetooth SBC codec, which is supported by all headphones and other Bluetooth audio devices. A common recommendation to get better sound quality is to buy devices and headphones with aptX or LDAC codecs support. These codecs require licensing fees, that's why devices with them are more expensive.

It turns out that the low quality of SBC is caused by artificial limitations of all current Bluetooth stacks and headphones' configuration, and this limitation can be circumvented on any existing device with software modification only.

SBC codec

SBC has lots of different parameters that are negotiated during the connection setup phase:

  • Audio channel type and number: Joint Stereo, Stereo, Dual Channel, Mono;
  • Number of frequency bands: 4 or 8;
  • Number of audio blocks in one packet: 4, 8, 12, 16;
  • Quantization bit allocation algorithm: Loudness, SNR;
  • Maximum and minimum bit pool used in quantization process: usually 2-53.

The decoder is required to support any combination of these parameters. Encoder may implement only a part of them.
Existing Bluetooth stacks usually negotiate the following set of options which I call «profile»: Joint Stereo, 8 bands, 16 blocks, Loudness, bitpool 2..53. This profile encodes 44.1 kHz stereo audio with 328 kbps bitrate.
Bitpool is a parameter that changes encoding bitrate: the higher it is, the higher the bitrate, and hence the quality. But exact bitpool value corresponds to exact bitrate only within exact profile.
The bitrate is also significantly affected by other parameters: audio channel type, number of frequency bands, number of audio blocks. You can increase the bitrate indirectly by negotiating non-standard profiles, without changing the bitpool.

$ bitrate = \frac{8 \times frame\_length \times sample\_rate}{subbands \times blocks} $

Recent Posts






RSS / Atom