

We now offer a subscription for just 10 cents a day**h1>
You will always enjoy the full version of Mp4Gain with all its features and benefits.
For just 10 cents a day*
*Unlimited FULL version of Mp4Gain, billed $US12.50 Quarterly (+ $5 USD one time subscription payment JUST in the first payment).
All other payments will be just $3.12 per month, billed quaterly.
That's only 10 cents per day!
CLICK TO PURCHASE
THIS PRICE ONLY LASTS FOR A FEW DAYS
For just 10 cents a day*
Aanpassing van de Bluetooth-stack om het geluid in hoofdtelefoons te verbeteren zonder AAC-, aptX- en LDAC-codecs

Sommige gebruikers van draadloze hoofdtelefoons merken een slechte geluidskwaliteit en een gebrek aan hoge frequenties bij gebruik van de Bluetooth SBC-standaardcodec, die door alle audioapparaten wordt ondersteund. Een algemene aanbeveling voor het verbeteren van geluid is om apparaten en koptelefoons te kopen die aptX- en LDAC-codecs ondersteunen. Deze codecs vereisen licentiekosten, dus de apparaten die ze ondersteunen, zijn duurder.

Het blijkt dat de slechte kwaliteit van de SBC te wijten is aan kunstmatige beperkingen van de Bluetooth-stacks en de hoofdtelefoonconfiguratie, en deze beperking kan op elk bestaand apparaat worden vermeden door softwarewijzigingen op de smartphone of computer.
SBC-codec
De SBC-codec heeft veel verschillende parameters waarover wordt onderhandeld tijdens de fase van het tot stand brengen van de verbinding. Onder hen:
Aantal en type kanalen: Joint Stereo, Stereo, Dual Channel, Mono;
Aantal frequentiebanden: 4 of 8;
Aantal blokken in een pakket: 4, 8, 12, 16;
Algoritme voor kwantisering van bits: luidheid, SNR;
De maximum- en minimumwaarde van de groep bits die wordt gebruikt voor kwantisering (groep bits): gewoonlijk 2 tot 53.
De decoder MOET elke combinatie van deze parameters ondersteunen. De encoder doet mogelijk niet alles.
Bestaande Bluetooth-stacks komen over het algemeen overeen met het volgende profiel: stereoset, 8 banden, 16 blokken, Loudness, bitpool 2..53. Dit profiel codeert 44,1 kHz audio met 328 kbps.
De bitpoolparameter heeft rechtstreeks invloed op de bitsnelheid binnen een profiel: hoe hoger deze is, hoe hoger de bitsnelheid en dus de kwaliteit.
De bitpoolparameter is echter niet aan een specifiek profiel gebonden; Andere parameters hebben ook een aanzienlijke invloed op de bitsnelheid: het type kanalen, het aantal frequentiebanden, het aantal blokken. U kunt de bitrate indirect verhogen door overeenstemming te bereiken over niet-standaardprofielen zonder de bitgroep te wijzigen.
Berekeningsformule voor SBC-bitsnelheid
De tweekanaalsmodus codeert bijvoorbeeld kanalen afzonderlijk met behulp van de volledige bitset voor elk kanaal. Door het apparaat te dwingen Dual Channel te gebruiken in plaats van Joint Stereo, krijgen we bijna het dubbele van de bitrate met dezelfde maximale bitpoolwaarde: 617 kbps.
Naar mijn mening is het gebruik van een niet-geprofileerde bitpool-waarde in de onderhandelingsfase een fout in de A2DP-standaard, wat leidde tot een kunstmatige beperking van de SBC-kwaliteit. Het zou verstandiger zijn om het eens te worden over de bitrate in plaats van over de bitgroep.
Deze vaste bitpool- en bitrate-waarden zijn afkomstig uit de tabel met aanbevolen waarden voor audio van hoge kwaliteit. Maar de aanbeveling is geen reden om je tot deze waarden te beperken.
SBC Bluetooth-profieltabel
De A2DP v1.2-specificatie, die actief was van 2007 tot 2015, vereist dat alle decodeerapparaten correct werken met bitsnelheden tot 512 kbps:
De SNK-decoder ondersteunt alle mogelijke waarden van de bitcombinatie die de maximale bitsnelheid niet overschrijden. Dit profiel beperkt de maximale beschikbare bitsnelheid tot 320 kb / s voor mono en 512 kb / s voor tweekanaalsmodi.
In de nieuwe versie van de specificatie is er geen beperking van de bitsnelheid. Moderne hoofdtelefoons die na 2015 zijn uitgebracht en die EDR ondersteunen, zouden bitsnelheden tot ≈730 kbps moeten kunnen ondersteunen.
Om welke reden dan ook, de Bluetooth-stacks die ik heb getest voor Linux (PulseAudio), Android, Blackberry en macOS hebben kunstmatige limieten voor de maximale waarde van de bitpool-parameter, die rechtstreeks van invloed is op de maximale bitrate. Maar dit is niet het grootste probleem, bijna alle koptelefoons beperken ook de maximale bitpoolwaarde tot 53.
Zoals ik al heb gezien, werken de meeste apparaten prima op een gemodificeerde Bluetooth-stack met een bitsnelheid van 551 kbps, zonder uitval of gekraak. Maar die bitrate zou onder normale omstandigheden nooit constant zijn, in normale Bluetooth-stacks.
Wijzig de Bluetooth-stack
Elke Bluetooth-stack die compatibel is met de A2DP-standaard ondersteunt de tweekanaalsmodus, maar kan niet worden geactiveerd vanaf de interface.
Laten we een schakelaar aan de interface toevoegen! Ik heb patches gemaakt voor Android 8.1 en Android 9 die volledige dual channel-ondersteuning aan de stack toevoegen, modus toevoegen aan het modusschakelaarmenu in ontwikkelaarstools en dual-channel SBC’s behandelen alsof ze een extra codec zijn, zoals aptX, AAC of LDAC (Android noemt het HD Audio) door een vinkje toe te voegen aan de Bluetooth-apparaatinstellingen.
