1 pontos por GN⁺ 2023-11-25 | 1 comentários | Compartilhar no WhatsApp

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_bitrate como 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

 
GN⁺ 2023-11-25
Comentários no Hacker News
  • Avaliação positiva do amplo suporte ao SBC e de sua escalabilidade natural

    É ótimo que o SBC seja amplamente suportado, e isso parece uma extensão natural do padrão existente. Pessoalmente, o problema não é o LDAC ou o AAC em comparação com o SBC, mas sim a baixa qualidade do HFP. No momento em que o microfone é ligado, parece que voltamos aos anos 90. Espero ver melhorias na qualidade do áudio Bluetooth bidirecional.

  • Análise aprofundada de um bug na pilha Bluetooth do Android e observação sobre a variabilidade do hardware

    Este artigo não é sobre Bluetooth em geral, mas uma análise aprofundada de um bug na pilha Bluetooth do Android. O que o autor não menciona de forma alguma é que o hardware usado é extremamente variado. O Android roda sobre inúmeros chipsets Bluetooth. Portanto, mesmo que um patch pareça funcionar em um hardware, ele pode não funcionar em outros celulares Android. Além disso, isso também pode variar dependendo de outras tarefas que o dispositivo esteja executando no momento. Por exemplo, se ele compartilha um chipset BT+Wifi e está transmitindo vídeo por Wi‑Fi enquanto transmite áudio para os fones, o dispositivo precisa alocar recursos com base no uso de Wi‑Fi e BT. Assim, áudio armazenado localmente e áudio por streaming não necessariamente receberão os mesmos parâmetros de CODEC. Há muitas diferenças sutis nesse tema que o autor não considerou, então é preciso cautela ao ler.

  • 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'

    O "Alternative A2DP Driver" oferece essa função no Windows. É possível personalizar os parâmetros do SBC e usar AAC e aptX (não cheguei a testar), além de usar LDAC com o Sony XM4. Pela minha experiência, funciona bem, e consegui usar LDAC com o Sony XM4. É uma versão de teste, mas é barato. Ao observar a redução do alcance do Bluetooth no modo de alta qualidade, confirmei que o codec (ou pelo menos alguma coisa) realmente está mudando. O link acima não é afiliado.

  • Menção à possibilidade de áudio com bitrate mais alto e melhoria da qualidade de áudio de headset no Linux com SBC XQ e mSBC

    No Linux, é possível ativar áudio SBC com bitrate mais alto por meio de algo chamado "SBC XQ". Da mesma forma, é possível usar "mSBC" para obter áudio de headset de qualidade superior (embora ainda inferior a SBC ou APTX, claro). Muitos fones suportam codecs de áudio melhores, mas o suporte não é universal e também não está claro se há melhora no áudio bidirecional. Espero que o Google já integre algo assim ou parecido.

  • Levantamento da necessidade de um recurso em perfis de áudio Bluetooth que permita buffering antecipado por longos períodos

    Gostaria que fosse inventado, nos perfis de áudio Bluetooth, um recurso que permitisse buffering antecipado por longos períodos. Por exemplo, ao reproduzir uma música de 1 minuto, a música inteira deveria ser armazenada em buffer. Se eu clicasse em 'pausar' ou alterasse o volume, o buffer deveria ser descartado. Mas um buffer longo ajudaria o celular a economizar energia e a suportar conexões de rádio instáveis.

  • Relato de experiência com o uso desse recurso no LineageOS e menção à necessidade de melhorar a experiência do usuário

    Já usei esse recurso no LineageOS e fiquei muito satisfeito. A possibilidade de transmitir áudio em qualidade mais alta para dispositivos como som automotivo que não suportam codecs 3P é muito útil. Também pode trazer grandes benefícios em fones de ouvido. A experiência do usuário ainda precisa de alguns ajustes, mas o recurso em si é excelente.

  • 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

    Seria melhor adicionar (2019) ao título. Há uma menção a "todas as pilhas Bluetooth atuais", mas esse tipo de recurso 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

    Tenho dúvidas de que 551 kbps em Dual Channel ofereça uma qualidade perceptivelmente melhor do que 328 kbps em Joint Stereo. Em grande parte das músicas, fico me perguntando se isso não seria apenas usar mais bits para codificar informações redundantes.

  • Pergunta sobre como melhorar a qualidade do HFP no macOS e compartilhamento de experiência com mSBC no Linux

    Gostaria de saber se alguém conhece alguma forma de melhorar a qualidade do HFP usando Bluetooth no macOS. Já tive uma qualidade bem razoável com mSBC no Linux, mas no macOS isso fica completamente péssimo e volta para aquela qualidade de linha telefônica/mono. Fico curioso se já existe algum hack para fazer isso funcionar direito no Darwin.

  • Relato de que não sabia que estava usando SBC e agradecimento pela postagem

    Eu não sabia que estava usando esse recurso SBC no Lineage 18-1. Foi por meio desta postagem que descobri que estava usando a função SBC. "magic -"