Melhoria da qualidade de áudio por meio de modificações na pilha Bluetooth
- Usuários de fones de ouvido sem fio costumam ter baixa qualidade de som e falta de agudos ao usar o codec SBC padrão do Bluetooth.
- Comprar dispositivos com suporte a codecs como aptX ou LDAC é a solução mais comum, mas esses codecs têm custos de licenciamento, o que torna os aparelhos mais caros.
- A baixa qualidade do SBC ocorre por limitações artificiais da pilha Bluetooth atual e dos fones, e isso pode ser contornado em qualquer dispositivo apenas com modificações de software.
Codec SBC
- O SBC tem vários parâmetros negociados na etapa de configuração da conexão: tipo e número de canais de áudio, número de bandas de frequência, número de blocos de áudio por pacote, algoritmo de alocação de bits de quantização e bitpool máximo e mínimo usado no processo de quantização.
- Atualmente, a pilha Bluetooth normalmente negocia o conjunto de opções Joint Stereo, 8 bandas, 16 blocos, Loudness e bitpool 2..53.
- O valor de bitpool é o parâmetro que altera o bitrate de codificação; quanto maior ele for, maior será o bitrate e a qualidade.
Modificação da pilha Bluetooth
- Toda pilha Bluetooth compatível com A2DP deve suportar o modo Dual Channel, mas não há uma forma de forçar o uso desse modo.
- Foram criados patches para Android 8.1 e 9 que adicionam o modo Dual Channel ao menu do desenvolvedor, exibido nas configurações do dispositivo Bluetooth como o codec "HD Audio".
- Esse patch foi integrado a firmwares alternativos como LineageOS, Resurrection Remix e crDroid.
De onde vêm 551 e 452 kbps
- A tecnologia de multiplexação por tempo do Bluetooth foi projetada para transmitir com eficiência pacotes grandes de tamanho fixo.
- A transmissão de dados é feita por slots, e 5 slots é o número máximo que pode ser transmitido em uma única transmissão.
- Em 5 slots, é possível transmitir até 679 bytes a 2Mbps e até 1021 bytes a 3Mbps.
Por que tudo isso é necessário?
- Ao contrário da crença comum sobre a qualidade de som do aptX, em alguns casos o SBC pode produzir uma qualidade de áudio pior do que o bitrate padrão de 328k.
- O SBC aloca dinamicamente bits de quantização para as bandas de frequência, enquanto o aptX quantiza as bandas com uma quantidade fixa de bits.
- Usando SBC com bitrate alto, na maioria dos casos é possível obter qualidade de som superior à do aptX e, em fones com suporte a EDR 3 Mb/s, alcançar uma qualidade muito próxima da do aptX HD.
Dá para ir além?
- O conjunto de patches para Android oferece uma opção adicional para elevar ainda mais o bitrate de dispositivos EDR 2 mbps, de 452 kbps para 595 kbps.
- É possível ativar o bitrate mais alto definindo a variável
persist.bluetooth.sbc_hd_higher_bitratecomo 1.
Compatibilidade com dispositivos
- O SBC Dual Channel é suportado por quase todos os fones, alto-falantes e centrais multimídia automotivas.
- Dispositivos que apresentam problemas com esse modo são muito raros, mas informações detalhadas sobre compatibilidade podem ser encontradas no 4pda e no xda-developers.
Comparação de qualidade de som
- Foi criado um serviço web que codifica áudio em tempo real no navegador com SBC (além de aptX e aptX HD), permitindo comparar a qualidade de som entre diferentes perfis SBC e codecs.
Entrando em contato com os desenvolvedores do Android
- Foi solicitado aos desenvolvedores da pilha Bluetooth do Google que incluíssem o patch no AOSP, mas até agora não houve resposta.
- Também não houve comentários no sistema de revisão de código Gerrit por parte de pessoas envolvidas no desenvolvimento.
Conclusão
- Usuários dos firmwares LineageOS, Resurrection Remix e crDroid podem melhorar a qualidade do áudio Bluetooth marcando uma caixa de seleção nas configurações do dispositivo Bluetooth.
- Usuários de Linux também podem obter bitrates SBC mais altos instalando os patches de Pali Rohár.
Opinião do GN⁺
O ponto mais importante deste texto é que a qualidade do áudio Bluetooth existente pode ser melhorada apenas com modificações de software. Isso é uma solução atraente porque permite experimentar áudio de alta qualidade em dispositivos já existentes sem precisar comprar aparelhos compatíveis com codecs novos e caros. Em especial, para usuários de firmware de código aberto, o fato de essas modificações serem possíveis é um avanço interessante, pois amplia a acessibilidade à tecnologia e permite que o usuário tenha mais controle sobre seus próprios dispositivos.
1 comentários
Comentários no Hacker News
Avaliação positiva do amplo suporte ao SBC e de sua escalabilidade natural
Análise aprofundada de um bug na pilha Bluetooth do Android e observação sobre a variabilidade do hardware
Compartilhamento de experiência com ajuste de parâmetros SBC e uso de AAC, aptX e LDAC no Windows por meio do 'Alternative A2DP Driver'
Menção à possibilidade de áudio com bitrate mais alto e melhoria da qualidade de áudio de headset no Linux com SBC XQ e mSBC
Levantamento da necessidade de um recurso em perfis de áudio Bluetooth que permita buffering antecipado por longos períodos
Relato de experiência com o uso desse recurso no LineageOS e menção à necessidade de melhorar a experiência do usuário
Menção à necessidade de adicionar o ano (2019) ao título e observação de que isso já foi implementado no PulseAudio e no PipeWire
Visão cética sobre o impacto real da diferença de bitrate entre Dual Channel e Joint Stereo na qualidade de áudio
Pergunta sobre como melhorar a qualidade do HFP no macOS e compartilhamento de experiência com mSBC no Linux
Relato de que não sabia que estava usando SBC e agradecimento pela postagem