Audio por Bluetooth: detalles máximos sobre perfís, códecs e dispositivos

Audio por Bluetooth: detalles máximos sobre perfís, códecs e dispositivos

Debido á produción masiva de teléfonos intelixentes sen conector de audio de 3.5 mm, os auriculares sen fíos Bluetooth convertéronse na principal forma de escoitar música e comunicarse no modo de auriculares.
Os fabricantes de dispositivos sen fíos non sempre escriben especificacións detalladas do produto e os artigos sobre audio Bluetooth en Internet son contraditorios, ás veces incorrectos, non falan de todas as funcións e moitas veces copian a mesma información que non se corresponde coa realidade.
Tentemos comprender o protocolo, as capacidades das pilas do sistema operativo Bluetooth, os auriculares e os altofalantes, os códecs Bluetooth para música e voz, descubra o que afecta a calidade do son transmitido e a latencia, aprende a recompilar e decodificar información sobre os códecs compatibles e outros dispositivos. capacidades.

TL, RD:

  • SBC - codec normal
  • Os auriculares teñen o seu propio ecualizador e posprocesamento para cada códec por separado
  • aptX non é tan bo como se anuncia
  • LDAC é unha merda de mercadotecnia
  • A calidade das chamadas aínda é mala
  • Podes incorporar codificadores de audio C no teu navegador compilándoos en WebAssembly a través de emscripten, e non ralentizarán moito.

Música a través de Bluetooth

O compoñente funcional do Bluetooth está determinado polos perfís: especificacións de funcións específicas. A transmisión de música Bluetooth utiliza un perfil de transmisión de audio unidireccional A2DP de alta calidade. O estándar A2DP adoptouse en 2003 e non cambiou significativamente desde entón.
Dentro do perfil, están estandarizados 1 códec obrigatorio de baixa complexidade computacional SBC, creado especificamente para Bluetooth, e 3 adicionais. Tamén é posible utilizar códecs non documentados da súa propia implementación.

A partir de xuño de 2019 estamos no cómic xkcd con 14 códecs A2DP:

  • SBC ← estandarizado en A2DP, compatible con todos os dispositivos
  • MPEG-1/2 Layer 1/2/3 ← estandarizado en A2DP: ben coñecido MP3, usado na televisión dixital MP2, e descoñecido MP1
  • MPEG-2/4 AAC ← estandarizado en A2DP
  • ATRACCIÓN ← códec antigo de Sony, estandarizado en A2DP
  • LDAC ← novo códec de Sony
  • aptoX ← codec de 1988
  • aptXHD ← igual que aptX, só con opcións de codificación diferentes
  • aptX Baixa latencia ← Códec completamente diferente, sen implementación de software
  • aptX Adaptive ← outro códec de Qualcomm
  • FastStream ← pseudocódec, modificación SBC bidireccional
  • HWA LHDC ← novo códec de Huawei
  • Samsung HD ← compatible con 2 dispositivos
  • Samsung escalable ← compatible con 2 dispositivos
  • Samsung UHQ-BT ← compatible con 3 dispositivos

Por que necesitamos códecs cando Bluetooth ten EDR, que che permite transferir datos a velocidades de 2 e 3 Mbit/s, e para PCM de 16 bits de dúas canles sen comprimir, 1.4 Mbit/s é suficiente?

Transferencia de datos a través de Bluetooth

Existen dous tipos de transferencia de datos en Bluetooth: Asynchronous Connection Less (ACL) para transferencia asíncrona sen establecer conexión, e Synchronous Connection Oriented (SCO), para transferencia síncrona con negociación de conexión preliminar.
A transmisión realízase mediante un esquema de división de tempo e seleccionando unha canle de transmisión para cada paquete por separado (Frequency-Hop/Time-Division-Duplex, FH/TDD), para o que o tempo divídese en intervalos de 625 microsegundos chamados slots. Un dos dispositivos transmite en slots pares, o outro en slots impares. O paquete transmitido pode ocupar 1, 3 ou 5 slots, dependendo do tamaño dos datos e do tipo de transmisión establecido, neste caso, a transmisión por un dispositivo realízase en slots pares e impares ata o final da transmisión. En total, pódense recibir e enviar ata 1600 paquetes por segundo, se cada un deles ocupa 1 slot, e ambos os dispositivos transmiten e reciben algo sen parar.

2 e 3 Mbit/s para EDR, que se poden atopar nos anuncios e no sitio web de Bluetooth, son a taxa máxima de transferencia de canles de todos os datos en total (incluíndo as cabeceiras técnicas de todos os protocolos nos que se deben encapsular os datos), en dúas direccións. simultaneamente. A velocidade real de transferencia de datos variará moito.

Para transmitir música utilízase un método asíncrono, empregando case sempre paquetes como 2-DH5 e 3-DH5, que levan unha cantidade máxima de datos en modo EDR de 2 Mbit/s e 3 Mbit/s, respectivamente, e ocupan 5 tempos. - slots para compartir.

Representación esquemática da transmisión mediante 5 slots por un dispositivo e 1 slot por outro (DH5/DH1):
Audio por Bluetooth: detalles máximos sobre perfís, códecs e dispositivos

Debido ao principio de división do tempo das ondas, vémonos obrigados a esperar un intervalo de tempo de 625 microsegundos despois de transmitir un paquete se o segundo dispositivo non nos transmite nada ou transmite un pequeno paquete, e máis tempo se o segundo dispositivo transmite. en paquetes grandes. Se hai máis dun dispositivo conectado ao teléfono (por exemplo, auriculares, reloxos e unha pulseira de fitness), o tempo de transferencia compártese entre todos.

A necesidade de encapsular o audio en protocolos de transporte especiais L2CAP e AVDTP leva 16 bytes da cantidade máxima posible de carga útil de audio transmitida.

Tipo de paquete
Número de slots
Máx. número de bytes do paquete
Máx. número de bytes de carga útil A2DP
Máx. Taxa de bits da carga útil A2DP

2-DH3
3
367
351
936 kbps

3-DH3
3
552
536
1429 kbps

2-DH5
5
679
663
1414 kbps

3-DH5
5
1021
1005
2143 kbps

1414 e 1429 kbps definitivamente non son suficientes para transmitir audio sen comprimir en condicións reais, co ruidoso rango de 2.4 GHz e a necesidade de transmitir datos de servizo. EDR 3 Mbit/s esixe potencia de transmisión e ruído no aire, polo tanto, mesmo no modo 3-DH5, a transmisión PCM cómoda é imposible, sempre haberá interrupcións a curto prazo e todo funcionará só a unha distancia dun un par de metros.
Na práctica, incluso un fluxo de audio de 990 kbit/s (LDAC 990 kbit/s) é difícil de transmitir.

Volvamos aos códecs.

SBC

Códec necesario para todos os dispositivos que admiten o estándar A2DP. O mellor e o peor códec ao mesmo tempo.

Frecuencia de mostraxe
Capacidade
Taxa de bits
Soporte de codificación
Soporte de decodificación

16, 32, 44.1, 48 kHz
16 bit
10-1500 kbps
Todos os dispositivos
Todos os dispositivos

SBC é un códec sinxelo e computacionalmente rápido, cun modelo psicoacústico primitivo (só se aplica o enmascaramento de sons silenciosos), que utiliza a modulación de código de pulso adaptativo (APCM).
A especificación A2DP recomenda dous perfís para o seu uso: Calidade media e Calidade alta.
Audio por Bluetooth: detalles máximos sobre perfís, códecs e dispositivos

O códec ten moitos axustes que permiten controlar o retardo algorítmico, o número de mostras nun bloque, o algoritmo de distribución de bits, pero case en todas partes utilízanse os mesmos parámetros recomendados na especificación: Joint Stereo, 8 bandas de frecuencia, 16 bloques en un marco de audio, método de distribución de bits de sonoridade.
SBC admite o cambio dinámico do parámetro Bitpool, que afecta directamente á taxa de bits. Se as ondas están obstruídas, se perden paquetes ou se sitúan os dispositivos a grandes distancias, a fonte de audio pode reducir o Bitpool ata que a comunicación volva á normalidade.

A maioría dos fabricantes de auriculares establecen o valor máximo de Bitpool en 53, o que limita a taxa de bits a 328 kilobits por segundo cando se usa o perfil recomendado.
Aínda que o fabricante de auriculares estableceu o valor máximo de Bitpool por encima de 53 (se atopan tales modelos, por exemplo: Beats Solo³, JBL Everest Elite 750NC, Apple AirPods, que tamén se atopan nalgúns receptores e unidades de cabeza de coche), entón a maioría dos sistemas operativos non o permitirán. o uso de taxas de bits aumentadas debido ao límite de valor interno establecido nas pilas Bluetooth.
Ademais, algúns fabricantes establecen o valor máximo de Bitpool en baixo para algúns dispositivos. Por exemplo, para Bluedio T é de 39, para Samsung Gear IconX é de 37, o que dá mala calidade de son.

As restricións artificiais por parte dos desenvolvedores de pilas Bluetooth probablemente xurdiron debido á incompatibilidade dalgúns dispositivos con grandes valores de Bitpool ou perfís atípicos, aínda que informaron de compatibilidade con eles, e probas insuficientes durante a certificación. Foi máis doado para os autores de pilas Bluetooth limitarse a poñerse de acordo no perfil recomendado, en lugar de crear bases de datos de dispositivos incorrectos (aínda que agora fan isto para outras funcións que funcionan incorrectamente).

SBC asigna de forma dinámica os bits de cuantización ás bandas de frecuencia de forma baixa a alta, con diferentes pesos. Se se utilizou toda a taxa de bits para as frecuencias baixas e medias, as frecuencias altas "cortaranse" (haberá silencio no seu lugar).

Exemplo SBC 328 kbps. Na parte superior está o orixinal, na parte inferior está o SBC, cambiando periodicamente entre as pistas. O audio do ficheiro de vídeo usa o códec de compresión sen perdas FLAC. O uso de FLAC nun contedor mp4 non está estandarizado oficialmente, polo que non se garante que o teu navegador o reproduza, pero debería funcionar nas últimas versións de Chrome e Firefox de escritorio. Se non tes son, podes descargar o ficheiro e abrilo nun reprodutor de vídeo completo.
ZZ Top - Hombre vestido afiado

O espectrograma mostra o momento da conmutación: SBC corta periodicamente os sons tranquilos superiores a 17.5 kHz e non asigna ningún bit para a banda superior a 20 kHz. O espectrograma completo está dispoñible facendo clic (1.7 MB).
Audio por Bluetooth: detalles máximos sobre perfís, códecs e dispositivos

Non escoito ningunha diferenza entre o orixinal e o SBC neste tema.

Tomemos algo máis novo e simulemos o audio que se obtería cos auriculares Samsung Gear IconX con Bitpool 37 (arriba - o sinal orixinal, abaixo - SBC 239 kbps, audio en FLAC).
Mindless Self Indulgence - Testemuña

Escoito crepitar, menos efecto estéreo e un son desagradable de "calor" nas frecuencias altas das voces.

Aínda que SBC é un códec moi flexible, pódese configurar para unha baixa latencia, ofrece unha excelente calidade de audio a altas taxas de bits (452+ kbps) e é bastante bo para a maioría da xente en alta calidade estándar (328 kbps), debido ao feito de que o estándar A2DP non especifica perfís fixos (pero só dá recomendacións), os desenvolvedores de pila estableceron restricións artificiais en Bitpool, os parámetros do audio transmitido non se amosan na interface de usuario e os fabricantes de auriculares poden configurar a súa propia configuración e nunca indicar o valor de Bitpool nas especificacións técnicas do produto, o códec fíxose famoso pola súa baixa calidade de son, aínda que isto non é un problema co códec como tal.
O parámetro Bitpool afecta directamente a taxa de bits só dentro dun perfil. O mesmo valor de Bitpool 53 pode dar tanto unha taxa de bits de 328 kbps co perfil High Quality recomendado, como de 1212 kbps con Dual Channel e 4 bandas de frecuencia, polo que os autores do SO, ademais das restricións sobre Bitpool, establecen un límite e activado. Taxa de bits. Segundo o vexo, esta situación xurdiu debido a unha falla no estándar A2DP: era necesario negociar a taxa de bits, non Bitpool.

Táboa de compatibilidade para as capacidades de SBC en diferentes SO:

SO
Taxas de mostraxe admitidas
Límite máx. Bitpool
Límite máx. Taxa de bits
Bitrate típico
Axuste dinámico de Bitpool

fiestras 10
44.1 кГц
53
512 kbps
328 kbps
✓*

Linux (BlueZ + PulseAudio)
16, 32, 44.1, 48 kHz
64 (para conexións entrantes), 53 (para conexións saíntes)
Sen límite
328 kbps
✓*

MacOS High Sierra
44.1 кГц
64, predeterminado 53***
Descoñecido
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 кГц
53
Sen límite
328 kbps

* Bitpool só diminúe, pero non aumenta automaticamente, se as condicións de transferencia melloran. Para restaurar Bitpool, cómpre deter a reprodución, esperar uns segundos e iniciar o audio de novo.
** O valor predeterminado depende da configuración da pila especificada ao compilar o firmware. En Android 8/8.1 a frecuencia é só de 44.1 kHz ou 48 kHz, dependendo da configuración durante a compilación, noutras versións soportan 44.1 kHz e 48 kHz simultáneamente.
*** O valor de Bitpool pódese aumentar no programa Bluetooth Explorer.

aptX e aptX HD

aptX é un códec sinxelo e computacionalmente rápido, sen psicoacústica, que utiliza modulación de código de pulso diferencial adaptativo (ADPCM). Apareceu arredor de 1988 (data de presentación patente con data de febreiro de 1988), antes de Bluetooth, utilizábase principalmente en equipos de audio sen fíos profesionais. Actualmente propiedade de Qualcomm, require licenza e dereitos de autor. A partir de 2014: 6000 $ por soa vez e ≈ 1 $ por dispositivo, para lotes de ata 10000 dispositivos (fonte, páx. 16).
aptX e aptX HD son o mesmo códec, con diferentes perfís de codificación.

O códec só ten un parámetro: seleccionar a frecuencia de mostraxe. Non obstante, hai unha selección do número/modo de canles, pero en todos os dispositivos que coñezo (máis de 70 pezas) só se admite o estéreo.

Códec
Frecuencia de mostraxe
Capacidade
Taxa de bits
Soporte de codificación
Soporte de decodificación

aptoX
16, 32, 44.1, 48 kHz
16 bit
128/256/352/384 kbps (dependendo da frecuencia de mostraxe)
Windows 10 (escritorio e móbil), macOS, Android 4.4+/7*, Blackberry OS 10
Amplia gama de dispositivos de audio (hardware)

* As versións ata 7 requiren a modificación da pila Bluetooth. O códec só é compatible se o fabricante do dispositivo Android ten licenza de códec de Qualcomm (se o sistema operativo ten bibliotecas de codificación).

aptX divide o audio en 4 bandas de frecuencia e cuantízaas co mesmo número de bits constantemente: 8 bits para 0-5.5 kHz, 4 bits para 5.5-11 kHz, 2 bits para 11-16.5 kHz, 2 bits para 16.5-22 kHz ( cifras para a frecuencia de mostraxe 44.1 kHz).

Exemplo de audio aptX (na parte superior - o sinal orixinal, na parte inferior - aptX, espectrogramas só das canles da esquerda, son en FLAC):

Os máximos volvéronse un pouco máis vermellos, pero non se podía escoitar a diferenza.

Debido á distribución fixa dos bits de cuantización, o códec non pode "desplazar os bits" ás frecuencias que máis os necesitan. A diferenza de SBC, aptX non "cortará" as frecuencias, senón que lles engadirá ruído de cuantificación, reducindo o rango dinámico do audio.

Non se debe asumir que usar, por exemplo, 2 bits por banda reduce o rango dinámico a 12 dB: ADPCM permite ata 96 dB de rango dinámico mesmo cando se usan 2 bits de cuantización, pero só para un determinado sinal.
ADPCM almacena a diferenza numérica entre a mostra actual e a seguinte, en lugar de almacenar o valor absoluto como en PCM. Isto permítelle reducir os requisitos para o número de bits necesarios para almacenar a mesma información (sen perda) ou case a mesma (cun ​​erro de redondeo relativamente pequeno). Para reducir os erros de redondeo, utilízanse táboas de coeficientes.
Ao crear o códec, os autores calcularon os coeficientes ADPCM nun conxunto de ficheiros de audio de música. Canto máis preto estea o sinal de audio do conxunto de música sobre o que se construíron as táboas, menos erros de cuantización (ruído) crea aptX.

Por iso, as probas sintéticas sempre producirán peores resultados que a música. Fixen un exemplo sintético especial no que aptX mostra malos resultados: unha onda sinusoidal cunha frecuencia de 12.4 kHz (arriba - o sinal orixinal, abaixo - aptX. Audio en FLAC. Baixa o volume!):

Gráfico de espectro:
Audio por Bluetooth: detalles máximos sobre perfís, códecs e dispositivos

Os ruídos son claramente audibles.

Non obstante, se xeras unha onda sinusoidal cunha amplitude menor para que sexa máis silenciosa, o ruído tamén se fará máis silencioso, indicando un amplo rango dinámico:

Audio por Bluetooth: detalles máximos sobre perfís, códecs e dispositivos

Para escoitar a diferenza entre a pista de música orixinal e a comprimida, podes inverter un dos sinais e engadir as pistas canle por canle. Este enfoque é, en xeral, incorrecto e non daría resultados sensatos con códecs máis complexos, pero específicamente para ADPCM é bastante axeitado.
Diferenza entre orixinal e aptX
A diferenza cadrada media dos sinais está no nivel de -37.4 dB, o que non é moito para esa música comprimida.

aptXHD

aptX HD non é un códec autónomo, é un perfil de codificación mellorado do códec aptX. Os cambios afectaron ao número de bits asignados para os rangos de frecuencia de codificación: 10 bits para 0-5.5 kHz, 6 bits para 5.5-11 kHz, 4 bits para 11-16.5 kHz, 4 bits para 16.5-22 kHz (díxitos para 44.1 kHz) .

Códec
Frecuencia de mostraxe
Capacidade
Taxa de bits
Soporte de codificación
Soporte de decodificación

aptXHD
16, 32, 44.1, 48 kHz
24 bits
192/384/529/576 kbps (dependendo da frecuencia de mostraxe)
Android 8+*
Algúns dispositivos de audio (hardware)

* As versións ata 7 requiren a modificación da pila Bluetooth. O códec só é compatible se o fabricante do dispositivo Android ten licenza de códec de Qualcomm (se o sistema operativo ten bibliotecas de codificación).

Menos común que aptX: aparentemente require licenzas separadas de Qualcomm e taxas de licenza separadas.

Repetimos o exemplo cunha onda sinusoidal a 12.4 kHz:
Audio por Bluetooth: detalles máximos sobre perfís, códecs e dispositivos

Moito mellor que aptX, pero aínda un pouco ruidoso.

aptX Baixa latencia

Un códec de Qualcomm que non ten nada en común co estándar aptX e aptX HD, a xulgar pola escasa información das persoas implicadas no seu desenvolvemento. Deseñado para a transmisión de audio interactiva de baixa latencia (películas, xogos), onde o retardo de audio non se pode axustar mediante software. Non hai implementacións de software coñecidas de codificadores e decodificadores; son compatibles exclusivamente con transmisores, receptores, auriculares e altofalantes, pero non por teléfonos intelixentes e ordenadores.

Frecuencia de mostraxe
Taxa de bits
Soporte de codificación
Soporte de decodificación

44.1 кГц
276/420 kbps
Algúns transmisores (hardware)
Algúns dispositivos de audio (hardware)

AAC

AAC, ou Advanced Audio Coding, é un códec computacionalmente complexo cun modelo psicoacústico serio. Amplamente utilizado para audio en Internet, segundo en popularidade despois do MP3. Require licenzas e dereitos de autor: 15000 USD por unha soa vez (ou 1000 USD para empresas con menos de 15 empregados) + 0.98 USD para os primeiros 500000 dispositivos (fonte).
O códec está estandarizado dentro das especificacións MPEG-2 e MPEG-4 e, contrariamente ao malentendido común, non pertence a Apple.

Frecuencia de mostraxe
Taxa de bits
Soporte de codificación
Soporte de decodificación

8-96 kHz
8 - 576 kbps (para estéreo), 256 - 320 kbps (típico para Bluetooth)
macOS, Android 7+*, iOS
Amplia gama de dispositivos de audio (hardware)

* só nos dispositivos cuxos fabricantes pagaron taxas de licenza

iOS e macOS usan o mellor codificador AAC actual de Apple para ofrecer a máxima calidade de audio posible. Android usa o segundo codificador Fraunhofer FDK AAC de calidade máis alta, pero pode utilizar varios hardware integrados na plataforma (SoC) cunha calidade de codificación descoñecida. Segundo probas recentes no sitio web de SoundGuys, a calidade de codificación AAC dos diferentes teléfonos Android varía moito:
Audio por Bluetooth: detalles máximos sobre perfís, códecs e dispositivos

A maioría dos dispositivos de audio sen fíos teñen unha taxa de bits máxima de 320 kbps para AAC, algúns só admiten 256 kbps. Outras taxas de bits son extremadamente raras.
AAC ofrece unha calidade excelente a velocidades de bits de 320 e 256 kbps, pero está suxeita a perda da codificación secuencial do contido xa comprimido, non obstante, é difícil escoitar diferenzas co orixinal en iOS a unha taxa de bits de 256 kbps mesmo con varias codificacións secuenciais; cunha única codificación, por exemplo, MP3 320 kbps a AAC 256 kbps, pódense descoidar as perdas.
Do mesmo xeito que con outros códecs Bluetooth, calquera música é primeiro descodificada e despois codificada polo códec. Cando se escoita música en formato AAC, primeiro é descodificada polo SO e despois codifica de novo en AAC para a súa transmisión a través de Bluetooth. Isto é necesario para mesturar varios fluxos de audio, como música e notificacións de novas mensaxes. iOS non é unha excepción. En Internet podes atopar moitas afirmacións de que en iOS a música en formato AAC non se transcodifica cando se transmite por Bluetooth, o que non é certo.

MP1/2/3

Os códecs da familia MPEG-1/2 Part 3 consisten no coñecido e amplamente utilizado MP3, o MP2 menos común (utilizado principalmente na radio e televisión dixital) e o MP1 completamente descoñecido.

Os antigos códecs MP1 e MP2 non son compatibles en absoluto: non puiden atopar ningún auricular ou pila Bluetooth que os codifique ou descodifique.
A decodificación de MP3 é compatible con algúns auriculares, pero a codificación non é compatible con ningún sistema operativo moderno. Parece que a pila BlueSoleil de terceiros para Windows pode codificar en MP3 se cambia manualmente o ficheiro de configuración, pero para min a instalación leva a BSoD en Windows 10. Conclusión: o códec en realidade non se pode usar para o audio Bluetooth.
Anteriormente, en 2006-2008, antes da difusión do estándar A2DP nos dispositivos, a xente escoitaba música MP3 nos auriculares Nokia BH-501 a través do programa MSI BluePlayer, que estaba dispoñible en Symbian e Windows Mobile. Nese momento, a arquitectura do sistema operativo dos teléfonos intelixentes permitía o acceso a moitas funcións de baixo nivel, e en Windows Mobile incluso era posible instalar pilas Bluetooth de terceiros.

A última patente do códec MP3 caducou, o uso do códec non require taxas de licenza desde o 23 de abril de 2017.

Se se toma como medida a patente de maior duración mencionada nas citadas referencias, entón a tecnoloxía MP3 quedou sen patentes nos Estados Unidos o 16 de abril de 2017 cando caducou a patente estadounidense 6,009,399, en poder e administrada por Technicolor.

Fonte: www.iis.fraunhofer.de/en/ff/amm/prod/audiocodec/audiocodecs/mp3.html

Frecuencia de mostraxe
Taxa de bits
Soporte de codificación
Soporte de decodificación

16-48 kHz
8-320 kbps
Non é compatible en ningún lugar
Algúns dispositivos de audio (hardware)

LDAC

Un códec "Hi-Res" novo e promovido activamente de Sony, que admite taxas de mostraxe de ata 96 kHz e 24 bits, con taxas de bits de ata 990 kbps. Anúnciase como un códec para audiófilos, como un substituto dos códecs Bluetooth existentes. Ten a función de axuste adaptativo da taxa de bits, dependendo das condicións de transmisión de radio.

codificador LDAC (libdac) está incluído no paquete estándar de Android, polo que a codificación é compatible con calquera teléfono intelixente Android que inicie coa versión 8 do SO. Non hai decodificadores de software libremente dispoñibles, a especificación do códec non está dispoñible para o público en xeral, non obstante, a primeira vista do codificador, a estrutura interna do códec é semellante á ATRAC9 - Códec de Sony usado na PlayStation 4 e na Vita: ambos funcionan no dominio da frecuencia, usan unha transformada coseno discreta modificada (MDCT) e compresión mediante o algoritmo de Huffman.

O soporte LDAC prodúcese case exclusivamente por auriculares de Sony. A capacidade de decodificar LDAC atópase ás veces en auriculares e DAC doutros fabricantes, pero moi raramente.

Frecuencia de mostraxe
Taxa de bits
Soporte de codificación
Soporte de decodificación

44.1-96 kHz
303/606/909 kbit/s (para 44.1 e 88.2 kHz), 330/660/990 kbit/s (para 48 e 96 kHz)
Android 8 +
Algúns auriculares de Sony e algúns dispositivos doutros fabricantes (hardware)

A comercialización de LDAC como códec de alta resolución prexudica o seu compoñente técnico: é estúpido gastar a taxa de bits en transmitir frecuencias inaudibles para o oído humano e aumentar a profundidade de bits, mentres que non é suficiente para transmitir a calidade do CD (44.1/16) sen perda. . Afortunadamente, o códec ten dous modos de funcionamento: transmisión de audio por CD e transmisión de audio de alta resolución. No primeiro caso, só se transmiten polo aire 44.1 kHz/16 bits.

Dado que un decodificador de software LDAC non está dispoñible gratuitamente, é imposible probar o códec sen dispositivos adicionais que decodifiquen LDAC. Segundo os resultados da proba LDAC nun DAC co seu soporte, que os enxeñeiros de SoundGuys.com conectaron a través dunha saída dixital e gravaron o son de saída en sinais de proba, LDAC 660 e 990 kbps en modo de calidade CD proporciona un sinal para relación de ruído lixeiramente mellor que a do aptX HD.

Audio por Bluetooth: detalles máximos sobre perfís, códecs e dispositivos
Fonte: www.soundguys.com/ldac-ultimate-bluetooth-guide-20026

LDAC tamén admite taxas de bits dinámicas fóra dos perfís establecidos, de 138 kbps a 990 kbps, pero, polo que eu podo dicir, Android só usa os perfís estandarizados 303/606/909 e 330/660/990 kbps.

Outros codecs

Outros códecs A2DP non son moi utilizados. O seu soporte está case completamente ausente ou só está dispoñible en certos modelos de auriculares e teléfonos intelixentes.
O códec ATRAC estandarizado en A2DP nunca foi usado como códec Bluetooth nin sequera pola propia Sony, os códecs Samsung HD, Samsung Scalable e Samsung UHQ-BT teñen unha compatibilidade moi limitada de dispositivos de transmisión e recepción, e HWA LHDC é demasiado novo e só admite tres (?) dispositivos.

Soporte de códec para dispositivos de audio

Non todos os fabricantes publican información precisa sobre os códecs compatibles con determinados auriculares, altofalantes, receptores ou transmisores sen fíos. Ás veces ocorre que o soporte para un determinado códec é só para transmisión, pero non para recepción (relevante para transmisores-receptores combinados), aínda que o fabricante simplemente declara "soporte", sen notas (supoño que a licenza separada de codificadores e decodificadores dalgúns codecs son os culpables disto). Nos dispositivos máis baratos, é posible que non atopes o soporte aptX declarado.

Desafortunadamente, as interfaces da maioría dos sistemas operativos non mostran o códec usado en ningún lugar. A información sobre isto só está dispoñible en Android, a partir da versión 8, e macOS. Non obstante, mesmo nestes sistemas operativos, só se mostrarán aqueles códecs compatibles tanto polo teléfono/computadora como polos auriculares.

Como podes saber que códecs admite o teu dispositivo? Grava e analiza o volcado de tráfico cos parámetros de negociación A2DP.
Isto pódese facer en Linux, macOS e Android. En Linux podes usar Wireshark ou hcidump, en macOS podes usar o Explorador de Bluetooth e en Android podes usar a función estándar de aforro de volcado HCI de Bluetooth, que está dispoñible nas ferramentas para desenvolvedores. Recibirás un volcado en formato btsnoop, que se pode cargar no analizador Wireshark.
Preste atención: só se pode obter unha descarga correcta conectando o seu teléfono/ordenador a auriculares/altofalantes (por moi divertido que pareza)! Os auriculares poden establecer de forma independente unha conexión co teléfono, en cuxo caso solicitarán unha lista de códecs do teléfono, e non viceversa. Para garantir que se grava o volcado correcto, primeiro desvincula o dispositivo e, a continuación, vincula o teu teléfono cos auriculares mentres gravas o volcado.

Use o seguinte filtro de visualización para filtrar o tráfico irrelevante:

btavdtp.signal_id

Como resultado, deberías ver algo semellante a isto:
Audio por Bluetooth: detalles máximos sobre perfís, códecs e dispositivos

Podes facer clic en cada elemento do comando GetCapabilities para ver as características detalladas do códec.
Audio por Bluetooth: detalles máximos sobre perfís, códecs e dispositivos

Wireshark non coñece todos os identificadores de códecs, polo que algúns códecs terán que ser descifrados manualmente, mirando a táboa de identificadores a continuación:

Mandatory:
0x00 - SBC

Optional:
0x01 - MPEG-1,2 (aka MP3)
0x02 - MPEG-2,4 (aka AAC)
0x04 - ATRAC

Vendor specific:
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 - The CSR True Wireless Stereo v3 Codec ID for AAC
0xFF 0x000A 0x0105 - The CSR True Wireless Stereo v3 Codec ID for MP3
0xFF 0x000A 0x0106 - The CSR True Wireless Stereo v3 Codec ID for aptX

Para non analizar os vertedoiros manualmente, fixen un servizo que analizará todo automaticamente: btcodecs.valdikss.org.ru

Comparación de codecs. Que codec é mellor?

Cada códec ten as súas propias vantaxes e desvantaxes.
aptX e aptX HD usan perfís codificados que non se poden cambiar sen modificar o codificador e o descodificador. Nin o fabricante do teléfono nin o fabricante dos auriculares poden cambiar a taxa de bits nin os factores de codificación aptX. O propietario do códec, Qualcomm, proporciona un codificador de referencia en forma de biblioteca. Estes feitos son a fortaleza de aptX: xa sabes de antemán que calidade de son obterás, sen ningún "pero".

SBC, pola contra, ten moitos parámetros configurables, taxa de bits dinámica (o codificador pode reducir o parámetro bitpool se as ondas de radio están ocupadas) e non ten perfís codificados, só os recomendados de "calidade media" e "alta calidade" que foron engadido á especificación A2DP no ano 2003. A "alta calidade" xa non é tan alta para os estándares actuais, e a maioría das pilas Bluetooth non permiten usar os parámetros mellor que o perfil de "alta calidade", aínda que non hai restricións técnicas para iso.
Bluetooth SIG non ten un codificador SBC de referencia como biblioteca e os fabricantes o implementan eles mesmos.
Estas son as debilidades de SBC: nunca está claro de antemán cal é a calidade do son esperar dun dispositivo en particular. SBC pode producir audio de baixa e moi alta calidade, pero este último é inalcanzable sen desactivar ou evitar as limitacións artificiais das pilas Bluetooth.

A situación con AAC é ambigua: por unha banda, teoricamente o códec debería producir unha calidade indistinguible da orixinal, pero na práctica, a xulgar polas probas do laboratorio SoundGuys en diferentes dispositivos Android, isto non está confirmado. O máis probable é que a culpa sexa dos codificadores de audio de hardware de baixa calidade integrados en varios chipsets de teléfonos. Ten sentido usar AAC só en dispositivos Apple e en Android limitalo a aptX e LDAC.

O hardware que admite códecs alternativos adoita ser de maior calidade, simplemente porque para dispositivos moi baratos e de baixa calidade, non ten sentido pagar taxas de licenza para usar eses códecs. Nas miñas probas, SBC soa moi ben en equipos de calidade.

Fixen un servizo web que codifica audio para SBC, aptX e aptX HD en tempo real, directamente no navegador. Con el, podes probar estes códecs de audio sen transmitir realmente audio a través de Bluetooth, en auriculares con cable, altofalantes e a túa música favorita, e tamén cambiar os parámetros de codificación directamente mentres reproduces audio:
btcodecs.valdikss.org.ru/sbc-encoder
O servizo usa as bibliotecas de codificación SBC do proxecto BlueZ e libopenaptx de ffmpeg, que se compilan en WebAssembly e JavaScript desde C, a través de emscripten, para executalas no navegador. Quen podería soñar cun futuro así!

Aquí ten o aspecto:

Observe como cambia o nivel de ruído despois de 20 kHz para diferentes códecs. O ficheiro MP3 orixinal non contén frecuencias superiores a 20 kHz.

Proba a cambiar os códecs e mira se escoitas a diferenza entre o orixinal, SBC 53 Joint Stereo (o perfil estándar e máis común) e aptX/aptX HD.

Podo escoitar a diferenza entre os códecs nos auriculares!

As persoas que non escoitan a diferenza entre os códecs durante a proba a través dun servizo web afirman que a escoitan cando escoitan música con auriculares sen fíos. Por desgraza, isto non é unha broma nin un efecto placebo: a diferenza é realmente audible, pero non é causada por diferenzas. codecs.

A gran maioría dos chipsets de audio Bluetooth utilizados nos dispositivos de recepción sen fíos están equipados cun procesador de sinal dixital (DSP), que implementa un ecualizador, un compander, un expansor estéreo e outras cousas deseñadas para mellorar (ou cambiar) o son. Os fabricantes de equipos Bluetooth poden configurar DSP para cada códec por separado, e ao cambiar entre códecs, o oínte pensará que está a escoitar unha diferenza no funcionamento dos códecs, cando en realidade está escoitando diferentes configuracións de DSP.

Audio por Bluetooth: detalles máximos sobre perfís, códecs e dispositivos
Tubería de procesamento de audio DSP Kalimba en chips fabricados por CSR/Qualcomm

Audio por Bluetooth: detalles máximos sobre perfís, códecs e dispositivos
Active diferentes funcións DSP para cada códec e saia por separado

Algúns dispositivos premium veñen con software que che permite personalizar a configuración DSP, pero a maioría dos auriculares máis baratos non o fan e os usuarios non poden desactivar o procesamento posterior de audio manualmente.

Características funcionais dos dispositivos

A versión moderna do estándar A2DP ten función de "control de volume absoluto". — control de volume do dispositivo mediante comandos especiais do protocolo AVRCP, que regula a ganancia da etapa de saída, en lugar de reducir de forma programada o volume do fluxo de audio. Se ao cambiar o volume dos auriculares, o cambio non se sincroniza co volume do seu teléfono, entón os auriculares ou o teléfono non admiten esta función. Neste caso, ten sentido escoitar sempre música co volume máximo do teléfono, axustando o volume real cos botóns dos auriculares; neste caso, a relación sinal-ruído será mellor e a calidade do audio. debería ser superior.
En realidade, hai situacións tristes. Nos meus auriculares RealForce OverDrive D1 para SBC, está activado un compander forte e o aumento do volume leva a un aumento do nivel de sons silenciosos, mentres que o volume dos sons altos non cambia (o sinal está comprimido). Debido a isto, tes que configurar o volume do ordenador a aproximadamente a metade, caso en que practicamente non hai efecto de compresión.
Segundo as miñas observacións, todos os auriculares con códecs adicionais admiten a función de control de volume absoluto, ao parecer este é un dos requisitos para a certificación do códec.

Admite algúns auriculares conectar dous dispositivos ao mesmo tempo. Isto permíteche, por exemplo, escoitar música desde o teu ordenador e recibir chamadas desde o teu teléfono. Non obstante, debes ter en conta que neste modo os códecs alternativos están desactivados e só se usa SBC.

AVDTP 1.3 Función de informes de atraso permite que os auriculares comuniquen o atraso ao dispositivo transmisor no que realmente se reproduce o son. Isto permítelle axustar a sincronización do audio co vídeo mentres visualiza ficheiros de vídeo: se hai problemas coa transmisión de radio, o audio non quedará atrás do vídeo, senón que, pola contra, o reprodutor de vídeo ralentizará o vídeo ata que se o audio e o vídeo sincronízanse de novo.
A función é compatible con moitos auriculares, Android 9+ e Linux con PulseAudio 12.0+. Non teño coñecemento de compatibilidade con esta función noutras plataformas.

Comunicación bidireccional vía Bluetooth. Transmisión de voz.

Para a transmisión de voz en Bluetooth, utilízase Synchronous Connection Oriented (SCO) - transmisión síncrona con negociación preliminar da conexión. O modo permite transmitir son e voz estrictamente en orde, con velocidades de envío e recepción simétricas, sen esperar a confirmación da transmisión e o reenvío de paquetes. Isto reduce o atraso xeral da transmisión de audio pola canle de radio, pero impón serias restricións á cantidade de datos transmitidos por unidade de tempo e afecta negativamente á calidade.
Cando se utiliza este modo, tanto a voz como o audio transmítense coa mesma calidade.
Desafortunadamente, a partir de 2019, a calidade da voz a través de Bluetooth aínda é deficiente e non está claro por que o Bluetooth SIG non fai nada ao respecto.

CVSD

O códec de voz CVSD básico foi estandarizado en 2002 e é compatible con todos os dispositivos de comunicación Bluetooth bidireccionais. Proporciona transmisión de audio cunha frecuencia de mostraxe de 8 kHz, que se corresponde coa calidade da telefonía con cable convencional.

Un exemplo de gravación neste códec.

mSBC

O códec adicional mSBC foi estandarizado en 2009, e en 2010 xa apareceron chips que o usaban para a transmisión de voz. mSBC é amplamente compatible con varios dispositivos.
Este non é un códec independente, senón un SBC normal do estándar A2DP, cun perfil de codificación fixo: 16 kHz, mono, bitpool 26.

Un exemplo de gravación neste códec.

Non é brillante, pero moito mellor que CVSD, pero aínda é molesto usalo para a comunicación en liña, especialmente cando estás usando auriculares para comunicarte no xogo: o audio do xogo tamén se transmitirá a unha frecuencia de mostraxe de 16 kHz.

A empresa FastStreamCSR decidiu desenvolver a idea de usar SBC. Para sortear as limitacións do protocolo SCO e usar taxas de bits máis altas, CSR pasou por unha ruta diferente: introduciu soporte para audio SBC bidireccional no estándar de transmisión de audio unidireccional A2DP, perfís de codificación estandarizados e chamouno "FastStream".

FastStream transmite audio estéreo a 44.1 ou 48 kHz cunha taxa de bits de 212 kbps aos altofalantes, e mono, 16 kHz, cunha taxa de bits de 72 kbps úsase para transmitir audio desde o micrófono (lixeiramente mellor que mSBC). Tales parámetros son moito máis axeitados para a comunicación nos xogos en liña: o son do xogo e os interlocutores serán de alta calidade.

Un exemplo de gravación neste códec (+ son do micrófono, igual que mSBC).

A compañía presentou unha muleta interesante, pero debido ao feito de que contradí o estándar A2DP, só se admite nalgúns dos transmisores da compañía (que funcionan como unha tarxeta de audio USB, non como un dispositivo Bluetooth), pero non é compatible. recibir soporte en pilas Bluetooth, aínda que o número de auriculares compatibles con FastStream non é tan pequeno.

Polo momento, só é compatible con FastStream no SO como un parche para Linux PulseAudio do desenvolvedor Pali Rohár, que non está incluído na rama principal do programa.

aptX Baixa latencia

Para a súa sorpresa, aptX Low Latency tamén admite audio bidireccional, implementando o mesmo principio que FastStream.
Non é posible usar esta función do códec en ningún lugar: non hai soporte para a decodificación de baixa latencia en ningún sistema operativo nin en ningunha pila Bluetooth coñecida por min.

Bluetooth 5, Classic e Low Energy

Houbo moita confusión en torno ás especificacións e versións de Bluetooth debido á presenza de dous estándares incompatibles baixo a mesma marca, que son moi utilizados para propósitos diferentes.

Existen dous protocolos Bluetooth diferentes e incompatibles: Bluetooth Classic e Bluetooth Low Energy (LE, tamén coñecido como Bluetooth Smart). Tamén hai un terceiro protocolo, Bluetooth High Speed, pero non está moi estendido e non se utiliza nos dispositivos domésticos.

A partir de Bluetooth 4.0, os cambios na especificación afectaron principalmente a Bluetooth Low Energy ea versión Classic só recibiron melloras menores.

Lista de cambios entre Bluetooth 4.2 e Bluetooth 5:

9 CAMBIOS DA v4.2 Á 5.0

9.1 NOVAS CARACTERÍSTICAS

Varias funcións novas introdúcense na versión 5.0 de Bluetooth Core Specification. As principais áreas de mellora son:
• Máscara de dispoñibilidade de slots (SAM)
• 2 Msym/s PHY para LE
•LE Long Range
• Publicidade non conectable de alto ciclo de traballo
• LE Extensións publicitarias
• Algoritmo de selección de canles LE #2
9.1.1 Características engadidas en CSA5 - Integradas na v5.0
•Maior potencia de saída

Fonte: www.bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=421043 (páxina 291)

Só un cambio afectou á versión Classic no marco da especificación Bluetooth 5: engadiron soporte para a tecnoloxía Slot Availability Mask (SAM), deseñada para mellorar a separación das emisións de radio. Todos os demais cambios afectan só a Bluetooth LE (e tamén a maior potencia de saída).

Todos Os dispositivos de audio só usan Bluetooth Classic. É imposible conectar auriculares e altofalantes mediante Bluetooth Low Energy: non existe un estándar para transmitir audio usando LE. O estándar A2DP, usado para transmitir audio de alta calidade, só funciona a través de Bluetooth Classic e non hai analóxico en LE.

Conclusión: comprar dispositivos de audio con Bluetooth 5 só pola nova versión do protocolo non ten sentido. Bluetooth 4.0/4.1/4.2 no contexto da transmisión de audio funcionará exactamente igual.
Se o anuncio de novos auriculares menciona o dobrado do rango de funcionamento e un reducido consumo de enerxía grazas ao Bluetooth 5, entón debes saber que eles mesmos non o entenden ou están a enganar. Non é de estrañar, porque incluso os fabricantes de chips Bluetooth nos seus anuncios están confusos sobre as diferenzas entre a nova versión do estándar, e algúns chips Bluetooth 5 só admiten a quinta versión para LE e usan 4.2 para Classic.

Retraso de transmisión de audio

A cantidade de atraso (lag) no audio depende de moitos factores: o tamaño do búfer na pila de audio, na pila Bluetooth e no propio dispositivo de reprodución sen fíos e o atraso algorítmico do códec.

A latencia de códecs simples como SBC, aptX e aptX HD é moi pequena, de 3 a 6 ms, o que se pode descoidar, pero os códecs complexos como AAC e LDAC poden causar un atraso notable. A latencia algorítmica AAC para 44.1 kHz é de 60 ms. LDAC: uns 30 ms (baseado nunha análise aproximada do código fonte. Podería estar equivocado, pero non moito.)

A latencia resultante depende moito do dispositivo de reprodución, do seu chipset e do búfer. Durante as probas, recibín unha propagación de 150 a 250 ms en diferentes dispositivos (co códec SBC). Se asumimos que os dispositivos que admiten códecs adicionais aptX, AAC e LDAC usan compoñentes de alta calidade e un tamaño de búfer pequeno, obtemos as seguintes latencias típicas:

SBC: 150-250 ms
aptX: 130-180 ms
AAC: 190-240 ms
LDAC: 160-210 ms

Lémbrolle: aptX Low Latency non é compatible con sistemas operativos, polo que só se pode obter unha latencia máis baixa cunha combinación de transmisor+receptor ou transmisor+auriculares/altofalante, e todos os dispositivos deben admitir este códec.

Problemas con dispositivos Bluetooth, certificación e logotipo

Como distinguir un dispositivo de audio de alta calidade dunha artesanía barata? En aparencia, en primeiro lugar!

Para auriculares, altofalantes e receptores chineses baratos:

  1. Falta a palabra "Bluetooth" na caixa e no dispositivo, "Wireless" e "BT" úsanse con máis frecuencia
  2. Falta o logotipo de Bluetooth Audio por Bluetooth: detalles máximos sobre perfís, códecs e dispositivos na caixa ou dispositivo
  3. Sen LED azul intermitente

A ausencia destes elementos indica que o dispositivo non foi certificado, o que significa que é potencialmente de baixa calidade e problemático. Por exemplo, os auriculares Bluedio non están certificados por Bluetooth e non cumpren totalmente coa especificación A2DP. Non terían aprobado a certificación.

Consideremos varios dispositivos e caixas deles:
Audio por Bluetooth: detalles máximos sobre perfís, códecs e dispositivos

Audio por Bluetooth: detalles máximos sobre perfís, códecs e dispositivos

Audio por Bluetooth: detalles máximos sobre perfís, códecs e dispositivos

Todos estes son dispositivos sen certificación. As instrucións poden conter un logotipo e o nome da tecnoloxía Bluetooth, pero o máis importante é que estean na caixa e/ou no propio dispositivo.

Se os teus auriculares ou o teu altofalante din "Ze bluetooth dewise está conectado correctamente", isto tampouco indica a súa calidade:

Conclusión

Pode o Bluetooth substituír completamente os auriculares e os cascos con cable? É capaz, pero a costa dunha mala calidade das chamadas, un aumento da latencia de audio que pode ser molesto nos xogos e unha serie de códecs propietarios que requiren taxas de licenza e aumentan o custo final tanto dos teléfonos intelixentes como dos auriculares.

A comercialización de códecs alternativos é moi forte: aptX e LDAC preséntanse como un substituto moi esperado para o SBC "obsoleto e malo", que non é tan malo como a xente pensa que é.

Como se viu, as limitacións artificiais das pilas Bluetooth sobre a taxa de bits SBC pódense evitar, de xeito que o SBC non será inferior a aptX HD. Tomei a iniciativa nas miñas propias mans e fixen un parche para o firmware de LineageOS: Modificamos a pila Bluetooth para mellorar o son dos auriculares sen códecs AAC, aptX e LDAC

Pódese atopar máis información nas páxinas web SoundGys и Experto en son.

Bonificación: Codificador de referencia SBC, información de fluxo de bits A2DP e ficheiros de proba. Este ficheiro publicouse anteriormente publicamente no sitio web de Bluetooth, pero agora só está dispoñible para os membros do Bluetooth SIG.

Fonte: www.habr.com

Engadir un comentario