{"id":35159,"date":"2019-10-31T22:02:38","date_gmt":"2019-10-31T19:02:38","guid":{"rendered":"https:\/\/prohoster.info\/blog\/modifitsiruem-bluetooth-stek-dlya-uluchsheniya-zvuka-na-naushnikah-bez-kodekov-aac-aptx-i-ldac\/"},"modified":"2019-10-31T22:02:38","modified_gmt":"2019-10-31T19:02:38","slug":"modifitsiruem-bluetooth-stek-dlya-uluchsheniya-zvuka-na-naushnikah-bez-kodekov-aac-aptx-i-ldac","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/modifitsiruem-bluetooth-stek-dlya-uluchsheniya-zvuka-na-naushnikah-bez-kodekov-aac-aptx-i-ldac","title":{"rendered":"Modificamos a pilha Bluetooth para melhorar o som em fones de ouvido sem os codecs AAC, aptX e LDAC","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Antes de ler este artigo, \u00e9 recomend\u00e1vel revisar o artigo anterior: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/427997\/\">\u00c1udio via Bluetooth: detalhes sobre perfis, codecs e dispositivos<\/a><\/noindex><\/i><\/p>\n<p>Alguns usu\u00e1rios de fones de ouvido sem fio relatam baixa qualidade sonora e falta de agudos ao utilizar o codec Bluetooth padr\u00e3o SBC, que \u00e9 suportado por todos os dispositivos de \u00e1udio. Uma recomenda\u00e7\u00e3o comum para melhorar a qualidade do som \u00e9 adquirir dispositivos e fones que suportem os codecs aptX e LDAC. Esses codecs exigem royalties, portanto, dispositivos que os suportam tendem a ser mais caros.<\/p>\n<p>Aparentemente, a baixa qualidade do SBC \u00e9 causada por limita\u00e7\u00f5es artificiais dos stacks Bluetooth e das configura\u00e7\u00f5es dos fones, e essa limita\u00e7\u00e3o pode ser contornada em qualquer dispositivo existente, por meio de altera\u00e7\u00f5es de software no smartphone ou computador.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Codec SBC<\/h2>\n<p>O codec SBC possui v\u00e1rios par\u00e2metros diferentes que s\u00e3o acordados na fase de estabelecimento da conex\u00e3o. Entre eles:<\/p>\n<ul>\n<li>N\u00famero e tipo de canais: Joint Stereo, Stereo, Dual Channel, Mono;<\/li>\n<li>N\u00famero de faixas de frequ\u00eancia: 4 ou 8;<\/li>\n<li>N\u00famero de blocos por pacote: 4, 8, 12, 16;<\/li>\n<li>Algoritmo de distribui\u00e7\u00e3o de bits durante a quantiza\u00e7\u00e3o: Loudness, SNR;<\/li>\n<li>Valor m\u00e1ximo e m\u00ednimo do pool de bits utilizados na quantiza\u00e7\u00e3o (bitpool): normalmente, de 2 a 53.<\/li>\n<\/ul>\n<p>O dispositivo decodificador deve suportar qualquer combina\u00e7\u00e3o desses par\u00e2metros. O dispositivo codificador pode n\u00e3o implementar todos.<br \/>\nOs stacks Bluetooth existentes geralmente acordam o seguinte perfil: Joint Stereo, 8 faixas, 16 blocos, Loudness, bitpool 2..53. Este perfil codifica \u00e1udio a 44,1 kHz com uma taxa de bits de 328 kbps.<br \/>\nO par\u00e2metro bitpool afeta diretamente a taxa de bits dentro de um perfil: quanto maior, maior a taxa de bits, e, consequentemente, a qualidade.<br \/>\nNo entanto, o par\u00e2metro bitpool n\u00e3o est\u00e1 ligado a um perfil espec\u00edfico; a influ\u00eancia sobre a taxa de bits tamb\u00e9m \u00e9 em grande parte determinada por outros par\u00e2metros: tipo de canais, n\u00famero de faixas de frequ\u00eancia, n\u00famero de blocos. Aumentar a taxa de bits pode ser feito indiretamente, acordando perfis n\u00e3o padr\u00e3o, sem alterar o bitpool.<\/p>\n<p><img decoding=\"async\" alt=\"Modificamos a pilha Bluetooth para melhorar o som em fones de ouvido sem os codecs AAC, aptX e LDAC\" src=\"\/wp-content\/uploads\/2019\/06\/4836fdb65b1204173bd6e01ef2d0cc6c.svg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\n<i>F\u00f3rmula para calcular a taxa de bits do SBC<\/i><\/p>\n<p>\nPor exemplo, o modo Dual Channel codifica os canais separadamente, utilizando todo o bitpool para cada um deles. For\u00e7ando o dispositivo a usar Dual Channel em vez de Joint Stereo, alcan\u00e7amos quase o dobro da taxa de bits com o mesmo valor m\u00e1ximo de bitpool: 617 kbps.<br \/>\nNa minha opini\u00e3o, a utiliza\u00e7\u00e3o de um valor de bitpool n\u00e3o associado ao perfil na fase de negocia\u00e7\u00e3o \u00e9 uma falha do padr\u00e3o A2DP, que levou a uma limita\u00e7\u00e3o artificial da qualidade SBC. Seria mais sensato negociar a taxa de bits, e n\u00e3o o bitpool.<\/p>\n<p>Esses valores fixos de Bitpool e Bitrate t\u00eam origem em uma tabela com valores recomendados para \u00e1udio de alta qualidade. Mas uma recomenda\u00e7\u00e3o n\u00e3o \u00e9 motivo para se limitar a esses valores.<\/p>\n<p><img decoding=\"async\" alt=\"Modificamos a pilha Bluetooth para melhorar o som em fones de ouvido sem os codecs AAC, aptX e LDAC\" src=\"\/wp-content\/uploads\/2019\/06\/1076b610245c4bcb88e5812bdea27e60.svg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA especifica\u00e7\u00e3o A2DP v1.2, que esteve ativa de 2007 a 2015, exige que todos os dispositivos decodificadores funcionem corretamente com taxas de bits de at\u00e9 512 kbit\/s:<\/p>\n<blockquote><p>O decodificador do SNK deve suportar todos os valores de bitpool poss\u00edveis que n\u00e3o resulte em excesso da taxa m\u00e1xima de bits. Este perfil limita a taxa m\u00e1xima de bits dispon\u00edvel a 320kb\/s para mono e 512kb\/s para modos de dois canais.<\/p><\/blockquote>\n<p>Na nova vers\u00e3o da especifica\u00e7\u00e3o, a limita\u00e7\u00e3o de taxa de bits foi removida. Suppose-se que fones de ouvido modernos, lan\u00e7ados ap\u00f3s 2015 e que suportam EDR, possam suportar taxas de bits de at\u00e9 \u2248730 kbit\/s.<\/p>\n<p>Por algum motivo, as pilhas Bluetooth do Linux (PulseAudio), Android, Blackberry e macOS que verifiquei t\u00eam limita\u00e7\u00f5es artificiais no valor m\u00e1ximo do par\u00e2metro bitpool, que impacta diretamente na taxa m\u00e1xima de bits. Mas isso n\u00e3o \u00e9 o maior problema, quase todos os fones de ouvido tamb\u00e9m limitam o valor m\u00e1ximo de bitpool a 53.<br \/>\nComo j\u00e1 constatei, a maioria dos dispositivos funciona perfeitamente em uma pilha Bluetooth modificada com uma taxa de bits de 551 kbit\/s, sem interrup\u00e7\u00f5es ou estalos. Mas essa taxa de bits nunca ser\u00e1 negociada em condi\u00e7\u00f5es normais, em pilhas Bluetooth convencionais.<\/p>\n<h2>Modificando a pilha Bluetooth<\/h2>\n<p>Em qualquer pilha Bluetooth compat\u00edvel com o padr\u00e3o A2DP, existe suporte para o modo Dual Channel, mas ativ\u00e1-lo atrav\u00e9s da interface n\u00e3o \u00e9 poss\u00edvel.<\/p>\n<p>Vamos adicionar um interruptor \u00e0 interface! Eu fiz patches para Android 8.1 e Android 9, que adicionam suporte total ao Dual Channel na pilha, adicionam o modo ao menu de altern\u00e2ncia nos tools de desenvolvedor e tratam SBC com suporte a Dual Channel como se fosse um codec adicional, como aptX, AAC ou LDAC (o Android chama isso de HD Audio), adicionando uma op\u00e7\u00e3o nas configura\u00e7\u00f5es do dispositivo Bluetooth. Veja como \u00e9:<\/p>\n<p><img decoding=\"async\" alt=\"Modificamos a pilha Bluetooth para melhorar o som em fones de ouvido sem os codecs AAC, aptX e LDAC\" src=\"\/wp-content\/uploads\/2019\/06\/5f14e2955f1dcaefa8ddc4b8fa413de1.svg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/review.lineageos.org\/q\/topic:bt-sbc-hd-dualchannel-pie+(status:open%20OR%20status:merged)\">Patch para Android 9<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/review.lineageos.org\/q\/topic:bt-sbc-hd-dualchannel+(status:open%20OR%20status:merged)\">Patch para Android 8.1<\/a><\/noindex><\/p>\n<p>Ao ativar a op\u00e7\u00e3o, o \u00e1udio Bluetooth come\u00e7a a ser transmitido com uma taxa de bits de <b>551 kbit\/s<\/b>, se os fones de ouvido suportarem uma conex\u00e3o a 3 Mbit\/s, ou <b>452 kbit\/s<\/b>, se os fones de ouvido suportarem apenas 2 mbit\/s.<\/p>\n<p>Este patch est\u00e1 inclu\u00eddo nas seguintes firmwares alternativas:<\/p>\n<ul>\n<li><b>LineageOS<\/b><\/li>\n<li><b>Resurrection Remix<\/b><\/li>\n<li><b>crDroid<\/b><\/li>\n<\/ul>\n<h2>De onde vieram 551 e 452 kbit\/s?<\/h2>\n<p>A tecnologia de divis\u00e3o de canal no Bluetooth \u00e9 projetada para transmiss\u00e3o eficiente de grandes pacotes de tamanho fixo. A transmiss\u00e3o de dados ocorre em slots, sendo o maior n\u00famero de slots enviados em uma \u00fanica transmiss\u00e3o \u2014 5. Existem tamb\u00e9m modos de transmiss\u00e3o que utilizam 1 ou 3 slots, mas n\u00e3o 2 ou 4. Nos 5 slots, \u00e9 poss\u00edvel transmitir at\u00e9 679 bytes a uma velocidade de conex\u00e3o de 2 mbit\/s e at\u00e9 1021 bytes a uma velocidade de 3 mbit\/s, enquanto que em 3 slots s\u00e3o 367 e 552 bytes, respectivamente.<\/p>\n<p><img decoding=\"async\" alt=\"Modificamos a pilha Bluetooth para melhorar o som em fones de ouvido sem os codecs AAC, aptX e LDAC\" src=\"\/wp-content\/uploads\/2019\/06\/c4596cb8ebdbaf2b57e201117e640f2f.svg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSe quisermos transmitir menos dados do que 679 ou 1021 bytes, mas mais do que 367 ou 552 bytes, a transmiss\u00e3o ainda ocupar\u00e1 5 slots, e os dados ser\u00e3o transmitidos no mesmo tempo, o que reduz a efici\u00eancia da transmiss\u00e3o.<\/p>\n<p><img decoding=\"async\" alt=\"Modificamos a pilha Bluetooth para melhorar o som em fones de ouvido sem os codecs AAC, aptX e LDAC\" src=\"\/wp-content\/uploads\/2019\/06\/c9b0645c78d41d7d3a9879930c091d2a.svg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSBC em modo Dual Channel, com \u00e1udio a 44100 Hz com par\u00e2metros Bitpool 38, 16 blocos por quadro, 8 faixas de frequ\u00eancia, codifica o \u00e1udio em quadros de 164 bytes, com uma taxa de bits de 452 kbit\/s.<br \/>\nO \u00e1udio deve ser encapsulado em protocolos de transmiss\u00e3o L2CAP e AVDTP, que consomem 16 bytes da carga \u00fatil de \u00e1udio.<\/p>\n<p><img decoding=\"async\" alt=\"Modificamos a pilha Bluetooth para melhorar o som em fones de ouvido sem os codecs AAC, aptX e LDAC\" src=\"\/wp-content\/uploads\/2019\/06\/2fd899e7b521497844e1354ae5f825eb.svg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Dessa forma, em uma transmiss\u00e3o Bluetooth com 5 slots, conseguimos acomodar 4 quadros de \u00e1udio:<\/p>\n<pre><code class=\"plaintext\">679 (EDR 2 mbit\/s DH5) - 4 (L2CAP) - 12 (AVDTP\/RTP) - 1 (cabe\u00e7alho SBC) - (164*4) = 6<\/code><\/pre>\n<p>\nConseguimos colocar 11,7 ms de dados de \u00e1udio no pacote enviado, que ser\u00e1 transmitido em 3,75 ms, e temos 6 bytes n\u00e3o utilizados no pacote.<br \/>\nSe aumentarmos um pouco o bitpool, 4 quadros de \u00e1udio j\u00e1 n\u00e3o poder\u00e3o ser empacotados em um \u00fanico pacote. Teremos que enviar 3 quadros por vez, o que reduz a efici\u00eancia da transmiss\u00e3o, diminui a quantidade de \u00e1udio transmitido em um \u00fanico pacote e resultar\u00e1 em gagueiras rapidamente sob condi\u00e7\u00f5es de r\u00e1dio ruins.<\/p>\n<p>Da mesma forma, a taxa de bits de 551 kbit\/s foi escolhida para EDR 3 mbit\/s: com Bitpool 47, 16 blocos por quadro, 8 faixas de frequ\u00eancia, o tamanho do quadro \u00e9 de 200 bytes, com taxa de bits de 551 kbit\/s. Em um \u00fanico pacote cabem 5 quadros ou 14,6 ms de m\u00fasica.<\/p>\n<p>O algoritmo para calcular todos os par\u00e2metros do SBC \u00e9 bastante complexo, podendo ser f\u00e1cil se confundir ao contar manualmente, por isso fiz uma calculadora interativa para ajudar os interessados: <noindex><a rel=\"nofollow\" href=\"https:\/\/btcodecs.valdikss.org.ru\/sbc-bitrate-calculator\/\">btcodecs.valdikss.org.ru\/sbc-bitrate-calculator<\/a><\/noindex><\/p>\n<h2>Para que tudo isso serve?<\/h2>\n<p>Ao contr\u00e1rio da cren\u00e7a popular sobre a qualidade de som do codec aptX, em alguns arquivos, ele pode apresentar resultados piores do que o SBC com uma taxa de bits padr\u00e3o de 328 kbps.<\/p>\n<p>O SBC aloca dinamicamente os bits de quantiza\u00e7\u00e3o para as faixas de frequ\u00eancia, operando sob o princ\u00edpio de \"de baixo para cima\". Se toda a taxa de bits for utilizada nas frequ\u00eancias baixas e m\u00e9dias, as frequ\u00eancias altas ser\u00e3o \"cortadas\" (em vez delas, haver\u00e1 sil\u00eancio).<br \/>\nO aptX quantiza as faixas de frequ\u00eancia com a mesma quantidade de bits de forma constante, o que resulta em uma taxa de bits fixa: 352 kbps para 44,1 kHz, 384 kbps para 48 kHz, e ele n\u00e3o pode \"transferir bits\" para as frequ\u00eancias que mais precisam. Ao contr\u00e1rio do SBC, o aptX n\u00e3o \"corta\" as frequ\u00eancias, mas adiciona a elas ru\u00eddos de quantiza\u00e7\u00e3o, reduzindo o alcance din\u00e2mico do \u00e1udio e, \u00e0s vezes, introduzindo estalos caracter\u00edsticos. O SBC, por sua vez, \"remove detalhes\" - descartando as partes mais silenciosas.<br \/>\nEm m\u00e9dia, em compara\u00e7\u00e3o com o SBC 328k, o aptX introduz menos distor\u00e7\u00f5es na m\u00fasica com uma ampla faixa de frequ\u00eancia, mas em m\u00fasicas com uma faixa de frequ\u00eancia estreita e um amplo alcance din\u00e2mico, o SBC 328k \u00e0s vezes sai ganhando.<\/p>\n<p>Consideremos um caso espec\u00edfico. A espectrograma de uma grava\u00e7\u00e3o de piano:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/er\/nq\/rc\/ernqrcwa0ic5mqwopjg5zbu_fxm.png\"><img decoding=\"async\" alt=\"Modificamos a pilha Bluetooth para melhorar o som em fones de ouvido sem os codecs AAC, aptX e LDAC\" src=\"\/wp-content\/uploads\/2019\/06\/91247edc12764c6a4985e5a58ec1ad81.svg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>A maior energia est\u00e1 nas frequ\u00eancias de 0 a 4 kHz, e se estende at\u00e9 10 kHz.<br \/>\nO espectrograma de um arquivo comprimido em aptX \u00e9 o seguinte:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/dl\/bl\/do\/dlbldoq_rdrjykephl2ostfbafk.png\"><img decoding=\"async\" alt=\"Modificamos a pilha Bluetooth para melhorar o som em fones de ouvido sem os codecs AAC, aptX e LDAC\" src=\"\/wp-content\/uploads\/2019\/06\/aad46eb446ac9c5cffbd0ce8bd11e45b.svg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>E assim se apresenta o SBC 328k.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/us\/3m\/ke\/us3mke0av1s_1ezkyk6ycq1g2vo.png\"><img decoding=\"async\" alt=\"Modificamos a pilha Bluetooth para melhorar o som em fones de ouvido sem os codecs AAC, aptX e LDAC\" src=\"\/wp-content\/uploads\/2019\/06\/1b879741ea109c10c9e94a9a17830fc6.svg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>\u00c9 vis\u00edvel que o SBC 328k desativou periodicamente completamente a faixa acima de 16 kHz, utilizando toda a taxa de bits dispon\u00edvel nas faixas abaixo deste valor. No entanto, o aptX introduziu mais distor\u00e7\u00f5es no espectro de frequ\u00eancias aud\u00edveis ao ouvido humano, como pode ser visto no espectrograma original subtra\u00eddo do espectrograma aptX (quanto mais brilhante, mais distor\u00e7\u00f5es):<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ug\/-i\/5z\/ug-i5zpihrfnvumf9no_glecqna.png\"><img decoding=\"async\" alt=\"Modificamos a pilha Bluetooth para melhorar o som em fones de ouvido sem os codecs AAC, aptX e LDAC\" src=\"\/wp-content\/uploads\/2019\/06\/7820015a2ef3c7f97802de179f2201eb.svg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Enquanto o SBC 328k prejudicou menos o sinal na faixa de 0 a 10 kHz, e o restante foi cortado:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/tf\/x8\/7z\/tfx87z8hpenx51spblrfvkc-ihe.png\"><img decoding=\"async\" alt=\"Modificamos a pilha Bluetooth para melhorar o som em fones de ouvido sem os codecs AAC, aptX e LDAC\" src=\"\/wp-content\/uploads\/2019\/06\/793e3011a6aa07f1750cf0a5cca204cf.svg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>A taxa de bits de 485k do SBC foi suficiente para preservar toda a faixa de frequ\u00eancias, sem desativar faixas.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/_c\/mc\/xy\/_cmcxyxwlf7u4tv-rbplwk5bmtu.png\"><img decoding=\"async\" alt=\"Modificamos a pilha Bluetooth para melhorar o som em fones de ouvido sem os codecs AAC, aptX e LDAC\" src=\"\/wp-content\/uploads\/2019\/06\/27f215a26658b9b2bf3d852f4da96740.svg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>O SBC 485k nesta composi\u00e7\u00e3o supera significativamente o aptX na faixa de 0-15 kHz, e com uma diferen\u00e7a menor, mas ainda percept\u00edvel - de 15-22 kHz (quanto mais escuro, menos distor\u00e7\u00f5es):<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/e-\/qz\/h8\/e-qzh8azmingcbhvuwxj8iptuau.png\"><img decoding=\"async\" alt=\"Modificamos a pilha Bluetooth para melhorar o som em fones de ouvido sem os codecs AAC, aptX e LDAC\" src=\"\/wp-content\/uploads\/2019\/06\/b65c37703ee677f561929ba714ed19ec.svg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/files.catbox.moe\/kpx711.zip\">Arquivos de \u00e1udio originais, SBC e aptX<\/a><\/noindex>.<\/p>\n<p>Ao mudar para um SBC de alta taxa de bits, voc\u00ea obter\u00e1 um som que muitas vezes supera o aptX em qualquer fone de ouvido. Em fones de ouvido que suportam conex\u00e3o EDR de 3 Mbps, a taxa de bits de 551 kbps proporciona um som compar\u00e1vel ao aptX HD.<\/p>\n<h2>E \u00e9 poss\u00edvel ainda mais?<\/h2>\n<p>O patch para Android tamb\u00e9m possui uma op\u00e7\u00e3o para aumentar ainda mais a taxa de bits para dispositivos EDR 2 Mbps. \u00c9 poss\u00edvel aumentar a taxa de bits de 452 kbps para 595 kbps, embora isso possa reduzir a estabilidade da transmiss\u00e3o em condi\u00e7\u00f5es de r\u00e1dio dif\u00edceis.<br \/>\nBasta definir a vari\u00e1vel persist.bluetooth.sbc_hd_higher_bitrate como 1:<\/p>\n<pre><code class=\"plaintext\"># setprop persist.bluetooth.sbc_hd_higher_bitrate 1<\/code><\/pre>\n<p>\nO patch para taxa de bits extrema foi aceito apenas no LineageOS 15.1, mas n\u00e3o na 16.0.<\/p>\n<h2>Compatibilidade com dispositivos<\/h2>\n<p>O SBC Dual Channel \u00e9 suportado praticamente por todos os fones de ouvido, alto-falantes e sistemas de som automotivos. Isso n\u00e3o \u00e9 surpresa \u2014 o padr\u00e3o exige suporte em quaisquer dispositivos de decodifica\u00e7\u00e3o. H\u00e1 um pequeno n\u00famero de dispositivos onde esse modo causa problemas, mas s\u00e3o casos isolados.<br \/>\nPara mais detalhes sobre dispositivos compat\u00edveis, consulte <noindex>4pda<\/noindex> ou <noindex><a rel=\"nofollow\" href=\"https:\/\/forum.xda-developers.com\/android\/software-hacking\/improve-bluetooth-audio-quality-t3832615\">xda-developers<\/a><\/noindex>.<\/p>\n<h2>Compara\u00e7\u00e3o de diferen\u00e7as de som<\/h2>\n<p>Criei um servi\u00e7o web que codifica \u00e1udio em SBC (assim como aptX e aptX HD) em tempo real, diretamente no navegador. Com ele, voc\u00ea poder\u00e1 comparar o som de v\u00e1rios perfis SBC e outros codecs, sem transmiss\u00e3o real de \u00e1udio via Bluetooth, em quaisquer fones de ouvido com fio, alto-falantes e sua m\u00fasica favorita, al\u00e9m de ajustar as configura\u00e7\u00f5es de codifica\u00e7\u00e3o durante a reprodu\u00e7\u00e3o do \u00e1udio.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/btcodecs.valdikss.org.ru\/sbc-encoder\/\">btcodecs.valdikss.org.ru\/sbc-encoder<\/a><\/noindex><\/p>\n<h2>Contato com os desenvolvedores do Android<\/h2>\n<p>Entrei em contato com diversos desenvolvedores do stack Bluetooth do Google, pedindo para considerar a inclus\u00e3o dos patches na ramifica\u00e7\u00e3o principal do Android \u2014 AOSP, mas n\u00e3o recebi resposta. Meus patches em <noindex><a rel=\"nofollow\" href=\"https:\/\/android-review.googlesource.com\/q\/topic:bt-sbc-hd-dualchannel+(status:open%20OR%20status:merged)\">sistema de gerenciamento de patches Gerrit para Android<\/a><\/noindex> tamb\u00e9m n\u00e3o tiveram coment\u00e1rios de ningu\u00e9m envolvido.<br \/>\nFicaria feliz se pudesse ser ajudado a entrar em contato com os desenvolvedores do Google e implementar o SBC HD no Android. O patch no Gerrit j\u00e1 est\u00e1 desatualizado (\u00e9 uma das vers\u00f5es iniciais), e eu o atualizarei se os desenvolvedores se interessarem pelas minhas altera\u00e7\u00f5es (n\u00e3o \u00e9 f\u00e1cil para mim atualiz\u00e1-lo, n\u00e3o tenho dispositivos compat\u00edveis com Android Q).<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>Usu\u00e1rios de smartphones com ROMs LineageOS, Resurrection Remix e crDroid j\u00e1 podem desfrutar de melhor qualidade de som agora, basta ativar a op\u00e7\u00e3o nas configura\u00e7\u00f5es do dispositivo Bluetooth. Usu\u00e1rios de Linux tamb\u00e9m podem obter uma taxa de bits SBC aumentada, instalando <noindex><a rel=\"nofollow\" href=\"https:\/\/lists.freedesktop.org\/archives\/pulseaudio-discuss\/2019-June\/031168.html\">o patch de Pali Roh\u00e1r<\/a><\/noindex>, que, entre outras coisas, adiciona suporte para os codecs aptX, aptX HD e FastStream.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/455316\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439: \u0410\u0443\u0434\u0438\u043e \u0447\u0435\u0440\u0435\u0437 Bluetooth: \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u0445, \u043a\u043e\u0434\u0435\u043a\u0430\u0445 \u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u0445 \u043d\u0430\u0443\u0448\u043d\u0438\u043a\u043e\u0432 \u043e\u0442\u043c\u0435\u0447\u0430\u044e\u0442 \u043d\u0438\u0437\u043a\u043e\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0432\u0443\u043a\u0430 \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u0432\u044b\u0441\u043e\u043a\u0438\u0445 \u0447\u0430\u0441\u0442\u043e\u0442 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e Bluetooth-\u043a\u043e\u0434\u0435\u043a\u0430 SBC, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0432\u0441\u0435 \u0430\u0443\u0434\u0438\u043e\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0427\u0430\u0441\u0442\u043e\u0439 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0435\u0439 \u0434\u043b\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0437\u0432\u0443\u043a\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043a\u0443\u043f\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438 \u043d\u0430\u0443\u0448\u043d\u0438\u043a\u043e\u0432 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043a\u043e\u0434\u0435\u043a\u043e\u0432 aptX \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35159","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439: \u0410\u0443\u0434\u0438\u043e \u0447\u0435\u0440\u0435\u0437 Bluetooth: \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u0445, \u043a\u043e\u0434\u0435\u043a\u0430\u0445 \u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/modifitsiruem-bluetooth-stek-dlya-uluchsheniya-zvuka-na-naushnikah-bez-kodekov-aac-aptx-i-ldac\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c Bluetooth-\u0441\u0442\u0435\u043a \u0434\u043b\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0437\u0432\u0443\u043a\u0430 \u043d\u0430 \u043d\u0430\u0443\u0448\u043d\u0438\u043a\u0430\u0445 \u0431\u0435\u0437 \u043a\u043e\u0434\u0435\u043a\u043e\u0432 AAC, aptX \u0438 LDAC | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439: \u0410\u0443\u0434\u0438\u043e \u0447\u0435\u0440\u0435\u0437 Bluetooth: \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u0445, \u043a\u043e\u0434\u0435\u043a\u0430\u0445 \u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/modifitsiruem-bluetooth-stek-dlya-uluchsheniya-zvuka-na-naushnikah-bez-kodekov-aac-aptx-i-ldac\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:02:38+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:02:38+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Modificamos a pilha Bluetooth para melhorar o som dos fones de ouvido sem os codecs AAC, aptX e LDAC | ProHoster","description":"Antes de ler este artigo, \u00e9 recomendado que voc\u00ea se familiarize com o artigo anterior: \u00c1udio via Bluetooth: o que voc\u00ea precisa saber sobre perfis, codecs e mais.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/modifitsiruem-bluetooth-stek-dlya-uluchsheniya-zvuka-na-naushnikah-bez-kodekov-aac-aptx-i-ldac","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c Bluetooth-\u0441\u0442\u0435\u043a \u0434\u043b\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0437\u0432\u0443\u043a\u0430 \u043d\u0430 \u043d\u0430\u0443\u0448\u043d\u0438\u043a\u0430\u0445 \u0431\u0435\u0437 \u043a\u043e\u0434\u0435\u043a\u043e\u0432 AAC, aptX \u0438 LDAC | ProHoster","og:description":"\u041f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439: \u0410\u0443\u0434\u0438\u043e \u0447\u0435\u0440\u0435\u0437 Bluetooth: \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u0445, \u043a\u043e\u0434\u0435\u043a\u0430\u0445 \u0438.","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/modifitsiruem-bluetooth-stek-dlya-uluchsheniya-zvuka-na-naushnikah-bez-kodekov-aac-aptx-i-ldac","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:02:38+00:00","article:modified_time":"2019-10-31T19:02:38+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35159","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 22:08:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:47:35","updated":"2026-01-21 22:08:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/35159","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=35159"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/35159\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=35159"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=35159"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=35159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}