
A causa della produzione di massa di smartphone privi di jack audio da 3,5 mm, le cuffie wireless Bluetooth sono diventate per molti il modo principale di ascoltare musica e comunicare in modalità auricolare.
I produttori di dispositivi wireless non sempre forniscono specifiche dettagliate sui prodotti, e gli articoli sull'audio Bluetooth disponibili online sono spesso contraddittori, a volte scorretti, non spiegano tutte le caratteristiche e spesso copiano le stesse informazioni non corrispondenti alla realtà.
Cerchiamo di chiarire il protocollo, le possibilità degli stack Bluetooth dei sistemi operativi, delle cuffie e degli altoparlanti, dei codec Bluetooth per musica e voce, scoprendo cosa influisce sulla qualità del suono trasmesso e sul ritardo, imparando a raccogliere e decodificare informazioni sui codec supportati e sulle altre capacità dei dispositivi.
TL;DR:
- SBC è un codec normale
- Le cuffie hanno un equalizzatore e un post-processing per ogni codec separatamente
- aptX non è così buono come dicono i comunicati pubblicitari
- LDAC è una sciocchezza di marketing
- La qualità del suono durante le conversazioni è ancora bassa
- Negli browser possono essere integrati encoder audio in C, compilati in WebAssembly tramite emscripten, e non rallenteranno particolarmente.
Musica tramite Bluetooth
La componente funzionale del Bluetooth è definita dai profili, specifiche per funzioni specifiche. La trasmissione della musica tramite Bluetooth avviene utilizzando il profilo di trasmissione audio di alta qualità unidirezionale A2DP. Lo standard A2DP è stato adottato nel 2003 e da allora non è cambiato in modo significativo.
Nell'ambito del profilo sono standardizzati 1 codec obbligatorio a bassa complessità di calcolo, SBC, creato appositamente per Bluetooth, e 3 aggiuntivi. Sono anche consentiti codec non documentati di implementazione proprietaria.
A partire da giugno 2019 ci troviamo con 14 codec A2DP:
- SBC ← standardizzato in A2DP, supportato da tutti i dispositivi
- MPEG-1/2 Layer 1/2/3 ← standardizzati in A2DP: il ben noto , utilizzato nella TV digitale , e l'ignoto
- MPEG-2/4 AAC ← standardizzato in A2DP
- ATRAC ← vecchio codec di Sony, standardizzato in A2DP
- LDAC ← nuovo codec di Sony
- aptX ← codec del 1988
- aptX HD ← lo stesso di aptX, solo con parametri di codifica diversi
- aptX Low Latency ← codec completamente diverso, non c'è implementazione software
- aptX Adaptive ← un altro codec di Qualcomm
- FastStream ← pseudo-codec, modifica bidirezionale di SBC
- HWA LHDC ← nuovo codec di Huawei
- Samsung HD ← supportato da 2 dispositivi
- Samsung Scalable ← supportato da 2 dispositivi
- Samsung UHQ-BT ← supportato da 3 dispositivi
Perché servono i codec, vi chiederete, quando in Bluetooth è presente l'EDR, che consente di trasmettere dati a velocità di 2 e 3 Mbit/s, mentre per PCM stereo non compresso a 16 bit basta 1,4 Mbit/s?
Trasmissione dati tramite Bluetooth
In Bluetooth esistono due tipi di trasmissione dati: Asynchronous Connection Less (ACL) per la trasmissione asincrona senza stabilire una connessione, e Synchronous Connection Oriented (SCO), per la trasmissione sincrona con pre-accordo della connessione.
La trasmissione avviene utilizzando uno schema di suddivisione temporale e selezione del canale di trasmissione per ciascun pacchetto (Frequency-Hop/Time-Division-Duplex, FH/TDD), con time slot di 625 microsecondi chiamati slot. Un dispositivo trasmette nei numeri pari degli slot, l'altro in quelli dispari. Il pacchetto trasmesso può occupare 1, 3 o 5 slot, a seconda della dimensione dei dati e del tipo di trasmissione impostato; in questo caso, la trasmissione da un dispositivo avviene nei slot pari e dispari fino al termine della trasmissione. In un secondo, è possibile inviare e ricevere fino a 1600 pacchetti, se ognuno occupa 1 slot, e entrambi i dispositivi trasmettono e ricevono ininterrottamente.
2 e 3 Mbit/s per l'EDR, che si possono trovare negli annunci e sul sito di Bluetooth, sono la massima velocità di trasmissione su tutti i dati complessivamente (inclusi gli header tecnici di tutti i protocolli, nei quali i dati devono essere incapsulati), in entrambe le direzioni contemporaneamente. La velocità effettiva di trasmissione dati varierà notevolmente.
Per la trasmissione di musica viene utilizzato un metodo asincrono, quasi sempre tramite pacchetti di tipo 2-DH5 e 3-DH5, che portano la massima quantità di dati in modalità EDR a 2 Mbit/s e 3 Mbit/s rispettivamente, e occupano 5 slot di suddivisione temporale.
Rappresentazione schematica della trasmissione utilizzando 5 slot da un dispositivo e 1 slot dall'altro (DH5/DH1):

A causa del principio di separazione del canale temporale, dobbiamo attendere un intervallo di tempo di 625 microsecondi dopo la trasmissione di un pacchetto, se il secondo dispositivo non trasmette nulla o trasmette un pacchetto ridotto, e un tempo maggiore se il secondo dispositivo trasmette grandi pacchetti. Se più di un dispositivo è collegato al telefono (ad esempio, auricolari, orologi e bracciali fitness), il tempo di trasmissione viene suddiviso tra tutti.
La necessità di incapsulare l'audio in protocolli di trasporto speciali L2CAP e AVDTP sottrae 16 byte dalla massima quantità possibile di carico audio utile che può essere trasmessa.
Tipo di pacchetto
Numero di slot
Max. numero di byte nel pacchetto
Max. numero di byte di carico utile A2DP
Max. bitrate di carico utile A2DP
2-DH3
3
367
351
936 kbit/s
3-DH3
3
552
536
1429 kbit/s
2-DH5
5
679
663
1414 kbit/s
3-DH5
5
1021
1005
2143 kbit/s
1414 e 1429 kbit/s sono decisamente insufficienti per trasmettere audio non compresso in condizioni reali, con un'area di 2.4 GHz rumorosa e la necessità di trasmettere dati di controllo. L'EDR 3 Mbit/s è esigente in termini di potenza di trasmissione e rumori nell'aria, quindi, anche in modalità 3-DH5, la trasmissione Comfort PCM è impossibile, ci saranno interruzioni momentanee costanti e tutto funzionerà solo a una distanza di alcuni metri.
In pratica, anche il flusso audio a 990 kbit/s (LDAC 990 kbit/s) viene trasmesso con difficoltà.
Torniamo ai codec.
SBC
Codec obbligatorio per tutti i dispositivi che supportano lo standard A2DP. Il miglior e il peggior codec allo stesso tempo.
Frequenza di campionamento
Larghezza
Bitrate
Supporto per la codifica
Supporto per la decodifica
16, 32, 44.1, 48 kHz
16 bit
10-1500 kbit/s
Da tutti i dispositivi
Da tutti i dispositivi
SBC è un codec semplice e computazionalmente veloce, con un modello psicoacustico primitivo (applica solo il masking dei suoni silenziosi), che utilizza la modulazione di ampiezza impulsiva adattativa (APCM).
La specifica A2DP raccomanda l'uso di due profili: Qualità Media e Alta Qualità.

Il codec ha molte impostazioni che consentono di gestire la latenza algoritmica, il numero di campioni nel blocco, l'algoritmo di distribuzione dei bit, ma vengono quasi ovunque utilizzati gli stessi parametri raccomandati nella specifica: Joint Stereo, 8 bande di frequenza, 16 blocchi nel frame audio, metodo di distribuzione dei bit Loudness.
SBC supporta la modifica dinamica del parametro Bitpool, che influisce direttamente sul bitrate. Se la trasmissione radio è congestionata, i pacchetti vengono persi, o i dispositivi si trovano a grande distanza, la sorgente audio può ridurre il Bitpool finché la connessione non si normalizza.
I produttori della maggior parte delle cuffie impostano il valore massimo del parametro Bitpool a 53, limitando così il bitrate a 328 kilobit al secondo utilizzando il profilo raccomandato.
Anche se il produttore delle cuffie ha impostato un valore massimo di Bitpool superiore a 53 (modelli come: Beats Solo³, JBL Everest Elite 750NC, Apple AirPods, e anche alcuni ricevitori e autoradio), la maggior parte dei sistemi operativi non consentirà di utilizzare bitrate elevati a causa di un limite interno imposto negli stack Bluetooth.
Inoltre, alcuni produttori impostano un valore massimo di Bitpool basso per alcuni dispositivi. Ad esempio, per Bluedio T è 39, e per Samsung Gear IconX è 37, il che offre una scarsa qualità audio.
Le limitazioni artificiali imposte dagli sviluppatori degli stack Bluetooth sono probabilmente nate dall'incompatibilità di alcuni dispositivi con valori elevati di Bitpool o profili non standard, anche se dichiarano di supportarli, e dalla scarsa quantità di test durante la certificazione. Per gli autori degli stack Bluetooth era più semplice attenersi al profilo raccomandato piuttosto che creare basi di dispositivi difettosi (anche se ora lo fanno per altre funzioni non funzionanti).
SBC assegna dinamicamente bit di quantizzazione per bande di frequenza, agendo secondo il principio dal basso verso l'alto, con diversi coefficienti di peso. Se l'intero bitrate è utilizzato per frequenze basse e medie, le frequenze alte verranno "tagliate" (al loro posto ci sarà silenzio).
Esempio SBC 328 kbit/s. In alto — originale, in basso — SBC, si verifica occasionalmente un passaggio tra le tracce. Per l'audio nel file video viene utilizzato il codec di compressione lossless FLAC. L'uso di FLAC in un contenitore mp4 non è ufficialmente standardizzato, quindi non è garantito che il tuo browser lo riproduca, ma dovrebbe funzionare nelle ultime versioni di Chrome e Firefox desktop. Se non hai audio, puoi scaricare il file e aprirlo in un lettore video completo.
ZZ Top — Sharp Dressed Man
Nel momento di commutazione visibile nello spettrogramma: SBC taglia periodicamente i suoni più deboli sopra i 17,5 kHz e non evidenzia affatto i bit per la banda sopra i 20 kHz. Lo spettrogramma completo è disponibile con un clic (1,7 MB).
Non sento differenze tra l'originale e SBC in questo brano.
Prendiamo qualcosa di più recente e modelliamo l'audio che otterremmo usando le cuffie Samsung Gear IconX con Bitpool 37 (in alto - segnale originale, in basso - SBC 239 kbps, suono in FLAC).
Mindless Self Indulgence - Witness
Sento fruscii, un effetto stereo ridotto e un fastidioso 'ticchettio' della voce ad alte frequenze.
Sebbene SBC sia un codec molto flessibile, può essere configurato per basse latenze e offre un'eccellente qualità audio a bit rate elevati (452+ kbps) e abbastanza buona per la maggior parte delle persone con la qualità alta standard (328 kbps), poiché lo standard A2DP non stabilisce profili fissi (fornisce solo raccomandazioni), gli sviluppatori dei stack hanno imposto limitazioni artificiali al Bitpool, i parametri audio trasmessi non sono visualizzati nell'interfaccia utente, e i produttori di cuffie sono liberi di impostare le proprie configurazioni e non indicano mai il valore del Bitpool nelle specifiche tecniche del prodotto; il codec è diventato famoso per la bassa qualità audio, anche se non è un problema del codec in sé.
Il parametro Bitpool influisce direttamente sul bit rate solo all'interno di un profilo. Lo stesso valore di Bitpool 53 può dare sia un bit rate di 328 kbps nel profilo raccomandato High Quality, sia 1212 kbps con Dual Channel e 4 bande di frequenza, il che porta i progettisti dei sistemi operativi a imporre limitazioni non solo sul Bitpool, ma anche sul Bitrate. A mio avviso, questa situazione è emersa a causa di un difetto nello standard A2DP: sarebbe stato necessario concordare il bit rate e non il Bitpool.
Tabella di supporto delle funzionalità SBC in diversi sistemi operativi:
OS
Frequenze di campionamento supportate
Limitazione max. Bitpool
Limitazione max. Bitrate
Bitrate tipico
Regolazione dinamica del Bitpool
Windows 10
44.1 kHz
53
512 kbps
328 kbps
✓*
Linux (BlueZ + PulseAudio)
16, 32, 44.1, 48 kHz
64 (in caso di connessione in ingresso), 53 (in caso di uscita)
Nessuna limitazione
328 kbps
✓*
macOS High Sierra
44.1 kHz
64, di default 53***
Sconosciuto
328 kbps
✗
Android 4.4-9
44.1/48 kHz**
53
328 kbps
328 kbps
✗
Android 4.1-4.3.1
44.1, 48 kHz**
53
229 kbps
229 kbps
✗
Blackberry OS 10
48 kHz
53
Nessuna limitazione
328 kbps
✗
* Bitpool si riduce solo, ma non aumenta automaticamente in caso di miglioramento delle condizioni di trasmissione. Per ripristinare il Bitpool è necessario fermare la riproduzione, attendere un paio di secondi e riavviare l'audio.
** Il valore predefinito dipende dalle impostazioni dello stack specificate durante la compilazione del firmware. In Android 8/8.1 la frequenza è solo 44,1 kHz o 48 kHz, a seconda delle impostazioni di compilazione, mentre nelle altre versioni sono supportati sia 44,1 kHz che 48 kHz contemporaneamente.
*** Il valore del Bitpool può essere aumentato nell'app Bluetooth Explorer.
aptX e aptX HD
aptX è un codec semplice e computazionalmente veloce, senza psicoacustica, che utilizza la modulazione di impulsi differenziali adattiva (). Introdotto circa nel 1988 (data di deposito datata febbraio 1988), prima di Bluetooth veniva utilizzato principalmente in apparecchiature audio wireless professionali. Attualmente è di proprietà di Qualcomm, richiede licenze e pagamenti di royalty. A partire dal 2014: $6000 una tantum e circa $1 per ogni dispositivo, per lotti fino a 10000 dispositivi (, p. 16).
aptX e aptX HD sono lo stesso codec, con profili di codifica diversi.
Il codec ha solo un parametro: la scelta della frequenza di campionamento. C'è anche, a dire il vero, la scelta del numero/modalità di canali, ma in tutti i dispositivi che conosco (oltre 70) è supportato esclusivamente Stereo.
Codec
Frequenza di campionamento
Larghezza
Bitrate
Supporto per la codifica
Supporto per la decodifica
aptX
16, 32, 44.1, 48 kHz
16 bit
128 / 256 / 352 / 384 kbps (a seconda della frequenza di campionamento)
Windows 10 (desktop e mobile), macOS, Android 4.4+/7*, Blackberry OS 10
Ampia varietà di dispositivi audio (hardware)
* Le versioni fino a 7 richiedono modifiche allo stack Bluetooth. Il codec è supportato solo se il produttore del dispositivo Android ha licenziato l'uso del codec da Qualcomm (se il sistema operativo ha librerie di codifica).
aptX divide l'audio in 4 bande di frequenza e quantizza ciascuna con lo stesso numero di bit costantemente: 8 bit per 0-5,5 kHz, 4 bit per 5,5-11 kHz, 2 bit per 11-16,5 kHz, 2 bit per 16,5-22 kHz (numeri per la frequenza di campionamento di 44,1 kHz).
Esempio di audio aptX (in alto il segnale originale, in basso aptX, spettrogrammi solo dei canali sinistri, suono in FLAC):
Le frequenze superiori sono diventate leggermente più rosse, ma non si percepisce una differenza.
A causa della distribuzione fissa dei bit di quantizzazione, il codec non può "trasferire i bit" alle frequenze che ne hanno più bisogno. A differenza di SBC, aptX non "taglierà" le frequenze, ma aggiungerà in esse rumori di quantizzazione, riducendo la gamma dinamica dell'audio.
Non si deve pensare che l'uso, ad esempio, di 2 bit per banda riduca la gamma dinamica a 12 dB: ADPCM consente di utilizzare fino a 96 dB di gamma dinamica anche con 2 bit di quantizzazione, ma solo con un certo tipo di segnale.
ADPCM memorizza la differenza tra la rappresentazione numerica dell'attuale campione e quella del campione successivo, invece di registrare il valore assoluto, come avviene in PCM. Questo consente di ridurre le esigenze in termini di bit necessarie per memorizzare informazioni equivalenti (senza perdita) o praticamente equivalenti (con un errore di arrotondamento relativamente ridotto). Per ridurre gli errori di arrotondamento vengono utilizzate tabelle di coefficienti.
Nella creazione del codec, gli autori hanno calcolato i coefficienti ADPCM su un insieme di file audio musicali. Più il segnale audio è vicino a quel set di brani musicali, meno errori di quantizzazione (rumori) genera aptX.
A causa di ciò, i test sintetici daranno sempre risultati peggiori rispetto alla musica. Ho creato un esempio sintetico speciale in cui aptX mostra risultati scadenti: un'onda sinusoidale con frequenza di 12.4 kHz (in alto - il segnale originale, in basso - aptX. Suono in FLAC. Abbassa il volume!).
Grafico dello spettro:

I rumori sono chiaramente percepibili.
Tuttavia, se si genera un'onda sinusoidale con un'ampiezza più bassa, in modo che sia più silenziosa, i rumori diventeranno anche più silenziosi, il che indica una gamma dinamica ampia:

Per sentire la differenza tra il brano musicale originale e quello compresso, si può invertire uno dei segnali e sommare le tracce canale per canale. Questo approccio, in generale, non è corretto e non darebbe risultati validi con codec più complessi, ma è adatto per ADPCM.
La radice quadrata media della differenza dei segnali si attesta a -37.4 dB, che non è molto per musica così compressa.
aptX HD
aptX HD non è un codec autonomo, ma un profilo di codifica migliorato del codec aptX. Le modifiche riguardano il numero di bit assegnati alla codifica delle frequenze: 10 bit per 0-5.5 kHz, 6 bit per 5.5-11 kHz, 4 bit per 11-16.5 kHz, 4 bit per 16.5-22 kHz (numeri per 44.1 kHz).
Codec
Frequenza di campionamento
Larghezza
Bitrate
Supporto per la codifica
Supporto per la decodifica
aptX HD
16, 32, 44.1, 48 kHz
24 bit
192 / 384 / 529 / 576 kbps (a seconda della frequenza di campionamento)
Android 8+*
Alcuni dispositivi audio (hardware)
* Le versioni fino a 7 richiedono modifiche allo stack Bluetooth. Il codec è supportato solo se il produttore del dispositivo Android ha licenziato l'uso del codec da Qualcomm (se il sistema operativo ha librerie di codifica).
Meno comune rispetto ad aptX: sembra richiedere una licenza separata da Qualcomm e pagamenti di licenza specifici.
Ripetiamo l'esempio con un'onda sinusoidale a 12.4 kHz:

Molto meglio rispetto ad aptX, ma comunque un po' rumoroso.
aptX Low Latency
Codec di Qualcomm, che non ha nulla in comune con gli standard aptX e aptX HD, a giudicare dalle poche informazioni fornite da persone coinvolte nel suo sviluppo. È concepito per la trasmissione interattiva audio a bassa latenza (film, giochi), dove il ritardo del suono non può essere regolato a livello software. Non ci sono implementazioni software conosciute di encoder e decoder, ed è supportato esclusivamente da trasmettitori, ricevitori, cuffie e altoparlanti, ma non da smartphone e computer.
Frequenza di campionamento
Bitrate
Supporto per la codifica
Supporto per la decodifica
44.1 kHz
276/420 kbps
Alcuni trasmettitori (hardware)
Alcuni dispositivi audio (hardware)
AAC
AAC, o Advanced Audio Coding, è un codec computazionalmente complesso, con un serio modello psicoacustico. Ha ottenuto una vasta diffusione per l’audio su Internet, ed è il secondo più popolare dopo MP3. Richiede licenza e pagamenti di licenza: $15000 una tantum (o $1000 per aziende con meno di 15 dipendenti) + $0.98 per i primi 500000 dispositivi ().
Il codec è standardizzato all'interno delle specifiche MPEG-2 e MPEG-4 e, contrariamente alla credenza comune, non appartiene ad Apple.
Frequenza di campionamento
Bitrate
Supporto per la codifica
Supporto per la decodifica
8 — 96 kHz
8 — 576 kbps (per stereo), 256 — 320 kbps (tipico per Bluetooth)
macOS, Android 7+*, iOS
Ampia varietà di dispositivi audio (hardware)
* solo su dispositivi i cui produttori hanno pagato le royalty per la licenza
In iOS e macOS viene utilizzato il miglior encoder AAC di Apple disponibile al momento, che offre la massima qualità audio possibile. In Android viene utilizzato un encoder di qualità inferiore, il Fraunhofer FDK AAC, ma possono essere utilizzati anche vari codec hardware integrati nella piattaforma (SoC), con qualità di codifica sconosciuta. , la qualità di codifica dell'AAC varia notevolmente tra i vari telefoni Android:
La maggior parte dei dispositivi audio wireless per AAC ha un bitrate massimo impostato a 320 kbit/s, alcuni supportano solo 256 kbit/s. Gli altri bitrate sono estremamente rari.
AAC offre un'ottima qualità a bitrate di 320 e 256 kbit/s, ma è soggetto , tuttavia, è difficile percepire differenze con l'originale su iOS a un bitrate di 256 kbit/s anche dopo diverse codifiche sequenziali; in caso di codifica singola, ad esempio, da MP3 320 kbit/s a AAC 256 kbit/s, le perdite possono essere trascurate.
Come con altri codec Bluetooth, qualsiasi musica viene prima decodificata e poi codificata dal codec. Quando si ascolta musica in formato AAC, essa viene prima decodificata dai mezzi del sistema operativo e poi ricodificata in AAC per la trasmissione via Bluetooth. Questo è necessario per miscelare più flussi audio, come musica e notifiche di nuovi messaggi. iOS non fa eccezione. Ci sono molte affermazioni online secondo cui su iOS la musica in formato AAC non viene transcodificata durante la trasmissione via Bluetooth, il che è falso.
MP1/2/3
I codec della famiglia MPEG-1/2 Parte 3 comprendono il noto e ampiamente utilizzato MP3, il meno diffuso MP2 (utilizzato principalmente nella TV e radio digitali) e un MP1 completamente sconosciuto.
I vecchi codec MP1 e MP2 non sono affatto supportati: non sono riuscito a trovare cuffie né uno stack Bluetooth che li codificasse o decodificasse.
La decodifica MP3 è supportata da alcune cuffie, ma la codifica non è supportata da nessuno stack delle moderne sistemi operativi. Sembra che uno stack di terze parti come BlueSoleil per Windows possa codificare in MP3, se si modifica manualmente il file di configurazione, ma la sua installazione causa un BSoD su Windows 10. In conclusione, il codec non può essere effettivamente utilizzato per audio Bluetooth.
In passato, tra il 2006 e il 2008, prima della diffusione dello standard A2DP nei dispositivi, le persone ascoltavano musica MP3 con il auricolari Nokia BH-501 tramite il programma MSI BluePlayer, che era disponibile su Symbian e Windows Mobile. A quel tempo, l'architettura del sistema operativo degli smartphone permetteva di accedere a molte funzionalità di basso livello, e su Windows Mobile era possibile installare stack Bluetooth di terze parti.
L'ultimo brevetto del codec MP3 è scaduto, l'uso del codec non richiede pagamenti di licenza a partire dal 23 aprile 2017.
Se il brevetto più longevo menzionato nei riferimenti precedenti viene preso come misura, la tecnologia MP3 è diventata priva di brevetto negli Stati Uniti il 16 aprile 2017, quando il brevetto statunitense 6.009.399, detenuto e gestito da Technicolor, è scaduto.
Fonte:
Frequenza di campionamento
Bitrate
Supporto per la codifica
Supporto per la decodifica
16 — 48 kHz
8 — 320 kbps
Non supportato da nessuna parte
Alcuni dispositivi audio (hardware)
LDAC
Nuovo e attivamente promosso codec «Hi-Res» di Sony, che supporta frequenze di campionamento fino a 96 kHz e una risoluzione di 24 bit, con un bitrate fino a 990 kbps. Pubblicizzato come codec audiophile, come alternativa agli attuali codec Bluetooth. Ha una funzione di adattamento del bitrate, a seconda delle condizioni di trasmissione radio.
L'encoder LDAC () è incluso nel pacchetto standard di Android, quindi la codifica è supportata su qualsiasi smartphone Android a partire dalla versione 8 del sistema operativo. Non esistono decoder software disponibili gratuitamente, la specifica del codec non è pubblicamente accessibile, tuttavia, a prima vista, l'encoder sembra avere una struttura interna simile a — codec di Sony utilizzato in PlayStation 4 e Vita: entrambi operano nella stessa gamma di frequenze, utilizzano la trasformata discreta del coseno modificata (MDCT) e la compressione tramite algoritmo di Huffman.
Il supporto per LDAC è praticamente fornito solo dalle cuffie di Sony. La possibilità di decodificare LDAC può occasionalmente trovarsi in cuffie e DAC di altri produttori, ma è molto rara.
Frequenza di campionamento
Bitrate
Supporto per la codifica
Supporto per la decodifica
44.1 — 96 kHz
303/606/909 kbps (per 44.1 e 88.2 kHz), 330/660/990 kbps (per 48 e 96 kHz)
Android 8+
Alcune cuffie Sony e singoli dispositivi di altri produttori (hardware)
Il marketing di LDAC come codec Hi-Res danneggia la sua componente tecnica: è sciocco sprecare bitrate per trasmettere frequenze non udibili all'orecchio umano e una risoluzione elevata, quando non è sufficiente per trasmettere audio di qualità CD (44.1/16) senza perdite. Fortunatamente, il codec ha due modalità operative: trasmissione audio CD e trasmissione audio Hi-Res. Nel primo caso, viene trasmesso solo audio a 44.1 kHz/16 bit.
Poiché non esiste un decoder software LDAC disponibile gratuitamente, non è possibile testare il codec senza dispositivi aggiuntivi che decodificano LDAC. Secondo i risultati del test di LDAC su un DAC compatibile, collegato dagli ingegneri del sito SoundGuys.com tramite uscita digitale e registrato sul suono emesso con segnali di prova, LDAC a 660 e 990 kbps in modalità qualità CD fornisce un rapporto segnale/rumore leggermente migliore rispetto a quello di aptX HD.
Fonte:
LDAC supporta anche un bitrate dinamico al di fuori dei profili stabiliti, da 138 kbps a 990 kbps, ma, per quanto ne posso giudicare, su Android vengono utilizzati solo i profili standardizzati 303/606/909 e 330/660/990 kbps.
Altri codec
Altri codec A2DP non hanno avuto una diffusione ampia. Il loro supporto è praticamente assente, oppure è disponibile solo su determinati modelli di cuffie e smartphone.
Il codec ATRAC standardizzato in A2DP non è mai stato utilizzato come codec Bluetooth nemmeno da Sony; i codec Samsung HD, Samsung Scalable e Samsung UHQ-BT hanno un supporto molto limitato da parte dei dispositivi di trasmissione e ricezione, e HWA LHDC è troppo nuovo, supportato appena da tre(?) dispositivi.
Supporto codec da parte dei dispositivi audio
Non tutti i produttori pubblicano informazioni precise sui codec supportati da determinate cuffie wireless, altoparlanti, ricevitori o trasmettitori. A volte, il supporto di un determinato codec è disponibile solo per la trasmissione, ma non per la ricezione (vale per i trasmettitori-ricevitori combinati), anche se il produttore dichiara semplicemente "supporto", senza ulteriori informazioni (presumo che ciò sia dovuto alla separazione delle licenze per gli encoder e i decoder di alcuni codec). Nei dispositivi più economici, potresti non trovare affatto il supporto dichiarato per aptX.
Purtroppo, nelle interfacce della maggior parte dei sistemi operativi non viene visualizzato il codec utilizzato. Queste informazioni sono disponibili solo su Android a partire dalla versione 8 e su macOS. Tuttavia, anche in questi sistemi operativi verranno visualizzati solo quei codec che supportano sia il telefono/computer sia le cuffie.
Come posso scoprire quali codec supporta il dispositivo? Registrare e analizzare il dump del traffico con i parametri di negoziazione A2DP!
È possibile farlo in Linux, macOS e Android. In Linux è possibile utilizzare Wireshark o hcidump, in macOS - Bluetooth Explorer, e in Android - la funzione integrata di salvataggio del dump HCI Bluetooth, disponibile negli strumenti per sviluppatori. Otterrai un dump in formato btsnoop, che può essere caricato in un analizzatore Wireshark.
Si prega di notare: è possibile ottenere un dump corretto solo collegandosi con un telefono/computer agli auricolari/altoparlanti (per quanto possa sembrare curioso)! Gli auricolari possono stabilire autonomamente la connessione con il telefono e, in tal caso, richiederanno l’elenco dei codec al telefono, e non viceversa. Per garantire un dump corretto, scollega prima il dispostivo e poi, durante la registrazione del dump, accoppia il telefono con gli auricolari.
Utilizza il seguente filtro di visualizzazione per filtrare il traffico non rilevante:
btavdtp.signal_idDi conseguenza, dovresti vedere qualcosa di simile:
Puoi cliccare su ciascun elemento del comando GetCapabilities per visualizzare le caratteristiche dettagliate del codec.
Wireshark non conosce tutti gli identificatori dei codec, quindi dovrai decifrare manualmente alcuni codec consultando la tabella degli identificatori qui sotto:
Obbligatori:
0x00 - SBC
Opzionali:
0x01 - MPEG-1,2 (aka MP3)
0x02 - MPEG-2,4 (aka AAC)
0x04 - ATRAC
Specifico del fornitore:
0xFF 0x004F 0x01 - aptX
0xFF 0x00D7 0x24 - aptX HD
0xFF 0x000A 0x02 - aptX Low Latency
0xFF 0x00D7 0x02 - aptX Low Latency
0xFF 0x000A 0x01 - FastStream
0xFF 0x012D 0xAA - LDAC
0xFF 0x0075 0x0102 - Samsung HD
0xFF 0x0075 0x0103 - Samsung Scalable Codec
0xFF 0x053A 0x484C - Savitech LHDC
0xFF 0x000A 0x0104 - Il codec ID CSR True Wireless Stereo v3 per AAC
0xFF 0x000A 0x0105 - Il codec ID CSR True Wireless Stereo v3 per MP3
0xFF 0x000A 0x0106 - Il codec ID CSR True Wireless Stereo v3 per aptXPer non dover analizzare i dump manualmente, ho creato un servizio che li analizzerà automaticamente:
Confronto tra codec. Quale codec è migliore?
Ogni codec ha i suoi vantaggi e svantaggi.
aptX e aptX HD utilizzano profili rigidamente definiti, che non possono essere modificati senza modificare l'encoder e il decoder. Né il produttore del telefono né quello degli auricolari possono cambiare il bit rate o i coefficienti di codifica di aptX. Il proprietario del codec, Qualcomm, fornisce un encoder di riferimento sotto forma di libreria. Questi fatti sono un punto di forza per aptX: sai in anticipo quale qualità audio riceverai, senza alcun "ma".
SBC, al contrario, offre numerosi parametri configurabili, un bit rate dinamico (il codificatore può ridurre il parametro bitpool se l'emittente radio è congestionato) e non ha profili fissi, ma solo raccomandazioni per "qualità media" e "alta qualità", introdotte nella specifica A2DP nel 2003. "Alta qualità" non è più così alta secondo gli standard moderni, e la maggior parte delle stack Bluetooth non consente di utilizzare parametri migliori di quelli previsti dal profilo "alta qualità", sebbene non ci siano limiti tecnici al riguardo.
Bluetooth SIG non dispone di un codificatore di riferimento SBC sotto forma di libreria, e i produttori lo implementano autonomamente.
Queste sono le debolezze di SBC: non è mai chiaro in anticipo quale qualità audio aspettarsi da un dispositivo specifico. SBC può fornire sia una bassa che un'ottima qualità audio, ma quest'ultima è irraggiungibile senza disattivare o eludere le limitazioni artificiali delle stack Bluetooth.
La situazione con AAC è ambivalente: da un lato, teoricamente il codec dovrebbe fornire una qualità indistinguibile dall'originale, ma la pratica, come ha mostrato il laboratorio SoundGuys testando diversi dispositivi Android, non conferma questo. Probabilmente, la colpa è dei codificatori audio hardware di bassa qualità integrati in vari chip telefonici. Ha senso usare AAC solo su dispositivi Apple, e su Android limitarsi a aptX e LDAC.
L'hardware che supporta codec alternativi è solitamente di qualità superiore, semplicemente perché per i dispositivi molto economici di bassa qualità non ha senso pagare diritti di licenza per l'uso di questi codec. Nei miei test, SBC suona molto bene su hardware di qualità.
Ho creato un servizio web che codifica audio in SBC, aptX e aptX HD in tempo reale, direttamente nel browser. Con esso potrai testare questi codec audio senza effettiva trasmissione audio via Bluetooth, su qualsiasi cuffia o diffusore cablato e con la tua musica preferita, e anche modificare i parametri di codifica durante la riproduzione audio.
Il servizio utilizza le librerie di codifica SBC del progetto BlueZ e libopenaptx di ffmpeg, che sono state compilate in WebAssembly e JavaScript da C, tramite emscripten, per essere eseguite nel browser. Chi avrebbe potuto sognare un tale futuro!
Ecco come appare:
Fai attenzione a come cambia il livello di rumore sopra i 20 kHz con diversi codec. Nei file MP3 originali, le frequenze superiori a 20 kHz sono assenti.
Prova a cambiare codec e a valutare se senti una differenza tra l'originale, SBC 53 Joint Stereo (profilo standard e più comune) e aptX/aptX HD.
Sento la differenza tra i codec nelle cuffie!
Le persone che non sentono la differenza tra i codec durante il test tramite il servizio web, affermano di udirla mentre ascoltano musica con cuffie wireless. Purtroppo, non è uno scherzo e non è un effetto placebo: la differenza è davvero avvertibile, ma è causata non da differenze codec.
La stragrande maggioranza dei chipset audio Bluetooth utilizzati nei dispositivi wireless è dotata di un processore digitale del segnale (Digital Signal Processor, DSP), che implementa l'equalizzatore, il compressore, l'amplificatore stereo e altre funzionalità destinate a migliorare (o modificare) il suono. I produttori di apparecchiature Bluetooth possono configurare il DSP per ciascun codec separatamente, e passando da un codec all'altro, l'ascoltatore avrà l'impressione di percepire le differenze nei codec, mentre in realtà sta ascoltando impostazioni DSP diverse.
Il pipeline di elaborazione audio DSP Kalimba nei chip prodotti da CSR/Qualcomm

Attivazione delle diverse funzionalità DSP per ogni codec e uscita separatamente
Alcuni dispositivi di fascia alta sono dotati di software per la regolazione dei parametri DSP, ma la maggior parte delle cuffie più economiche non offre questa possibilità e gli utenti non possono disattivare l'elaborazione audio con metodi semplici.
Caratteristiche funzionali dei dispositivi
La versione moderna dello standard A2DP offre la funzione "regolazione assoluta del volume" — controllo del volume del dispositivo tramite comandi speciali del protocollo AVRCP, che regola l'amplificazione dello stadio di uscita, invece di ridurre il volume dell'audio a livello software. Se, modificando il volume delle cuffie, la modifica non è sincronizzata con il volume sul telefono, significa che le tue cuffie o telefono non supportano questa funzione. In tal caso, è consigliabile ascoltare sempre la musica con il volume massimo sul telefono, regolando il volume effettivo con i pulsanti delle cuffie: in questo modo il rapporto segnale/rumore sarà migliore e la qualità audio. dovrebbe essere sopra.
In realtà, esistono situazioni spiacevoli. Sulle mie cuffie RealForce OverDrive D1 per SBC è attivato un forte compander, e l'aumento del volume porta ad un aumento del livello dei suoni deboli, mentre il volume dei suoni forti rimane invariato (si verifica la compressione del segnale). Di conseguenza, devo impostare il volume sul computer a circa la metà, in questo caso l'effetto di compressione è praticamente assente.
Dalla mia esperienza, tutte le cuffie con codec aggiuntivi supportano la funzione di regolazione del volume assoluta, evidentemente questo è uno dei requisiti per la certificazione dei codec.
Alcune cuffie supportano la connessione di due dispositivi contemporaneamente. Ciò consente, ad esempio, di ascoltare musica dal computer e ricevere chiamate dal telefono. Tuttavia, è importante sapere che in questa modalità i codec alternativi vengono disabilitati e viene utilizzato solo SBC.
La funzione AVDTP 1.3 Delay Reporting permette alle cuffie di comunicare il ritardo al dispositivo di invio, con il quale il suono viene effettivamente riprodotto. Questo consente di adeguare la sincronizzazione audio-video durante la visione di video: in caso di problemi di trasmissione in radiofrequenza, l'audio non sarà in ritardo rispetto al video, ma viceversa, il video verrà rallentato dal lettore video fino a quando audio e video non saranno nuovamente sincronizzati.
La funzione è supportata da molte cuffie, Android 9+ e Linux con PulseAudio 12.0+. Non ho informazioni sul supporto della funzione su altre piattaforme.
Comunicazione bidirezionale tramite Bluetooth. Trasmissione vocale.
Per la trasmissione vocale tramite Bluetooth viene utilizzato Synchronous Connection Oriented (SCO) — una trasmissione sincrona con pre-accordo della connessione. La modalità consente di trasmettere suono e voce in modo rigoroso nell'ordine, con una velocità simmetrica di invio e ricezione, senza attendere la conferma della trasmissione e il reinvio dei pacchetti. Ciò riduce la latenza complessiva nella trasmissione audio attraverso il canale radio, ma impone gravi limitazioni sulla quantità di dati trasmessi per unità di tempo, influenzando negativamente la qualità.
Quando si utilizza questa modalità, sia la voce che l'audio vengono trasmessi con la stessa qualità.
Sfortunatamente, a partire dal 2019, la qualità della trasmissione vocale tramite Bluetooth è ancora bassa e non è chiaro perché il Bluetooth SIG non faccia nulla al riguardo.
CVSD
Il codec vocale di base CVSD è stato standardizzato nel 2002 ed è supportato da tutti i dispositivi di comunicazione bidirezionale tramite Bluetooth. Fornisce la trasmissione audio con una frequenza di campionamento di 8 kHz, che corrisponde alla qualità della telefonia tradizionale.
.
mSBC
Il codec aggiuntivo mSBC è stato standardizzato nel 2009 e nel 2010 sono già apparsi chip che lo utilizzano per la trasmissione vocale. mSBC è ampiamente supportato da vari dispositivi.
Non è un codec autonomo, ma un normale SBC dello standard A2DP, con un profilo di codifica fisso: 16 kHz, mono, bitpool 26.
.
Non è eccezionale, ma molto meglio del CVSD, tuttavia è ancora scomodo usarlo per comunicare su internet, soprattutto quando si usano cuffie per comunicare durante un gioco: anche il suono del gioco verrà trasmesso con una frequenza di campionamento di 16 kHz.
FastStream L'azienda CSR ha deciso di sviluppare l'idea di riutilizzare l'SBC. Per superare le limitazioni del protocollo SCO e utilizzare bitrate più elevati, CSR ha preso un'altra direzione: hanno implementato il supporto per audio SBC bidirezionale nello standard di trasmissione audio unidirezionale A2DP, hanno standardizzato i profili di codifica e lo hanno chiamato "FastStream".
FastStream trasmette suono stereo ai diffusori a 44,1 o 48 kHz con un bitrate di 212 kbit/s, mentre per la trasmissione audio dal microfono utilizza mono, 16 kHz, con un bitrate di 72 kbit/s (un po' meglio di mSBC). Queste impostazioni sono molto più adatte per la comunicazione nei giochi online: il suono del gioco e quello degli interlocutori saranno di qualità.
(+ ).
L'azienda ha trovato un ingegnoso workaround, ma poiché è in contraddizione con lo standard A2DP, il suo supporto è presente solo in alcuni trasmettitori dell'azienda (che funzionano come scheda audio USB, non come dispositivo Bluetooth), ma non ha ottenuto supporto nei stack Bluetooth, anche se il numero di cuffie con supporto FastStream non è affatto trascurabile.
Attualmente, il supporto per FastStream nel sistema operativo è disponibile solo dallo sviluppatore Pali Rohár, che non è incluso nella versione principale del programma.
aptX Low Latency
Con grande sorpresa, anche aptX Low Latency supporta l'audio bidirezionale, implementando lo stesso principio di FastStream.
Non sarà possibile utilizzare questa funzionalità del codec ovunque: non esiste supporto per la decodifica Low Latency in nessun sistema operativo e in nessun stack Bluetooth di cui sia a conoscenza.
Bluetooth 5, Classic e Low Energy
Attorno alle specifiche e alle versioni del Bluetooth è sorto un grande fraintendimento a causa della presenza di due standard incompatibili sotto un unico marchio, entrambi ampiamente utilizzati per scopi diversi.
Esistono due protocolli Bluetooth distinti e incompatibili tra loro: Bluetooth Classic e Bluetooth Low Energy (LE, noto anche come Bluetooth Smart). C'è anche un terzo protocollo, Bluetooth High Speed, ma non è diffuso e non viene utilizzato nei dispositivi domestici.
A partire da Bluetooth 4.0, le modifiche alle specifiche riguardavano principalmente Bluetooth Low Energy, mentre la versione Classic riceveva solo miglioramenti minori.
Elenco delle modifiche tra Bluetooth 4.2 e Bluetooth 5:
9 MODIFICHE DA v4.2 A 5.0
9.1 NUOVE FUNZIONI
Diverse nuove funzionalità sono state introdotte nella Specifica Base Bluetooth 5.0. Le principali aree di miglioramento sono:
• Slot Availability Mask (SAM)
• 2 Msym/s PHY per LE
• LE Long Range
• Pubblicità Non Connettibile ad Alta Frequenza
• Estensioni per la Pubblicità LE
• Algoritmo di Selezione Canali LE #2
9.1.1 Funzionalità Aggiunte in CSA5 — Integrato in v5.0
• Maggiore Potenza di Uscita
Fonte: (pagina 291)
Solo una modifica ha riguardato la versione Classic nell'ambito delle specifiche Bluetooth 5: è stato aggiunto il supporto per la tecnologia Slot Availability Mask (SAM), destinata a migliorare la separazione dello spettro radio. Tutte le altre modifiche riguardano solo Bluetooth LE (e anche la Maggiore Potenza di Uscita).
Tutti I dispositivi audio utilizzano solo Bluetooth Classic. Non è possibile collegare cuffie e altoparlanti tramite Bluetooth Low Energy: non esiste uno standard per il trasferimento audio utilizzando LE. Lo standard A2DP, utilizzato per la trasmissione di audio di alta qualità, funziona solo tramite Bluetooth Classic, e non ha un equivalente in LE.
In conclusione, acquistare dispositivi audio con Bluetooth 5 solo per la nuova versione del protocollo è insensato. Bluetooth 4.0/4.1/4.2 nella trasmissione audio funzionerà esattamente allo stesso modo.
Se l'annuncio di nuove cuffie menziona un raggio di azione raddoppiato e un consumo energetico ridotto grazie a Bluetooth 5, sappiate che stanno o non capendo bene, o stanno ingannando. Non è sorprendente, visto che anche i produttori di chip Bluetooth confondono le differenze tra la nuova versione dello standard, e alcuni chip Bluetooth 5 supportano la quinta versione solo per LE, mentre per Classic usano 4.2.
Ritardo nella Trasmissione Audio
Il livello di ritardo (latenza) audio dipende da molti fattori: la dimensione del buffer nello stack audio, nello stack Bluetooth e nel dispositivo wireless di riproduzione stesso, e dalla latenza algoritmica del codec.
Il ritardo dei codec semplici, come SBC, aptX e aptX HD, è molto piccolo, attestandosi tra 3 e 6 ms, e può essere trascurato. Tuttavia, i codec complessi, come AAC e LDAC, possono causare un ritardo percepibile. Il ritardo algoritmico di AAC per 44.1 kHz è di 60 ms. LDAC è di circa 30 ms (secondo un'analisi grossolana del codice sorgente. Potrei sbagliarmi, ma non di molto.)
Il ritardo finale dipende fortemente dal dispositivo di riproduzione, dal suo chipset e dal buffer. Durante i test ho ottenuto un intervallo da 150 a 250 ms su vari dispositivi (con codec SBC). Se assumiamo che i dispositivi che supportano codec aggiuntivi come aptX, AAC e LDAC utilizzino componenti di qualità e buffer di dimensioni ridotte, otteniamo i seguenti ritardi tipici:
SBC: 150-250 ms
aptX: 130-180 ms
AAC: 190-240 ms
LDAC: 160-210 ms
Ricordo che aptX Low Latency non è supportato nei sistemi operativi, quindi un ritardo inferiore si può ottenere solo combinando trasmettitore+ricevitore o trasmettitore+cuffie/altoparlante, e tutti i dispositivi devono supportare questo codec.
Problemi con i dispositivi, la certificazione e i loghi Bluetooth
Come distinguere un dispositivo audio di qualità da un prodotto scadente? Prima di tutto, dall'aspetto!
Negli auricolari, altoparlanti e ricevitori cinesi economici:
- Manca la parola «Bluetooth» sulla confezione e sul dispositivo, si usano più spesso termini come «Wireless» e «BT»
- Manca il logo Bluetooth
sulla confezione o sul dispositivo - Non c'è un LED blu lampeggiante
L'assenza di questi elementi indica che il dispositivo non ha subito una certificazione, e quindi potrebbe essere di bassa qualità e problematico. Ad esempio, gli auricolari del marchio Bluedio non sono certificati Bluetooth e non soddisfano completamente le specifiche A2DP. Non avrebbero superato la certificazione.
Esaminiamo alcuni dispositivi e le loro confezioni:
Questi sono tutti dispositivi non certificati. Nel manuale potrebbe esserci il logo e il nome della tecnologia Bluetooth, ma la cosa più importante è che siano sulla confezione e/o sul dispositivo stesso.
Se le vostre cuffie o il vostro altoparlante dicono «Ze bluetooth dewise is connecteda successfulle», questo non indica nemmeno la loro qualità:

Conclusione
Il Bluetooth può sostituire completamente le cuffie e gli auricolari cablati? Può farlo, ma a scapito della bassa qualità in modalità conversazione, di un aumento del ritardo nella trasmissione audio, che può risultare fastidioso nei giochi, e di molti codec proprietari che richiedono pagamenti di licenza e aumentano il costo finale sia degli smartphone che delle cuffie.
Il marketing dei codec alternativi è molto forte: aptX e LDAC sono presentati come un atteso sostituto dell'SBC "obsoleto e scadente", che in realtà non è così cattivo come si tende a pensare.
Come si è scoperto, le limitazioni artificiali degli stack Bluetooth sul bitrate SBC possono essere aggirate, in modo che l'SBC non ceda all'aptX HD. Ho preso l'iniziativa e ho creato una patch per il firmware LineageOS:
Maggiori informazioni possono essere trovate sui siti e .
Bonus: . Questo file era stato precedentemente pubblicato sul sito Bluetooth, ma ora è disponibile solo per i membri del Bluetooth SIG.
Fonte: habr.com

sulla confezione o sul dispositivo