
Con il massiccio lancio di smartphone privi di jack audio da 3,5 mm, le cuffie Bluetooth senza fili 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, e gli articoli su audio Bluetooth online sono contraddittori, a volte imprecisi, non coprono tutte le caratteristiche e spesso ripetono informazioni errate.
Cerchiamo di capire il protocollo, le capacità degli stack Bluetooth dei sistemi operativi, delle cuffie e degli altoparlanti, i codec Bluetooth per musica e voce, scoprendo cosa influisce sulla qualità del suono trasmesso e sui ritardi, e impariamo a raccogliere e decodificare informazioni sui codec supportati e le altre capacità dei dispositivi.
TL;DR:
- SBC — un codec accettabile
- Le cuffie hanno il proprio equalizzatore e post-elaborazione per ogni codec separatamente
- aptX non è così buono come dicono le pubblicità
- LDAC — marketing fuorviante
- La qualità del suono in modalità chiamata è ancora bassa
- Nel browser è possibile integrare encoder audio in C, compilando in WebAssembly attraverso emscripten, senza rallentamenti significativi.
Musica tramite Bluetooth
La funzionalità del Bluetooth è definita dai profili, che specificano funzioni specifiche. La trasmissione della musica via Bluetooth avviene utilizzando il profilo A2DP, che consente la trasmissione di audio mono di alta qualità. Lo standard A2DP è stato adottato nel 2003 e non ha subito cambiamenti significativi da allora.
Nel profilo è standardizzato 1 codec obbligatorio a bassa complessità computazionale, il SBC, progettato specificamente per Bluetooth, e 3 codec aggiuntivi. È anche consentito utilizzare codec non documentati sviluppati in modo proprietario.
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: l'ormai 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, ma con parametri di codifica diversi
- aptX Low Latency ← codec completamente diverso, nessuna implementazione software
- aptX Adaptive ← un altro codec di Qualcomm
- FastStream ← pseudocodec, 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é sono necessari i codec, vi chiederete, quando il Bluetooth ha EDR, che consente di trasferire dati a velocità di 2 e 3 Mbps, mentre per PCM stereo non compresso a 16 bit è sufficiente 1,4 Mbps?
Trasferimento dati tramite Bluetooth
In Bluetooth ci sono due tipi di trasferimento dati: Asynchronous Connection Less (ACL) per il trasferimento asincrono senza stabilire una connessione, e Synchronous Connection Oriented (SCO), per il trasferimento sincrono con preliminare accordo sulla connessione.
La trasmissione avviene utilizzando uno schema di divisione del tempo e selezione del canale di trasmissione per ogni pacchetto separatamente (Frequency-Hop/Time-Division-Duplex, FH/TDD), per cui il tempo è suddiviso in intervalli di 625 microsecondi, denominati slot. Uno dei dispositivi trasmette nei numeri di slot pari, mentre l'altro nei numeri dispari. Il pacchetto trasmesso può occupare 1, 3 o 5 slot, a seconda delle dimensioni dei dati e del tipo di trasmissione impostato; in questo caso, la trasmissione da un dispositivo avviene in slot pari e dispari fino alla fine della trasmissione. In un secondo possono essere ricevuti e inviati fino a 1600 pacchetti, se ognuno di essi occupa 1 slot e entrambi i dispositivi trasmettono e ricevono continuamente qualcosa.
2 e 3 Mbit/s per EDR, che si possono trovare negli annunci e sul sito Bluetooth, rappresentano la massima velocità di trasmissione del canale per tutti i dati in totale (compresi gli header tecnici di tutti i protocolli nei quali i dati devono essere incapsulati), in entrambe le direzioni simultaneamente. La velocità di trasmissione effettiva varierà significativamente.
Per la trasmissione della musica viene utilizzato un metodo asincrono, quasi sempre attraverso pacchetti di tipo 2-DH5 e 3-DH5, che possono trasmettere la massima quantità di dati in modalità EDR a 2 Mbit/s e 3 Mbit/s rispettivamente, occupando 5 slot di divisione temporale dell'aria.
Rappresentazione schematica della trasmissione utilizzando 5 slot con un dispositivo e 1 slot con un altro (DH5/DH1):

A causa del principio di divisione temporale, siamo costretti a attendere uno slot temporale di 625 microsecondi dopo la trasmissione di un pacchetto, se il secondo dispositivo non sta trasmettendo nulla o sta trasmettendo un pacchetto piccolo, e più tempo se il secondo dispositivo sta trasmettendo pacchetti più grandi. Se più di un dispositivo è collegato al telefono (ad esempio, cuffie, orologi e bracciali fitness), il tempo di trasmissione è diviso tra tutti loro.
La necessità di incapsulare l'audio in protocolli di trasporto speciali L2CAP e AVDTP sottrae 16 byte dalla potenziale massa massima di carico audio trasmissibile.
Tipo di pacchetto
Numero di slot
Max. numero di byte nel pacchetto
Max. numero di byte di carico utile A2DP
Max. bitrate del 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 non sono assolutamente sufficienti per la trasmissione di audio non compresso in condizioni reali, con una banda 2.4 GHz rumorosa e la necessità di trasmettere dati di servizio. L'EDR a 3 Mbit/s è esigente in termini di potenza di trasmissione e rumori nel mezzo, quindi anche in modalità 3-DH5, una trasmissione confortevole di PCM non è possibile, ci saranno interruzioni temporanee, e funzionerà solo a una distanza di pochi metri.
In pratica, anche un flusso audio a 990 kbit/s (LDAC 990 kbit/s) è difficile da trasmettere.
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
Profondità
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 psychoacustico primitivo (applica solo la mascheratura dei suoni silenziosi), che utilizza la modulazione a impulsi codificati adattiva (APCM).
La specifica A2DP raccomanda l'uso di due profili: Middle Quality e High Quality.

Il codec offre numerose impostazioni che consentono di gestire la latenza algoritmica, il numero di campioni per blocco e l'algoritmo di distribuzione dei bit, ma generalmente vengono utilizzati gli stessi parametri raccomandati nelle specifiche: Joint Stereo, 8 bande di frequenza, 16 blocchi per fotogramma audio e un metodo di distribuzione dei bit basato sulla Loudness.
SBC supporta la modifica dinamica del parametro Bitpool, che influisce direttamente sul bitrate. Se l'emittente radio è congestionata, i pacchetti vengono persi oppure i dispositivi si trovano a grande distanza, la sorgente audio può ridurre il Bitpool fino a quando la connessione non si normalizza.
I produttori della maggior parte delle cuffie impostano il valore massimo del parametro Bitpool a 53, il che limita il bitrate a 328 kilobit al secondo quando si utilizza il profilo raccomandato.
Anche se il produttore delle cuffie ha impostato il valore massimo del Bitpool sopra 53 (modelli come Beats Solo³, JBL Everest Elite 750NC, Apple AirPods e talvolta anche alcuni ricevitori e unità di autoradio), la maggior parte dei sistemi operativi non permette di utilizzare bitrate più elevati a causa di un limite interno stabilito negli stack Bluetooth.
Inoltre, alcuni produttori impostano un basso valore massimo del Bitpool per determinati dispositivi. Ad esempio, per i Bluedio T è 39, mentre per i Samsung Gear IconX è 37, il che provoca una scarsa qualità audio.
Le limitazioni artificiali da parte degli sviluppatori degli stack Bluetooth sono probabilmente emerse a causa dell'incompatibilità di alcuni dispositivi con valori elevati del Bitpool o profili non standard, anche se dichiaravano di supportarli, e dalla mancanza di test adeguati durante la certificazione. Per gli autori degli stack Bluetooth era più semplice attenersi all'approvazione del profilo raccomandato piuttosto che creare un elenco di dispositivi non funzionanti correttamente (anche se ora lo fanno per altre funzioni che non funzionano correttamente).
SBC assegna dinamicamente i bit di quantizzazione per le bande di frequenza, operando dal basso verso l'alto, con diversi coefficienti di peso. Se l'intera larghezza di banda viene utilizzata per le frequenze basse e medie, le frequenze alte verranno "tagliate" (al loro posto ci sarà silenzio).
Esempio SBC 328 kbit/s. In alto c'è l'originale, in basso c'è SBC, con commutazioni occasionali 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 per desktop. Se non senti l'audio, puoi scaricare il file e aprirlo in un lettore video completo.
ZZ Top — Sharp Dressed Man
Nella spettrogramma si vede il momento del passaggio: SBC taglia periodicamente i suoni deboli oltre i 17,5 kHz e non assegna affatto bit per la banda oltre i 20 kHz. Lo spettrogramma completo è disponibile con un clic (1,7 MB).
Non sento differenze tra l'originale e SBC in questa traccia.
Prendiamo qualcosa di più recente e simuliamo l'audio che potrebbe risultare utilizzando le cuffie Samsung Gear IconX con Bitpool 37 (sopra — segnale originale, sotto — SBC 239 kbps, audio in FLAC).
Mindless Self Indulgence — Witness
Sento crepitii, un minore effetto stereo e un fastidioso 'cliccare' della voce nelle alte frequenze.
Sebbene l'SBC sia un codec molto flessibile, possa essere configurato per basse latenze, fornisce un'ottima qualità audio a bitrate elevati (452+ kbps) e una qualità abbastanza buona per la maggior parte delle persone a qualità alta standard (328 kbps), poiché lo standard A2DP non stabilisce profili fissi (ma fornisce solo raccomandazioni), gli sviluppatori degli stack hanno imposto limitazioni artificiali sul Bitpool, i parametri audio trasmessi non vengono 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à del suono, anche se questo non è un problema del codec stesso.
Il parametro Bitpool influisce direttamente sul bitrate solo all'interno di un profilo. Lo stesso valore di Bitpool 53 può generare un bitrate di 328 kbps con il profilo raccomandato High Quality, e di 1212 kbps con Dual Channel e 4 bande di frequenza, per questo gli sviluppatori dei sistemi operativi, oltre alle limitazioni su Bitpool, impongono anche un limite sul Bitrate. A mio avviso, questa situazione è emersa per la mancanza di sviluppo dello standard A2DP: bisognava concordare il bitrate, non il Bitpool.
Tabella di supporto delle capacità SBC in diversi OS:
il sistema operativo
Frequenze di campionamento supportate
Limite max. Bitpool
Limite 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 connessione in entrata), 53 (in connessione in uscita)
Nessun limite
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
Nessun limite
328 kbps
✗
* Il Bitpool diminuisce 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 nella 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 versioni successive supportano simultaneamente 44.1 kHz e 48 kHz.
*** Il valore del Bitpool può essere aumentato nell'app Bluetooth Explorer.
aptX e aptX HD
aptX è un codec semplice e computazionalmente veloce, privo di psicoacustica, che utilizza la modulazione di impulsi adattiva differenziale (). È stato introdotto circa nel 1988 (data di deposito è datata febbraio 1988), precedentemente utilizzato soprattutto nell'attrezzatura audio wireless professionale. Attualmente appartiene a Qualcomm, richiede licenze e pagamenti di royalty. Al 2014: $6000 una tantum e circa $1 per ogni dispositivo, per lotti fino a 10.000 dispositivi (, p. 16).
aptX e aptX HD sono lo stesso codec, con profili di codifica diversi.
Il codec ha solo un parametro: la selezione della frequenza di campionamento. C'è anche la scelta del numero/modalità dei canali, ma in tutti i dispositivi noti (oltre 70) è supportato esclusivamente Stereo.
Codec
Frequenza di campionamento
Profondità
Bitrate
Supporto per la codifica
Supporto per la decodifica
aptX
16, 32, 44.1, 48 kHz
16 bit
128 / 256 / 352 / 384 kbit/s (a seconda della frequenza di campionamento)
Windows 10 (desktop e mobile), macOS, Android 4.4+/7*, Blackberry OS 10
Ampia compatibilità con i dispositivi audio (hardware)
* Le versioni fino a 7 richiedono modifiche allo stack Bluetooth. Il codec è supportato solo se il produttore del dispositivo Android ha concesso in licenza l'uso del codec a Qualcomm (se nel sistema operativo sono presenti librerie di codifica).
aptX suddivide l'audio in 4 bande di frequenza e le quantizza con lo stesso numero di bit in modo costante: 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 (valori per una frequenza di campionamento di 44.1 kHz).
Esempio di audio aptX (in alto — segnale originale, in basso — aptX, spettrogrammi solo dei canali sinistri, suono in FLAC):
Le alte frequenze sono diventate leggermente più rosse, ma la differenza non è udibile.
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à rumore di quantizzazione, riducendo la gamma dinamica dell'audio.
Non si deve pensare che l'uso, ad esempio, di 2 bit per la larghezza di banda riduca la gamma dinamica a 12 dB: l'ADPCM consente di utilizzare fino a 96 dB di gamma dinamica anche con 2 bit di quantizzazione, ma solo con un certo segnale.
L'ADPCM memorizza la differenza tra la rappresentazione numerica dell'attuale campione e quella del campione successivo, invece di registrare il valore assoluto come nel PCM. Ciò consente di ridurre i requisiti in termini di bit necessari per memorizzare informazioni equivalenti (senza perdita) o praticamente equivalenti (con un errore di arrotondamento relativamente piccolo). A tal fine vengono utilizzate tabelle di coefficienti per ridurre gli errori di arrotondamento.
Nella creazione del codec, gli autori hanno calcolato i coefficienti dell'ADPCM su un insieme di file audio musicali. Più il segnale audio si avvicina a quell'insieme di musica su cui sono state costruite le tabelle, minori sono gli errori di quantizzazione (rumori) generati da aptX.
Per questo motivo, i test sintetici daranno sempre risultati inferiori rispetto alla musica. Ho creato un esempio sintetico specifico in cui aptX mostra risultati scadenti: un'onda sinusoidale a 12,4 kHz (in alto il segnale originale, in basso aptX. Audio in FLAC. Abbassate il volume!):
Grafico dello spettro:

Sono chiaramente udibili dei rumori.
Tuttavia, se si genera un'onda sinusoidale con ampiezza minore per renderla più silenziosa, i rumori si attenueranno, dimostrando così un ampio intervallo dinamico:

Per sentire la differenza tra il brano musicale originale e quello compresso, è possibile invertire uno dei segnali e sommare le tracce canale per canale. Questo approccio, in generale, è errato e non produrrebbe risultati significativi con codec più complessi, ma specificamente per ADPCM è del tutto adeguato.
La media quadratica della differenza tra i segnali si attesta a -37,4 dB, che non è molto per musica così compressa.
aptX HD
aptX HD non è un codec a sé stante, ma un profilo di codifica migliorato del codec aptX. Le modifiche riguardano il numero di bit dedicati alla codifica delle bande di frequenza: 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
Profondità
Bitrate
Supporto per la codifica
Supporto per la decodifica
aptX HD
16, 32, 44.1, 48 kHz
24 bit
192 / 384 / 529 / 576 kbit/s (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 concesso in licenza l'uso del codec a Qualcomm (se nel sistema operativo sono presenti librerie di codifica).
Meno diffuso rispetto ad aptX: sembra richiedere una licenza separata da Qualcomm e pagamenti di royalty differenti.
Ripetiamo l'esempio con un'onda sinusoidale a 12.4 kHz:

Molto meglio che con aptX, ma comunque rumoroso.
aptX Low Latency
Codec di Qualcomm, che non ha nulla a che fare con gli standard aptX e aptX HD, a giudicare dalle scarse informazioni fornite da persone coinvolte nel suo sviluppo. È progettato per la trasmissione interattiva di audio a bassa latenza (film, giochi), dove la latenza audio non può essere regolata tramite software. Non ci sono implementazioni software conosciute degli encoder e decoder, 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 kbit/s
Alcuni trasmettitori (hardware)
Alcuni dispositivi audio (hardware)
AAC
AAC, o Advanced Audio Coding, è un codec complesso dal punto di vista computazionale, con un modello psicodinamico sofisticato. Ha guadagnato larga diffusione per l'audio su internet, ed è il secondo più popolare dopo l'MP3. Richiede licenza e diritti di licenza: $15000 una tantum (o $1000 per le 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 a un comune equivoco, non appartiene a Apple.
Frequenza di campionamento
Bitrate
Supporto per la codifica
Supporto per la decodifica
8 — 96 kHz
8 — 576 kbit/s (per stereo), 256 — 320 kbit/s (tipico per Bluetooth)
macOS, Android 7+*, iOS
Ampia compatibilità con i dispositivi audio (hardware)
* solo su dispositivi i cui produttori hanno pagato i diritti di licenza
Su iOS e macOS viene utilizzato il miglior encoder AAC attualmente disponibile di Apple, che offre la massima qualità audio possibile. Su Android viene utilizzato un secondo encoder di qualità, il Fraunhofer FDK AAC, ma possono essere impiegati vari encoder hardware, integrati nella piattaforma (SoC), con qualità di codifica sconosciuta. , la qualità di codifica dell'AAC varia significativamente tra diversi telefoni Android:
La maggior parte dei dispositivi audio wireless per AAC ha un bitrate massimo di 320 kbps, mentre alcuni supportano solo 256 kbps. Gli altri bitrate si trovano molto raramente.
AAC offre un'ottima qualità a bitrates di 320 e 256 kbps, ma è soggetto , tuttavia, è difficile notare differenze significative rispetto all'originale su iOS a un bitrate di 256 kbps anche dopo diversi encode sequenziali; in un singolo encoding, ad esempio, MP3 320 kbps in AAC 256 kbps, le perdite possono essere trascurate.
Come nel caso di altri codec Bluetooth, la musica viene prima decodificata e poi ricodificata dal codec. Quando si ascolta musica in formato AAC, essa viene prima decodificata dal sistema operativo e poi ricodificata in AAC per la trasmissione via Bluetooth. Questo è necessario per mescolare più flussi audio, come musica e notifiche di nuovi messaggi. iOS non fa eccezione. In rete si possono trovare molte affermazioni secondo cui la musica in formato AAC su iOS non viene transcodificata durante il passaggio via Bluetooth, il che non è corretto.
MP1/2/3
I codec della famiglia MPEG-1/2 Parte 3 includono il noto e ampiamente utilizzato MP3, il meno comune MP2 (principalmente usato nella TV digitale e nella radio) e il completamente sconosciuto MP1.
I vecchi codec MP1 e MP2 non sono più supportati: non sono riuscito a trovare né auricolari né alcun stack Bluetooth che potesse codificarli o decodificarli.
La decodifica MP3 è supportata da alcune cuffie, ma la codifica non è supportata in nessuno degli stack dei moderni sistemi operativi. Sembra che lo stack di terze parti 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. La conclusione è che il codec non è praticamente utilizzabile per l'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 auricolare Nokia BH-501 attraverso il programma MSI BluePlayer, disponibile su Symbian e Windows Mobile. All'epoca, l'architettura dei sistemi operativi degli smartphone permetteva l'accesso a molte funzioni a basso livello, e su Windows Mobile era addirittura possibile installare stack Bluetooth di terze parti.
L'ultimo brevetto del codec MP3 è scaduto, l'uso del codec non richiede pagamenti di licenza dal 23 aprile 2017.
Se consideriamo il brevetto più longevo menzionato nei riferimenti precedenti come parametro, la tecnologia MP3 è diventata priva di brevetto negli Stati Uniti il 16 aprile 2017, quando è scaduto il brevetto statunitense 6,009,399, detenuto e gestito da Technicolor.
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
Un nuovo codec 'Hi-Res' attivamente promosso da Sony, supporta frequenze di campionamento fino a 96 kHz e profondità di bit a 24 bit, con un bitrate fino a 990 kbps. È pubblicizzato come un codec audiophile, come sostituto degli attuali codec Bluetooth. Ha una funzione di adattamento del bitrate in base alle condizioni del segnale radio.
L'encoder LDAC () è incluso nella fornitura standard di Android, quindi la codifica è supportata su qualsiasi smartphone Android a partire dalla versione 8 del sistema operativo. Non esistono decoder software disponibili liberamente, le specifiche del codec non sono accessibili al pubblico, tuttavia, a prima vista, l'architettura interna del codec sembra simile a — codec di Sony utilizzato in PlayStation 4 e Vita: entrambi operano nella gamma di frequenze, utilizzano una trasformata discreta del coseno modificata (MDCT) e la compressione tramite algoritmo di Huffman.
Il supporto per LDAC è praticamente offerto solo dalle cuffie di Sony. La possibilità di decodificare LDAC si trova talvolta su cuffie e DAC di altri produttori, ma molto raramente.
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 sporadici dispositivi di altri produttori (a livello hardware)
Il marketing di LDAC come codec Hi-Res danneggia il suo aspetto tecnico: è inutile sprecare bitrate per trasmettere frequenze non udibili all'orecchio umano e maggiore risoluzione, visto che non è sufficiente per trasmettere audio di qualità CD (44,1/16) senza perdite. Fortunatamente, il codec ha due modalità di funzionamento: trasmissione di audio CD e trasmissione di audio Hi-Res. Nel primo caso, viene trasmesso solo 44,1 kHz/16 bit.
Poiché il codec LDAC non è liberamente disponibile, non è possibile testarlo senza dispositivi aggiuntivi che decodifichino LDAC. Dai risultati del test LDAC su un DAC compatibile, cui gli ingegneri di SoundGuys.com si sono collegati tramite uscita digitale, registrando il suono emesso sui segnali di prova, si evince che LDAC a 660 e 990 kbps in modalità qualità CD offre un rapporto segnale/rumore leggermente migliore rispetto a aptX HD.
Fonte:
LDAC supporta anche bitrate dinamici al di fuori dei profili stabiliti, da 138 kbps a 990 kbps, ma, per quanto ne so, su Android vengono utilizzati solo i profili standardizzati 303/606/909 e 330/660/990 kbps.
Altri codec
Altri codec A2DP non hanno trovato una diffusione ampia. Il loro supporto è praticamente inesistente o limitato a specifici modelli di cuffie e smartphone.
Il codec ATRAC standardizzato in A2DP non è mai stato utilizzato come codec Bluetooth neanche da Sony stessa; i codec Samsung HD, Samsung Scalable e Samsung UHQ-BT hanno un supporto molto limitato da parte dei dispositivi di trasmissione e ricezione, mentre HWA LHDC è troppo nuovo e supportato da sole tre(?) apparecchiature.
Supporto dei codec da parte dei dispositivi audio
Non tutti i produttori pubblicano informazioni accurate sui codec supportati da cuffie, altoparlanti, ricevitori o trasmettitori wireless. A volte, il supporto per un determinato codec può essere presente solo in fase di trasmissione, ma non in fase di ricezione (vale per i trasmettitori-ricevitori combinati), sebbene il produttore dichiari semplicemente la «compatibilità» senza dettagli specifici (suppongo che sia colpa della licenza separata per gli encoder e decoder di alcuni codec). Negli apparecchi più economici, potrebbe non essere affatto presente il supporto dichiarato per aptX.
Sfortunatamente, 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 mostrati solo i codec supportati sia dal telefono/computer che dalle cuffie.
Come posso scoprire quali codec supporta il dispositivo? Registrare e analizzare un dump del traffico con le impostazioni di negoziazione A2DP!
È possibile farlo su Linux, macOS e Android. Su Linux puoi utilizzare Wireshark o hcidump, su macOS – Bluetooth Explorer, e su Android – la funzione integrata di salvataggio del Bluetooth HCI dump disponibile negli strumenti per sviluppatori. Ottieni un dump in formato btsnoop, che può essere caricato nell'analizzatore Wireshark.
Attenzione: puoi ottenere un dump corretto solo collegandoti con il telefono/computer a cuffie/casse (per quanto strano possa sembrare)! Le cuffie possono stabilire autonomamente la connessione con il telefono, e in questo caso richiederanno l'elenco dei codec al telefono, e non viceversa. Per registrare un dump corretto, disconnetti prima il dispositivo e poi, durante la registrazione del dump, accoppia il telefono con le cuffie.
Utilizza il seguente filtro di visualizzazione per escludere il traffico irrilevante:
btavdtp.signal_idDovresti vedere qualcosa di simile:
Puoi fare clic su ciascun elemento del comando GetCapabilities per vedere le specifiche dettagliate del codec.
Wireshark non conosce tutti gli identificatori dei codec, quindi alcuni codec dovranno essere decifrati manualmente consultando la tabella degli identificatori sottostante:
Obbligatorio:
0x00 - SBC
Facoltativo:
0x01 - MPEG-1,2 (noto anche come MP3)
0x02 - MPEG-2,4 (noto anche come 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 - Codice Scalabile di Samsung
0xFF 0x053A 0x484C - Savitech LHDC
0xFF 0x000A 0x0104 - L'ID del codec CSR True Wireless Stereo v3 per AAC
0xFF 0x000A 0x0105 - L'ID del codec CSR True Wireless Stereo v3 per MP3
0xFF 0x000A 0x0106 - L'ID del codec CSR True Wireless Stereo v3 per aptXPer non dover analizzare i dump manualmente, ho creato un servizio che analizzerà tutto automaticamente:
Confronto dei 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 modifiche all'encoder e al decoder. Né il produttore del telefono né il produttore delle cuffie possono cambiare il bitrate 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 di aptX: sapete in anticipo quale qualità sonora otterrete, senza alcun 'ma'.
SBC, d'altra parte, offre numerose opzioni di configurazione, un bitrate dinamico (il codificatore può ridurre il parametro bitpool se lo spettro radio è congestionato) e non ha profili rigidamente definiti, ma solo quelli raccomandati di «qualità media» e «alta qualità», aggiunti alla specifica A2DP nel 2003. «Alta qualità» non è più così alta secondo gli standard attuali, e la maggior parte degli stack Bluetooth non consente di utilizzare parametri superiori a quelli del profilo «alta qualità», anche se non ci sono restrizioni tecniche in tal senso.
Bluetooth SIG non dispone di un codificatore di riferimento SBC come libreria, e i produttori lo implementano autonomamente.
Questi sono i punti deboli dell'SBC: non è mai chiaro in anticipo quale qualità audio aspettarsi da un dispositivo specifico. SBC può offrire sia una qualità audio bassa che molto alta, ma quest'ultima è irraggiungibile senza disattivare o aggirare le limitazioni artificiali degli stack Bluetooth.
La situazione con AAC è ambigua: da un lato, teoricamente il codec dovrebbe offrire una qualità indistinguibile dall'originale, ma nella pratica, come dimostrano i test del laboratorio SoundGuys su vari dispositivi Android, ciò non è confermato. Probabilmente, la causa è da attribuire ai codec audio di bassa qualità integrati in vari chipset dei telefoni. Ha senso utilizzare AAC solo sui dispositivi Apple, mentre su Android è consigliabile limitarsi a aptX e LDAC.
L'hardware che supporta codec alternativi tende ad essere di qualità superiore, semplicemente perché per dispositivi molto economici e di bassa qualità non ha senso pagare royalties per utilizzare questi codec. Dai 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 questo, potrai testare questi codec audio senza la reale trasmissione audio via Bluetooth, su qualsiasi cuffia o altoparlante cablato, con la tua musica preferita, e modificare i parametri di codifica durante la riproduzione audio:
Il servizio utilizza le librerie di codifica SBC del progetto BlueZ e libopenaptx di ffmpeg, compilate in WebAssembly e JavaScript da C, tramite emscripten, per l'esecuzione nel browser. Chi avrebbe potuto sognare un futuro simile!
Ecco come appare:
Nota 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 valuta se riesci a sentire la 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 differenze tra i codec durante i test tramite il servizio web affermano di percepirle durante l'ascolto di musica con cuffie wireless. Purtroppo, non è uno scherzo e non è un effetto placebo: la differenza è reale, ma non è causata dalle qualità dei codec.
La stragrande maggioranza dei chipset audio Bluetooth utilizzati nei dispositivi wireless in ricezione è dotata di un processore di segnale digitale (Digital Signal Processor, DSP), che implementa equalizzatori, compressori, espansori stereo e altre funzionalità per migliorare (o modificare) il suono. I produttori di hardware 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 tra i codec, mentre in realtà ascolta diverse impostazioni del DSP.
Il processore audio DSP Kalimba nei chip prodotti da CSR/Qualcomm

Attivazione delle diverse funzionalità del DSP per ciascun codec e output separatamente.
Alcuni dispositivi di fascia premium sono forniti di software che consente di personalizzare le impostazioni del DSP, ma la maggior parte delle cuffie più economiche non dispone di tale opzione e gli utenti non possono disattivare il post-processing audio con mezzi standard.
Caratteristiche funzionali dei dispositivi
La versione moderna dello standard A2DP presenta una funzione di 'regolazione assoluta del volume'. — gestione del volume del dispositivo tramite comandi speciali del protocollo AVRCP, che regola l'amplificazione del circuito di uscita, anziché ridurre il volume del flusso audio a livello software. Se, modificando il volume nelle cuffie, non si sincronizza con quello del telefono, significa che le vostre cuffie o il telefono non supportano questa funzione. In tal caso, è consigliabile ascoltare la musica sempre al massimo volume sul telefono, regolando il volume effettivo con i pulsanti delle cuffie: in questo modo, il rapporto segnale/rumore sarà migliore e la qualità audio sarà superiore. deve essere superiore.
Tuttavia, nella realtà ci sono situazioni sfortunate. Sulle mie cuffie RealForce OverDrive D1, per SBC è attivato un forte compressore, e l'aumento del volume comporta l'innalzamento del livello dei suoni deboli, mentre il volume dei suoni forti rimane invariato (si verifica una compressione del segnale). Per questo motivo, devo impostare il volume sul computer a circa 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 assoluto, evidentemente questo è uno dei requisiti per la certificazione dei codec.
Alcune cuffie supportano la connessione a due dispositivi contemporaneamente. Questo permette, ad esempio, di ascoltare musica dal computer e ricevere chiamate dal telefono. Tuttavia, è importante sapere che in questa modalità vengono disattivati i codec alternativi e viene utilizzato solo SBC.
La funzione AVDTP 1.3 Delay Reporting permette alle cuffie di comunicare al dispositivo sorgente il ritardo con cui il suono viene effettivamente riprodotto. Questo consente di sincronizzare l'audio con il video durante la visione di file video: in caso di problemi di trasmissione via etere, l'audio non andrà avanti rispetto al video, ma viceversa, il video verrà bloccato dal lettore video fino a quando audio e video non si sincronizzeranno di nuovo.
La funzione è supportata da molte cuffie, Android 9+ e Linux con PulseAudio 12.0+. Non sono a conoscenza del supporto della funzione su altre piattaforme.
Comunicazione bidirezionale tramite Bluetooth. Trasmissione vocale.
Per la trasmissione vocale via Bluetooth viene utilizzato il Synchronous Connection Oriented (SCO) — una trasmissione sincrona con pre-accordo della connessione. Questa modalità consente di inviare suono e voce in modo rigorosamente sequenziale, con una velocità di invio e ricezione simmetrica, senza attendere conferme di trasmissione o ritrasmissione dei pacchetti. Ciò riduce la latenza complessiva della trasmissione audio attraverso il canale radio, ma impone seri limiti alla quantità di dati trasmessi per unità di tempo e influisce negativamente sulla qualità.
Quando viene utilizzata questa modalità, sia la voce che l'audio vengono trasmessi con la stessa qualità.
Purtroppo, a partire dal 2019, la qualità della trasmissione vocale tramite Bluetooth è ancora bassa, e non è chiaro perché il Bluetooth SIG non prenda provvedimenti in merito.
CVSD
Il codec base per la trasmissione vocale CVSD è stato standardizzato nel 2002 ed è supportato da tutti i dispositivi di comunicazione bidirezionale tramite Bluetooth. Garantisce la trasmissione audio con una frequenza di campionamento di 8 kHz, corrispondente alla qualità della normale telefonia via cavo.
.
mSBC
Il codec aggiuntivo mSBC è stato standardizzato nel 2009, mentre nel 2010 sono già apparsi i chip che lo utilizzano per la trasmissione vocale. mSBC è ampiamente supportato da vari dispositivi.
Non si tratta di un codec autonomo, ma di un normale SBC dello standard A2DP, con un profilo di codifica fisso: 16 kHz, mono, bitpool 26.
.
Non è eccezionale, ma decisamente migliore del CVSD; tuttavia, è ancora sgradevole utilizzarlo per comunicare su Internet, soprattutto quando si usano le cuffie per chiacchierare durante il gioco: il suono del gioco verrà anch'esso trasmesso a una frequenza di campionamento di 16 kHz.
FastStream. L'azienda CSR ha deciso di sviluppare l'idea di riutilizzo dell'SBC. Per superare le limitazioni del protocollo SCO e utilizzare bitrate più elevati, CSR ha intrapreso un altro percorso: hanno implementato il supporto audio SBC bidirezionale nello standard di trasmissione audio unidirezionale A2DP, hanno standardizzato i profili di codifica e l'hanno chiamato "FastStream".
FastStream trasmette audio stereo a 44,1 o 48 kHz con un bitrate di 212 kbps, mentre per la trasmissione dell'audio dal microfono si utilizza il mono a 16 kHz con un bitrate di 72 kbps (leggermente migliore rispetto a mSBC). Questi parametri sono molto più adatti per la comunicazione nei giochi online: il suono del gioco e delle conversazioni sarà di alta qualità.
(+ ).
L'azienda ha ideato un interessante workaround, ma poiché è in contrasto con lo standard A2DP, è supportato solo in alcuni trasmettitori dell'azienda (che funzionano come scheda audio USB, non come dispositivo Bluetooth), non ricevono supporto nei stack Bluetooth, anche se il numero di cuffie supportanti FastStream non è affatto trascurabile.
Attualmente, il supporto per FastStream in sistemi operativi esiste solo da parte dello sviluppatore Pali Rohár, che non è incluso nel ramo principale del programma.
aptX Low Latency
Con grande sorpresa, anche aptX Low Latency supporta audio bidirezionale, implementando lo stesso principio di FastStream.
Non sarà possibile utilizzare questa caratteristica del codec da nessuna parte: il supporto per la decodifica di Low Latency non è presente in nessun sistema operativo né in nessun stack Bluetooth a me noto.
Bluetooth 5, Classic e Low Energy
C'è stata molta confusione intorno alle specifiche e alle versioni di Bluetooth a causa della presenza di due standard incompatibili sotto lo stesso marchio, entrambi ampiamente utilizzati per scopi diversi.
Esistono due protocolli Bluetooth differenti e incompatibili: Bluetooth Classic e Bluetooth Low Energy (LE, noto anche come Bluetooth Smart). C'è anche un terzo protocollo, Bluetooth High Speed, ma non è comune e non viene utilizzato nei dispositivi domestici.
A partire da Bluetooth 4.0, le modifiche alla specifica si sono concentrate principalmente su Bluetooth Low Energy, mentre la versione Classic ha ricevuto solo lievi miglioramenti.
Elenco delle modifiche tra Bluetooth 4.2 e Bluetooth 5:
9 MODIFICHE DA v4.2 A 5.0
9.1 NUOVE CARATTERISTICHE
Diversi nuovi elementi sono stati introdotti nella Bluetooth Core Specification 5.0. I principali ambiti di miglioramento sono:
• Slot Availability Mask (SAM)
• 2 Msym/s PHY per LE
• LE Long Range
• Alta frequenza di trasmissione non connettibile
• Estensioni di pubblicità LE
• Algorithm di selezione del canale LE #2
9.1.1 Caratteristiche aggiunte in CSA5 — integrate in v5.0
• Maggiore potenza in uscita
Fonte: (pagina 291)
Solo una modifica ha riguardato la versione Classic nella specifica Bluetooth 5: è stato aggiunto il supporto per la tecnologia Slot Availability Mask (SAM), progettata per migliorare la gestione dello spettro radio. Tutte le altre modifiche riguardano solo Bluetooth LE (inclusa anche la maggiore potenza in uscita).
Tutti I dispositivi audio utilizzano solo Bluetooth Classic. Non è possibile collegare cuffie e altoparlanti tramite Bluetooth Low Energy: non esiste uno standard per la trasmissione audio utilizzando LE. Lo standard A2DP, utilizzato per la trasmissione di audio di alta qualità, funziona esclusivamente tramite Bluetooth Classic, e non ha un equivalente in LE.
La conclusione è che acquistare dispositivi audio con Bluetooth 5 solo per la nuova versione del protocollo è insensato. Bluetooth 4.0/4.1/4.2 funzionerà esattamente allo stesso modo nella trasmissione audio.
Se l'annuncio di nuove cuffie menziona un raggio di azione raddoppiato e un minore consumo energetico grazie al Bluetooth 5, sappiate che o non sanno di cosa parlano o stanno fuorviando. Non sorprende, dato che anche i produttori di chip Bluetooth si confondono nelle loro dichiarazioni sulle differenze della nuova versione dello standard, e alcuni chip Bluetooth 5 supportano la quinta versione solo per LE, mentre per Classic utilizzano 4.2.
Ritardo nella trasmissione audio
L'entità del ritardo (latenza) audio dipende da molti fattori: dalla dimensione del buffer nello stack audio, nello stack Bluetooth e nel dispositivo wireless di riproduzione stesso, nonché dal ritardo algoritmico del codec.
Il ritardo dei codec semplici, come SBC, aptX e aptX HD, è molto ridotto, pari a 3-6 ms, un valore trascurabile. Tuttavia, i codec complessi, come AAC e LDAC, possono causare un ritardo significativo. Il ritardo algoritmico di AAC a 44.1 kHz è di 60 ms. LDAC si attesta intorno ai 30 ms (basato su un'analisi preliminare 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 riscontrato un intervallo da 150 a 250 ms su dispositivi diversi (con codec SBC). Se si presume che i dispositivi compatibili con codec avanzati come aptX, AAC e LDAC utilizzino componenti di alta qualità e un buffer ridotto, si avranno 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 dai sistemi operativi, quindi ritardi minori possono essere ottenuti solo utilizzando un trasmettitore e un ricevitore o un trasmettitore e cuffie/altoparlanti, a condizione che tutti i dispositivi supportino questo codec.
Problemi con certificazione e loghi Bluetooth dei dispositivi
Come distinguere un dispositivo audio di qualità da un prodotto scadente? Dall'aspetto, prima di tutto!
Negli auricolari, altoparlanti e ricevitori cinesi economici:
- La parola «Bluetooth» è assente sulla confezione e sul dispositivo, viene spesso utilizzato «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 superato la certificazione, il che significa che potrebbe essere di bassa qualità e problematico. Ad esempio, le cuffie del marchio Bluedio non sono certificate Bluetooth e non soddisfano completamente la specifica A2DP. Non avrebbero superato la certificazione.
Esaminiamo alcuni dispositivi e le loro confezioni:
Questi sono tutti dispositivi non certificati. Nelle istruzioni 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 tue cuffie o l'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 costo di una qualità audio ridotta durante le chiamate, un aumento della latenza che può risultare fastidiosa nei giochi, e una varietà di codec proprietari che richiedono pagamenti di licenza, aumentando così il costo finale sia degli smartphone che delle cuffie.
Il marketing dei codec alternativi è molto forte: aptX e LDAC vengono presentati come la tanto attesa sostituzione dell'«obsoleto e scadente» SBC, che in realtà non è così scadente come si tende a pensare.
È emerso che le limitazioni artificiali nei stack Bluetooth sul bitrate SBC possono essere aggirate, permettendo a SBC di competere con aptX HD. Ho preso l'iniziativa e ho creato una patch per il firmware di LineageOS:
Ulteriori informazioni possono essere trovate sui siti e .
Bonus: . Questo file era precedentemente disponibile pubblicamente sul sito Bluetooth, ma ora è accessibile solo ai membri di Bluetooth SIG.
Fonte: habr.com

sulla confezione o sul dispositivo