Audio vía Bluetooth: máximo detalle sobre perfiles, códecs y dispositivos

Audio vía Bluetooth: máximo detalle sobre perfiles, códecs y dispositivos

Debido a la producción en masa de teléfonos inteligentes sin conector de audio de 3.5 mm, los auriculares inalámbricos Bluetooth se han convertido en la principal forma para que muchos escuchen música y se comuniquen en modo auricular.
Los fabricantes de dispositivos inalámbricos no siempre escriben especificaciones detalladas de los productos y los artículos sobre audio Bluetooth en Internet son contradictorios, a veces incorrectos, no hablan de todas las funciones y, a menudo, copian la misma información que no se corresponde con la realidad.
Intentemos comprender el protocolo, las capacidades de las pilas, auriculares y parlantes del sistema operativo Bluetooth, los códecs Bluetooth para música y voz, descubramos qué afecta la calidad del sonido transmitido y la latencia, aprendamos cómo recopilar y decodificar información sobre los códecs compatibles y otros dispositivos. capacidades.

TL; DR:

  • SBC - códec normal
  • Los auriculares cuentan con su propio ecualizador y postprocesamiento para cada códec por separado
  • aptX no es tan bueno como se anuncia
  • LDAC es una tontería de marketing
  • La calidad de las llamadas sigue siendo mala
  • Puede incorporar codificadores de audio C en su navegador compilándolos en WebAssembly mediante emscripten y no se ralentizarán mucho.

Música a través de Bluetooth

El componente funcional de Bluetooth está determinado por perfiles: especificaciones de funciones específicas. La transmisión de música por Bluetooth utiliza un perfil de transmisión de audio unidireccional A2DP de alta calidad. El estándar A2DP se adoptó en 2003 y no ha cambiado significativamente desde entonces.
Dentro del perfil se estandarizan 1 códec obligatorio de baja complejidad computacional SBC, creado específicamente para Bluetooth, y 3 adicionales. También es posible utilizar códecs no documentados de su propia implementación.

A partir de junio de 2019 estamos en el comic xkcd con 14 códecs A2DP:

  • SBC ← estandarizado en A2DP, compatible con todos los dispositivos
  • MPEG-1/2 Layer 1/2/3 ← estandarizado en A2DP: bien conocido MP3, utilizado en televisión digital MP2, y desconocido MP1
  • MPEG-2/4 AAC ← estandarizado en A2DP
  • ATRAC ← antiguo códec de Sony, estandarizado en A2DP
  • LDAC ← nuevo códec de Sony
  • aptX ← códec de 1988
  • aptX HD ← igual que aptX, solo que con diferentes opciones de codificación
  • aptX de baja latencia ← códec completamente diferente, sin implementación de software
  • aptX Adaptive ← otro códec de Qualcomm
  • flujo rápido ← pseudocódec, modificación SBC bidireccional
  • HWA LHDC ← nuevo códec de Huawei
  • samsung hd ← compatible con 2 dispositivos
  • Samsung escalable ← compatible con 2 dispositivos
  • Samsung UHQ-BT ← compatible con 3 dispositivos

¿Por qué necesitamos códecs, te preguntarás, cuando Bluetooth tiene EDR, que permite transferir datos a velocidades de 2 y 3 Mbit/s, y para PCM de 16 bits de dos canales sin comprimir, 1.4 Mbit/s es suficiente?

Transferencia de datos a través de Bluetooth

Hay dos tipos de transferencia de datos en Bluetooth: Sin conexión asíncrona (ACL), para transferencias asíncronas sin establecimiento de conexión, y Orientada a conexión síncrona (SCO), para transferencias síncronas con negociación de conexión preliminar.
La transmisión se realiza mediante un esquema de división de tiempo y seleccionando un canal de transmisión para cada paquete por separado (Frequency-Hop/Time-Division-Duplex, FH/TDD), para lo cual el tiempo se divide en intervalos de 625 microsegundos llamados slots. Uno de los dispositivos transmite en ranuras pares y el otro en ranuras impares. El paquete transmitido puede ocupar 1, 3 o 5 slots, dependiendo del tamaño de los datos y del tipo de transmisión configurado, en este caso la transmisión por parte de un dispositivo se realiza en slots pares e impares hasta el final de la transmisión. En total, se pueden recibir y enviar hasta 1600 paquetes por segundo, si cada uno de ellos ocupa 1 slot y ambos dispositivos transmiten y reciben algo sin parar.

2 y 3 Mbit/s para EDR, que se pueden encontrar en los anuncios y en el sitio web de Bluetooth, son la velocidad máxima de transferencia de canal de todos los datos en total (incluidos los encabezados técnicos de todos los protocolos en los que se deben encapsular los datos), en dos direcciones. simultáneamente. La velocidad de transferencia de datos real variará mucho.

Para transmitir música se utiliza un método asíncrono, utilizando casi siempre paquetes como 2-DH5 y 3-DH5, que transportan una cantidad máxima de datos en modo EDR de 2 Mbit/s y 3 Mbit/s, respectivamente, y ocupan 5 veces -compartir espacios.

Representación esquemática de la transmisión utilizando 5 slots por un dispositivo y 1 slot por otro (DH5/DH1):
Audio vía Bluetooth: máximo detalle sobre perfiles, códecs y dispositivos

Debido al principio de división del tiempo de las ondas, nos vemos obligados a esperar un intervalo de tiempo de 625 microsegundos después de transmitir un paquete si el segundo dispositivo no nos transmite nada o transmite un paquete pequeño, y más tiempo si el segundo dispositivo transmite en paquetes grandes. Si hay más de un dispositivo conectado al teléfono (por ejemplo, auriculares, relojes y una pulsera de fitness), el tiempo de transferencia se comparte entre todos ellos.

La necesidad de encapsular audio en protocolos de transporte especiales L2CAP y AVDTP requiere 16 bytes de la cantidad máxima posible de carga útil de audio transmitida.

Tipo de paquete
Número de ranuras
Máx. número de bytes en el paquete
Máx. número de bytes de carga útil A2DP
Máx. Tasa de bits de 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 y 1429 kbps definitivamente no son suficientes para transmitir audio sin comprimir en condiciones reales, con el ruidoso rango de 2.4 GHz y la necesidad de transmitir datos de servicio. EDR 3 Mbit/s exige potencia de transmisión y ruido en el aire, por lo tanto, incluso en el modo 3-DH5, una transmisión PCM cómoda es imposible, siempre habrá interrupciones breves y todo funcionará solo a una distancia de un un par de metros.
En la práctica, incluso un flujo de audio de 990 kbit/s (LDAC 990 kbit/s) es difícil de transmitir.

Volvamos a los códecs.

SBC

Códec requerido para todos los dispositivos que admiten el estándar A2DP. El mejor y el peor códec al mismo tiempo.

Tasa de muestreo
Profundidad de bits
tasa de bits
Soporte de codificación
Soporte de decodificación

16, 32, 44.1, 48 kHz
Bit 16
10-1500 kbps
Todos los dispositivos
Todos los dispositivos

SBC es un códec simple y computacionalmente rápido, con un modelo psicoacústico primitivo (solo se aplica el enmascaramiento de sonidos suaves), que utiliza modulación de código de pulso adaptativo (APCM).
La especificación A2DP recomienda el uso de dos perfiles: Calidad media y Calidad alta.
Audio vía Bluetooth: máximo detalle sobre perfiles, códecs y dispositivos

El códec tiene muchas configuraciones que le permiten controlar el retraso algorítmico, el número de muestras en un bloque, el algoritmo de distribución de bits, pero casi en todas partes se utilizan los mismos parámetros recomendados en la especificación: Joint Stereo, 8 bandas de frecuencia, 16 bloques en una trama de audio, método de distribución de bits de sonoridad.
SBC admite el cambio dinámico del parámetro Bitpool, que afecta directamente a la tasa de bits. Si las ondas de radio están obstruidas, se pierden paquetes o los dispositivos están ubicados a grandes distancias, la fuente de audio puede reducir el Bitpool hasta que la comunicación vuelva a la normalidad.

La mayoría de los fabricantes de auriculares establecen el valor máximo de Bitpool en 53, lo que limita la tasa de bits a 328 kilobits por segundo cuando se utiliza el perfil recomendado.
Incluso si el fabricante de auriculares ha establecido el valor máximo de Bitpool por encima de 53 (se encuentran modelos similares, por ejemplo: Beats Solo³, JBL Everest Elite 750NC, Apple AirPods, que también se encuentran en algunos receptores y unidades principales de automóviles), la mayoría de los sistemas operativos no lo permitirán. el uso de velocidades de bits aumentadas debido al límite de valor interno establecido en las pilas de Bluetooth.
Además, algunos fabricantes establecen un valor máximo bajo de Bitpool para algunos dispositivos. Por ejemplo, para Bluedio T es 39, para Samsung Gear IconX es 37, lo que da una mala calidad de sonido.

Las restricciones artificiales por parte de los desarrolladores de pilas de Bluetooth probablemente surgieron debido a la incompatibilidad de algunos dispositivos con valores de Bitpool grandes o perfiles atípicos, incluso si informaron soporte para ellos y pruebas insuficientes durante la certificación. Para los autores de pilas de Bluetooth era más fácil limitarse a acordar el perfil recomendado, en lugar de crear bases de datos de dispositivos incorrectos (aunque ahora lo hacen para otras funciones que no funcionan correctamente).

SBC asigna dinámicamente bits de cuantificación a bandas de frecuencia de menor a mayor, con diferentes pesos. Si se utilizó toda la tasa de bits para las frecuencias bajas y medias, las frecuencias altas se “cortarán” (en su lugar habrá silencio).

Ejemplo SBC 328 kbps. En la parte superior está el original, en la parte inferior está el SBC, que cambia periódicamente entre pistas. El audio del archivo de vídeo utiliza el códec de compresión sin pérdidas FLAC. El uso de FLAC en un contenedor mp4 no está oficialmente estandarizado, por lo que no se garantiza que su navegador lo reproduzca, pero debería funcionar en las últimas versiones de Chrome y Firefox de escritorio. Si no tiene sonido, puede descargar el archivo y abrirlo en un reproductor de video completo.
ZZ Top - Hombre bien vestido

El espectrograma muestra el momento de la conmutación: SBC corta periódicamente los sonidos suaves por encima de 17.5 kHz y no asigna ningún bit para la banda por encima de 20 kHz. El espectrograma completo está disponible haciendo clic (1.7 MB).
Audio vía Bluetooth: máximo detalle sobre perfiles, códecs y dispositivos

No escucho ninguna diferencia entre el original y SBC en esta pista.

Tomemos algo más nuevo y simulemos el audio que se obtendría con los auriculares Samsung Gear IconX con Bitpool 37 (arriba, la señal original, abajo, SBC 239 kbps, audio en FLAC).
Autocomplacencia sin sentido - Testigo

Escucho crujidos, menos efecto estéreo y un desagradable sonido de "chasquido" en las frecuencias altas de las voces.

Aunque SBC es un códec muy flexible, se puede configurar para baja latencia, proporciona una excelente calidad de audio a velocidades de bits altas (más de 452 kbps) y es bastante bueno para la mayoría de las personas con alta calidad estándar (328 kbps), debido al hecho de que el estándar A2DP no especifica perfiles fijos (sino que solo da recomendaciones), los desarrolladores de pilas han establecido restricciones artificiales en Bitpool, los parámetros del audio transmitido no se muestran en la interfaz de usuario y los fabricantes de auriculares son libres de establecer sus propios ajustes y nunca indique el valor de Bitpool en las especificaciones técnicas del producto, el códec se hizo famoso por su baja calidad de sonido, aunque esto no es un problema del códec como tal.
El parámetro Bitpool afecta directamente la tasa de bits solo dentro de un perfil. El mismo valor de Bitpool 53 puede dar una tasa de bits de 328 kbps con el perfil de alta calidad recomendado y 1212 kbps con doble canal y 4 bandas de frecuencia, por lo que los autores del sistema operativo, además de las restricciones en Bitpool, establecen un límite y en Tasa de bits. A mi modo de ver, esta situación surgió debido a un fallo en el estándar A2DP: era necesario negociar el bitrate, no Bitpool.

Tabla de soporte para capacidades SBC en diferentes sistemas operativos:

OS
Frecuencias de muestreo admitidas
Límite máx. Bitpool
Límite máx. tasa de bits
Tasa de bits típica
Ajuste dinámico de Bitpool

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

Linux (BlueZ + PulseAudio)
16, 32, 44.1, 48 kHz
64 (para conexiones entrantes), 53 (para conexiones salientes)
Sin límite
328 kbps
✓*

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

* Bitpool solo disminuye, pero no aumenta automáticamente, si las condiciones de transferencia mejoran. Para restaurar Bitpool necesitas detener la reproducción, esperar un par de segundos y reiniciar el audio.
** El valor predeterminado depende de la configuración de la pila especificada al compilar el firmware. En Android 8/8.1 la frecuencia es sólo de 44.1 kHz o 48 kHz, dependiendo de la configuración durante la compilación, en otras versiones se admiten 44.1 kHz y 48 kHz simultáneamente.
*** El valor de Bitpool se puede aumentar en el programa Bluetooth Explorer.

aptX y aptX HD

aptX es un códec simple y computacionalmente rápido, sin psicoacústica, que utiliza modulación de código de pulso diferencial adaptativo (ADPCM). Apareció alrededor de 1988 (fecha de presentación patentar de febrero de 1988), antes de Bluetooth, se usaba principalmente en equipos de audio inalámbricos profesionales. Actualmente propiedad de Qualcomm, requiere licencias y regalías. A partir de 2014: $6000 por única vez y ≈$1 por dispositivo, para lotes de hasta 10000 dispositivos (fuentep. 16).
aptX y aptX HD son el mismo códec, con diferentes perfiles de codificación.

El códec tiene un solo parámetro: seleccionar la frecuencia de muestreo. Sin embargo, existe la posibilidad de elegir el número/modo de canales, pero en todos los dispositivos que conozco (más de 70 unidades) solo se admite estéreo.

Codec
Tasa de muestreo
Profundidad de bits
tasa de bits
Soporte de codificación
Soporte de decodificación

aptX
16, 32, 44.1, 48 kHz
Bit 16
128 / 256 / 352 / 384 kbps (dependiendo de la frecuencia de muestreo)
Windows 10 (escritorio y móvil), macOS, Android 4.4+/7*, Blackberry OS 10
Amplia gama de dispositivos de audio (hardware)

* Las versiones hasta la 7 requieren modificación de la pila Bluetooth. El códec solo es compatible si el fabricante del dispositivo Android tiene la licencia del códec de Qualcomm (si el sistema operativo tiene bibliotecas de codificación).

aptX divide el audio en 4 bandas de frecuencia y las cuantifica con la misma cantidad 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 la frecuencia de muestreo de 44.1 kHz).

Ejemplo de audio aptX (arriba - la señal original, abajo - aptX, espectrogramas solo de los canales izquierdos, sonido en FLAC):

Los agudos se volvieron un poco más rojos, pero no se podía oír la diferencia.

Debido a la distribución fija de los bits de cuantificación, el códec no puede "desplazar los bits" a las frecuencias que más los necesitan. A diferencia de SBC, aptX no “cortará” frecuencias, sino que les agregará ruido de cuantificación, reduciendo el rango dinámico del audio.

No se debe suponer que el uso, por ejemplo, de 2 bits por banda reduce el rango dinámico a 12 dB: ADPCM permite hasta 96 dB de rango dinámico incluso cuando se utilizan 2 bits de cuantificación, pero sólo para una señal determinada.
ADPCM almacena la diferencia numérica entre la muestra actual y la siguiente muestra, en lugar de almacenar el valor absoluto como en PCM. Esto le permite reducir los requisitos de cantidad de bits necesarios para almacenar la misma (sin pérdida) o casi la misma (con un error de redondeo relativamente pequeño) información. Para reducir los errores de redondeo, se utilizan tablas de coeficientes.
Al crear el códec, los autores calcularon los coeficientes ADPCM en un conjunto de archivos de audio musical. Cuanto más cerca esté la señal de audio del conjunto de música sobre el que se construyeron las mesas, menos errores de cuantificación (ruido) crea aptX.

Por esta razón, las pruebas sintéticas siempre producirán peores resultados que la música. Hice un ejemplo sintético especial en el que aptX muestra malos resultados: una onda sinusoidal con una frecuencia de 12.4 kHz (arriba, la señal original, abajo, aptX. Audio en FLAC. ¡Baja el volumen!):

Gráfico de espectro:
Audio vía Bluetooth: máximo detalle sobre perfiles, códecs y dispositivos

Los ruidos son claramente audibles.

Sin embargo, si genera una onda sinusoidal con una amplitud menor para que sea más silenciosa, el ruido también se volverá más silencioso, lo que indica un amplio rango dinámico:

Audio vía Bluetooth: máximo detalle sobre perfiles, códecs y dispositivos

Para escuchar la diferencia entre la pista de música original y la comprimida, puedes invertir una de las señales y agregar las pistas canal por canal. Este enfoque es, en general, incorrecto y no daría buenos resultados con códecs más complejos, pero específicamente para ADPCM es bastante adecuado.
Diferencia entre original y aptX
La diferencia cuadrática media de las señales está en el nivel de -37.4 dB, lo que no es mucho para una música tan comprimida.

aptX HD

aptX HD no es un códec independiente, es un perfil de codificación mejorado del códec aptX. Los cambios afectaron el número de bits asignados para codificar rangos de frecuencia: 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ígitos para 44.1 kHz) .

Codec
Tasa de muestreo
Profundidad de bits
tasa de bits
Soporte de codificación
Soporte de decodificación

aptX HD
16, 32, 44.1, 48 kHz
Bits 24
192 / 384 / 529 / 576 kbps (dependiendo de la frecuencia de muestreo)
Android 8 + *
Algunos dispositivos de audio (hardware)

* Las versiones hasta la 7 requieren modificación de la pila Bluetooth. El códec solo es compatible si el fabricante del dispositivo Android tiene la licencia del códec de Qualcomm (si el sistema operativo tiene bibliotecas de codificación).

Menos común que aptX: aparentemente requiere una licencia separada de Qualcomm y tarifas de licencia separadas.

Repitamos el ejemplo con una onda sinusoidal a 12.4 kHz:
Audio vía Bluetooth: máximo detalle sobre perfiles, códecs y dispositivos

Mucho mejor que aptX, pero sigue siendo un poco ruidoso.

aptX de baja latencia

Un códec de Qualcomm que no tiene nada que ver con el estándar aptX y aptX HD, a juzgar por la información limitada de las personas involucradas en su desarrollo. Diseñado para la transmisión de audio interactiva de baja latencia (películas, juegos), donde el retraso del audio no se puede ajustar mediante software. No se conocen implementaciones de software para codificadores y decodificadores; se soportan exclusivamente en transmisores, receptores, auriculares y altavoces, pero no en teléfonos inteligentes ni ordenadores.

Tasa de muestreo
tasa de bits
Soporte de codificación
Soporte de decodificación

44.1 кГц
276/420 kbps
Algunos transmisores (hardware)
Algunos dispositivos de audio (hardware)

AAC

AAC, o Advanced Audio Coding, es un códec computacionalmente complejo con un modelo psicoacústico serio. Ampliamente utilizado para audio en Internet, segundo en popularidad después del MP3. Requiere licencia y regalías: $15000 1000 por única vez (o $15 para empresas con menos de 0.98 empleados) + $500000 para los primeros XNUMX XNUMX dispositivos (fuente).
El códec está estandarizado dentro de las especificaciones MPEG-2 y MPEG-4 y, contrariamente a la creencia popular, no pertenece a Apple.

Tasa de muestreo
tasa 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)

* solo en dispositivos cuyos fabricantes han pagado tarifas de licencia

iOS y macOS utilizan el mejor codificador AAC actual de Apple para ofrecer la mayor calidad de audio posible. Android utiliza el segundo codificador Fraunhofer FDK AAC de mayor calidad, pero puede utilizar varios hardware integrados en la plataforma (SoC) con calidad de codificación desconocida. Según pruebas recientes en el sitio web SoundGuys, la calidad de codificación AAC de diferentes teléfonos Android varía mucho:
Audio vía Bluetooth: máximo detalle sobre perfiles, códecs y dispositivos

La mayoría de los dispositivos de audio inalámbricos tienen una tasa de bits máxima de 320 kbps para AAC, algunos solo admiten 256 kbps. Otras tasas de bits son extremadamente raras.
AAC proporciona una calidad excelente a velocidades de bits de 320 y 256 kbps, pero está sujeto a pérdida de codificación secuencial de contenido ya comprimido, sin embargo, incluso con varias codificaciones secuenciales es difícil notar diferencias con el original en iOS a una tasa de bits de 256 kbps; con codificación única, por ejemplo, MP3 de 320 kbps a AAC de 256 kbps, las pérdidas pueden despreciarse.
Al igual que con otros códecs Bluetooth, el códec primero decodifica y luego codifica cualquier música. Al escuchar música en formato AAC, primero el sistema operativo la decodifica y luego la codifica nuevamente en AAC para su transmisión a través de Bluetooth. Esto es necesario para mezclar múltiples transmisiones de audio, como música y notificaciones de mensajes nuevos. iOS no es una excepción. En Internet se pueden encontrar muchas afirmaciones de que en iOS la música en formato AAC no se transcodifica cuando se transmite a través de Bluetooth, lo cual no es cierto.

MP1/2/3

Los códecs de la familia MPEG-1/2 Parte 3 se componen del conocido y ampliamente utilizado MP3, el menos común MP2 (utilizado principalmente en televisión y radio digitales) y el completamente desconocido MP1.

Los antiguos códecs MP1 y MP2 no son compatibles en absoluto: no pude encontrar ningún auricular o pila Bluetooth que los codificara o decodificara.
Algunos auriculares admiten la decodificación de MP3, pero la codificación no es compatible con ningún sistema operativo moderno. Parece que la pila BlueSoleil de terceros para Windows puede codificar a MP3 si cambia manualmente el archivo de configuración, pero para mí instalarlo genera BSoD en Windows 10. Conclusión: el códec en realidad no se puede usar para audio Bluetooth.
Anteriormente, en 2006-2008, antes de la difusión del estándar A2DP en los dispositivos, la gente escuchaba música MP3 en los auriculares Nokia BH-501 a través del programa MSI BluePlayer, que estaba disponible en Symbian y Windows Mobile. En ese momento, la arquitectura del sistema operativo de los teléfonos inteligentes permitía el acceso a muchas funciones de bajo nivel, y en Windows Mobile incluso era posible instalar pilas Bluetooth de terceros.

La última patente del códec MP3 ha caducado, el uso del códec no requiere derechos de licencia desde el 23 de abril de 2017.

Si se toma como medida la patente de mayor antigüedad mencionada en las referencias antes mencionadas, entonces la tecnología MP3 quedó libre de patente en los Estados Unidos el 16 de abril de 2017, cuando expiró la patente estadounidense 6,009,399, propiedad y administrada por Technicolor.

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

Tasa de muestreo
tasa de bits
Soporte de codificación
Soporte de decodificación

16 - 48 kHz
8 - 320 kbps
No soportado en ninguna parte
Algunos dispositivos de audio (hardware)

LDAC

Un códec de “alta resolución” nuevo y activamente promocionado por Sony, que admite velocidades de muestreo de hasta 96 kHz y velocidades de bits de 24 bits, con velocidades de bits de hasta 990 kbps. Se anuncia como un códec para audiófilos, como reemplazo de los códecs Bluetooth existentes. Tiene la función de ajuste adaptativo de la tasa de bits, dependiendo de las condiciones de transmisión de radio.

Codificador LDAC (libldac) está incluido en el paquete estándar de Android, por lo que la codificación es compatible con cualquier teléfono inteligente Android a partir de la versión 8 del sistema operativo. No hay decodificadores de software disponibles gratuitamente, la especificación del códec no está disponible para el público en general, sin embargo, a primera vista del codificador, la estructura interna del códec es similar a ATRAC9 - Códec de Sony utilizado en PlayStation 4 y Vita: ambos funcionan en el dominio de la frecuencia, utilizan una transformada de coseno discreta modificada (MDCT) y compresión mediante el algoritmo de Huffman.

La compatibilidad con LDAC la proporcionan casi exclusivamente los auriculares de Sony. La capacidad de decodificar LDAC a veces se encuentra en auriculares y DAC de otros fabricantes, pero muy raramente.

Tasa de muestreo
tasa de bits
Soporte de codificación
Soporte de decodificación

44.1 - 96 kHz
303/606/909 kbit/s (para 44.1 y 88.2 kHz), 330/660/990 kbit/s (para 48 y 96 kHz)
Android 8 +
Algunos auriculares Sony y algunos dispositivos de otros fabricantes (hardware)

Comercializar LDAC como un códec de alta resolución perjudica su componente técnico: es una estupidez gastar la tasa de bits en transmitir frecuencias inaudibles para el oído humano y aumentar la profundidad de bits, mientras que no es suficiente transmitir con calidad de CD (44.1/16) sin pérdidas. . Afortunadamente, el códec tiene dos modos de funcionamiento: transmisión de audio de CD y transmisión de audio de alta resolución. En el primer caso, sólo se transmiten por aire 44.1 kHz/16 bits.

Dado que un decodificador LDAC de software no está disponible gratuitamente, es imposible probar el códec sin dispositivos adicionales que decodifiquen LDAC. Según los resultados de la prueba LDAC en un DAC con su soporte, que los ingenieros de SoundGuys.com conectaron a través de una salida digital y grabaron el sonido de salida en las señales de prueba, LDAC 660 y 990 kbps en modo con calidad de CD proporciona una señal a Relación de ruido ligeramente mejor que la de aptX HD.

Audio vía Bluetooth: máximo detalle sobre perfiles, códecs y dispositivos
Fuente: www.soundguys.com/ldac-ultimate-bluetooth-guide-20026

LDAC también admite velocidades de bits dinámicas fuera de los perfiles establecidos, desde 138 kbps hasta 990 kbps, pero hasta donde puedo decir, Android sólo usa los perfiles estandarizados 303/606/909 y 330/660/990 kbps.

Otros códecs

Otros códecs A2DP no se utilizan mucho. Su soporte está casi completamente ausente o sólo está disponible en ciertos modelos de auriculares y teléfonos inteligentes.
El códec ATRAC estandarizado en A2DP nunca ha sido utilizado como códec Bluetooth, ni siquiera por parte de Sony, los códecs Samsung HD, Samsung Scalable y Samsung UHQ-BT tienen un soporte muy limitado para dispositivos de transmisión y recepción, y HWA LHDC es demasiado nuevo y solo admite tres. (?) dispositivos.

Soporte de códec para dispositivos de audio

No todos los fabricantes publican información precisa sobre los códecs compatibles con determinados auriculares, altavoces, receptores o transmisores inalámbricos. A veces sucede que el soporte para un determinado códec es solo para transmisión, pero no para recepción (relevante para transmisores-receptores combinados), aunque el fabricante simplemente declara "soporte", sin notas (supongo que las licencias separadas para codificadores y decodificadores de algunos Los códecs tienen la culpa de esto). En los dispositivos más baratos, es posible que no encuentre ningún soporte aptX declarado.

Desafortunadamente, las interfaces de la mayoría de los sistemas operativos no muestran el códec utilizado en ninguna parte. La información al respecto solo está disponible en Android, a partir de la versión 8, y macOS. Sin embargo, incluso en estos sistemas operativos, solo se mostrarán aquellos códecs que sean compatibles tanto con el teléfono/computadora como con los auriculares.

¿Cómo puedes saber qué códecs admite tu dispositivo? ¡Registra y analiza el volcado de tráfico con parámetros de negociación A2DP!
Esto se puede hacer en Linux, macOS y Android. En Linux puede usar Wireshark o hcidump, en macOS puede usar Bluetooth Explorer y en Android puede usar la función estándar de guardado de volcado de Bluetooth HCI, que está disponible en las herramientas de desarrollador. Recibirá un volcado en formato btsnoop, que podrá cargar en el analizador Wireshark.
Nota: ¡solo se puede obtener un volcado correcto conectando desde su teléfono/computadora a unos auriculares/altavoces (no importa lo gracioso que pueda parecer)! Los auriculares pueden establecer una conexión con el teléfono de forma independiente, en cuyo caso solicitarán una lista de códecs del teléfono, y no al revés. Para garantizar que se grabe el volcado correcto, primero desempareje el dispositivo y luego empareje el teléfono con los auriculares mientras graba el volcado.

Utilice el siguiente filtro de visualización para filtrar el tráfico irrelevante:

btavdtp.signal_id

Como resultado, deberías ver algo similar a esto:
Audio vía Bluetooth: máximo detalle sobre perfiles, códecs y dispositivos

Puede hacer clic en cada elemento del comando GetCapabilities para ver las características detalladas del códec.
Audio vía Bluetooth: máximo detalle sobre perfiles, códecs y dispositivos

Wireshark no conoce todos los identificadores de códecs, por lo que algunos códecs deberán descifrarse manualmente, consultando la tabla 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 no analizar los volcados manualmente, creé un servicio que analizará todo automáticamente: btcodecs.valdikss.org.ru

Comparación de códecs. ¿Qué códec es mejor?

Cada códec tiene sus propias ventajas y desventajas.
aptX y aptX HD utilizan perfiles codificados que no se pueden cambiar sin modificar el codificador y el decodificador. Ni el fabricante del teléfono ni el fabricante de los auriculares pueden cambiar la tasa de bits o los factores de codificación aptX. El propietario del códec, Qualcomm, proporciona un codificador de referencia en forma de biblioteca. Estos hechos son el punto fuerte de aptX: usted sabe de antemano qué calidad de sonido obtendrá, sin ningún "pero".

SBC, por el contrario, tiene muchos parámetros configurables, tasa de bits dinámica (el codificador puede reducir el parámetro bitpool si las ondas están ocupadas) y no tiene perfiles codificados, solo la “calidad media” y la “calidad alta” recomendadas que fueron agregado a la especificación A2DP en el año 2003. La "alta calidad" ya no es tan alta según los estándares actuales, y la mayoría de las pilas Bluetooth no le permiten usar parámetros mejores que el perfil de "alta calidad", aunque no existen restricciones técnicas para esto.
Bluetooth SIG no tiene un codificador SBC de referencia como biblioteca y los fabricantes lo implementan ellos mismos.
Estas son las debilidades de SBC: nunca está claro de antemano qué calidad de sonido esperar de un dispositivo en particular. SBC puede producir audio de baja y muy alta calidad, pero este último es inalcanzable sin deshabilitar o evitar las limitaciones artificiales de las pilas Bluetooth.

La situación con AAC es ambigua: por un lado, teóricamente el códec debería producir una calidad indistinguible del original, pero en la práctica, a juzgar por las pruebas del laboratorio SoundGuys en diferentes dispositivos Android, esto no está confirmado. Lo más probable es que el problema se deba a codificadores de audio de hardware de baja calidad integrados en varios conjuntos de chips de teléfonos. Tiene sentido usar AAC solo en dispositivos Apple y en Android limitarlo a aptX y LDAC.

El hardware que soporta códecs alternativos tiende a ser de mayor calidad, simplemente porque para dispositivos muy baratos y de baja calidad, no tiene sentido pagar tarifas de licencia para usar esos códecs. En mis pruebas, SBC suena muy bien en equipos de calidad.

Creé un servicio web que codifica audio en SBC, aptX y aptX HD en tiempo real, directamente en el navegador. Con él, puedes probar estos códecs de audio sin transmitir audio a través de Bluetooth, en cualquier auricular con cable, parlantes y tu música favorita, y también cambiar los parámetros de codificación directamente mientras reproduces audio:
btcodecs.valdikss.org.ru/sbc-encoder
El servicio utiliza las bibliotecas de codificación SBC del proyecto BlueZ y libopenaptx de ffmpeg, que se compilan en WebAssembly y JavaScript desde C, a través de emscripten, para ejecutarse en el navegador. ¿Quién podría soñar con un futuro así?

Así es como se ve:

Observe cómo cambia el nivel de ruido después de 20 kHz para diferentes códecs. El archivo MP3 original no contiene frecuencias superiores a 20 kHz.

Intente cambiar de códec y vea si escucha la diferencia entre el original, SBC 53 Joint Stereo (el perfil estándar y más común) y aptX/aptX HD.

Puedo escuchar la diferencia entre códecs. en auriculares!

Las personas que no escuchan la diferencia entre códecs durante las pruebas a través de un servicio web afirman que la escuchan cuando escuchan música con auriculares inalámbricos. Por desgracia, esto no es una broma ni un efecto placebo: la diferencia es realmente audible, pero no está causada por diferencias. códecs.

La gran mayoría de los conjuntos de chips de audio Bluetooth utilizados en dispositivos receptores inalámbricos están equipados con un procesador de señal digital (DSP), que implementa un ecualizador, un compresor, un expansor estéreo y otras cosas diseñadas para mejorar (o cambiar) el sonido. Los fabricantes de equipos Bluetooth pueden configurar DSP para cada códec por separado, y al cambiar entre códecs, el oyente pensará que está escuchando una diferencia en el funcionamiento de los códecs, cuando en realidad está escuchando diferentes configuraciones de DSP.

Audio vía Bluetooth: máximo detalle sobre perfiles, códecs y dispositivos
Canalización de procesamiento de audio DSP Kalimba en chips fabricados por CSR/Qualcomm

Audio vía Bluetooth: máximo detalle sobre perfiles, códecs y dispositivos
Activa diferentes funciones DSP para cada códec y emite por separado

Algunos dispositivos premium vienen con software que le permite personalizar la configuración de DSP, pero la mayoría de los auriculares más baratos no lo hacen y los usuarios no pueden desactivar el posprocesamiento de audio manualmente.

Características funcionales de los dispositivos.

La versión moderna del estándar A2DP tiene Función “control absoluto de volumen” — control de volumen del dispositivo mediante comandos especiales del protocolo AVRCP, que regula la ganancia de la etapa de salida, en lugar de reducir programáticamente el volumen del flujo de audio. Si cuando cambia el volumen de sus auriculares, el cambio no se sincroniza con el volumen de su teléfono, entonces sus auriculares o su teléfono no admiten esta función. En este caso, tiene sentido escuchar siempre música al máximo volumen en el teléfono, ajustando el volumen real con los botones de los auriculares; en este caso, la relación señal-ruido será mejor y la calidad del audio será mejor. debe ser anteriormente.
En realidad, hay situaciones tristes. En mis auriculares RealForce OverDrive D1 para SBC, se activa un compresor potente y aumentar el volumen conduce a un aumento en el nivel de los sonidos bajos, mientras que el volumen de los sonidos fuertes no cambia (la señal se comprime). Debido a esto, debe configurar el volumen de la computadora aproximadamente a la mitad, en cuyo caso prácticamente no hay efecto de compresión.
Según mis observaciones, todos los auriculares con códecs adicionales admiten la función de control de volumen absoluto, aparentemente este es uno de los requisitos para la certificación de códec.

Algunos auriculares son compatibles conectar dos dispositivos al mismo tiempo. Esto le permite, por ejemplo, escuchar música desde su computadora y recibir llamadas desde su teléfono. Sin embargo, debes tener en cuenta que en este modo los códecs alternativos están deshabilitados y solo se utiliza SBC.

Función de informe de retraso AVDTP 1.3 permite que los auriculares comuniquen el retraso al dispositivo transmisor en el que realmente se reproduce el audio. Esto le permite ajustar la sincronización del audio con el vídeo mientras visualiza archivos de vídeo: si hay problemas con la transmisión de radio, el audio no se retrasará con respecto al vídeo, sino que, por el contrario, el reproductor de vídeo ralentizará el vídeo hasta que El audio y el vídeo se sincronizan nuevamente.
La función es compatible con muchos auriculares, Android 9+ y Linux con PulseAudio 12.0+. No conozco la compatibilidad con esta función en otras plataformas.

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

Para la transmisión de voz en Bluetooth, se utiliza la conexión síncrona orientada (SCO): transmisión síncrona con negociación preliminar de la conexión. El modo le permite transmitir sonido y voz estrictamente en orden, con velocidades de envío y recepción simétricas, sin esperar la confirmación de la transmisión y reenviar paquetes. Esto reduce el retraso general de la transmisión de audio a través del canal de radio, pero impone serias restricciones en la cantidad de datos transmitidos por unidad de tiempo y afecta negativamente la calidad.
Cuando se utiliza este modo, tanto la voz como el audio se transmiten con la misma calidad.
Desafortunadamente, a partir de 2019, la calidad de la voz a través de Bluetooth sigue siendo deficiente y no está claro por qué Bluetooth SIG no está haciendo nada al respecto.

CVSD

El códec de voz CVSD básico se estandarizó en 2002 y es compatible con todos los dispositivos de comunicación Bluetooth bidireccionales. Proporciona transmisión de audio con una frecuencia de muestreo de 8 kHz, que corresponde a la calidad de la telefonía por cable convencional.

Un ejemplo de una grabación en este códec..

mSBC

El códec mSBC adicional se estandarizó en 2009 y en 2010 ya aparecieron chips que lo utilizaban para la transmisión de voz. mSBC es ampliamente compatible con varios dispositivos.
Este no es un códec independiente, sino un SBC normal del estándar A2DP, con un perfil de codificación fijo: 16 kHz, mono, bitpool 26.

Un ejemplo de una grabación en este códec..

No es brillante, pero es mucho mejor que CVSD, pero sigue siendo molesto usarlo para la comunicación en línea, especialmente cuando usas auriculares para comunicarte en el juego: el audio del juego también se transmitirá a una frecuencia de muestreo de 16 kHz.

La empresa FastStreamCSR decidió desarrollar la idea de reutilizar SBC. Para sortear las limitaciones del protocolo SCO y utilizar velocidades de bits más altas, CSR tomó un camino diferente: introdujeron soporte para audio SBC bidireccional en el estándar de transmisión de audio unidireccional A2DP, perfiles de codificación estandarizados y lo llamaron "FastStream".

FastStream transmite audio estéreo a 44.1 o 48 kHz con una tasa de bits de 212 kbps a los altavoces, y se utiliza mono, 16 kHz, con una tasa de bits de 72 kbps para transmitir audio desde el micrófono (un poco mejor que mSBC). Estos parámetros son mucho más adecuados para la comunicación en juegos en línea: el sonido del juego y los interlocutores serán de alta calidad.

Un ejemplo de una grabación en este códec. (+ sonido del micrófono, igual que mSBC).

A la compañía se le ocurrió una muleta interesante, pero debido a que contradice el estándar A2DP, solo es compatible con algunos de los transmisores de la compañía (que funcionan como una tarjeta de audio USB, no como un dispositivo Bluetooth), pero no recibir soporte en pilas de Bluetooth, aunque la cantidad de auriculares con soporte FastStream no es tan pequeña.

Por el momento, la compatibilidad con FastStream en el sistema operativo es sólo como parche para Linux PulseAudio del desarrollador Pali Rohár, que no está incluido en la rama principal del programa.

aptX de baja latencia

Para su sorpresa, aptX Low Latency también admite audio bidireccional, implementando el mismo principio que FastStream.
No es posible utilizar esta función del códec en ningún lugar; no hay soporte para la decodificación de baja latencia en ningún sistema operativo ni en ninguna pila de Bluetooth que conozca.

Bluetooth 5, clásico y de bajo consumo

Ha habido mucha confusión en torno a las especificaciones y versiones de Bluetooth debido a la presencia de dos estándares incompatibles bajo la misma marca, los cuales se utilizan ampliamente para diferentes propósitos.

Hay dos protocolos Bluetooth diferentes e incompatibles: Bluetooth Classic y Bluetooth Low Energy (LE, también conocido como Bluetooth Smart). También existe un tercer protocolo, Bluetooth de alta velocidad, pero no está muy extendido y no se utiliza en dispositivos domésticos.

A partir de Bluetooth 4.0, los cambios en las especificaciones se referían principalmente a Bluetooth Low Energy, y la versión Classic solo recibió mejoras menores.

Lista de cambios entre Bluetooth 4.2 y Bluetooth 5:

9 CAMBIOS DE v4.2 A 5.0

9.1 NUEVAS CARACTERÍSTICAS

Se introducen varias características nuevas en la versión 5.0 de la especificación principal de Bluetooth. Las principales áreas de mejora son:
• Máscara de disponibilidad de ranuras (SAM)
• PHY de 2 Msym/s para LE
•LE de largo alcance
• Publicidad no conectable con ciclo de trabajo alto
• Extensiones de publicidad LE
• Algoritmo de selección de canal LE nº 2
9.1.1 Funciones agregadas en CSA5: integradas en v5.0
•Mayor potencia de salida

Fuente: www.bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=421043 (Página 291)

Solo un cambio afectó a la versión Classic en el marco de la especificación Bluetooth 5: agregaron soporte para la tecnología Slot Availability Mask (SAM), diseñada para mejorar la separación de las transmisiones de radio. Todos los demás cambios afectan solo a Bluetooth LE (y también a la potencia de salida superior).

todos Los dispositivos de audio utilizan únicamente Bluetooth Classic. Es imposible conectar auriculares y altavoces a través de Bluetooth Low Energy: no existe un estándar para transmitir audio mediante LE. El estándar A2DP, utilizado para transmitir audio de alta calidad, funciona solo a través de Bluetooth Classic y no hay análogo en LE.

Conclusión: no tiene sentido comprar dispositivos de audio con Bluetooth 5 solo debido a la nueva versión del protocolo. Bluetooth 4.0/4.1/4.2 en el contexto de la transmisión de audio funcionará exactamente igual.
Si el anuncio de nuevos auriculares menciona un rango operativo duplicado y un consumo de energía reducido gracias a Bluetooth 5, entonces debes saber que ellos mismos no lo entienden o te están engañando. No es de extrañar, porque incluso los fabricantes de chips Bluetooth en sus anuncios están confundidos acerca de las diferencias entre la nueva versión del estándar, y algunos chips Bluetooth 5 admiten la quinta versión solo para LE y usan 4.2 para Classic.

Retraso en la transmisión de audio

La cantidad de retraso (retraso) en el audio depende de muchos factores: el tamaño del búfer en la pila de audio, en la pila de Bluetooth y en el propio dispositivo de reproducción inalámbrico, y el retraso algorítmico del códec.

La latencia de códecs simples como SBC, aptX y aptX HD es muy pequeña, de 3 a 6 ms, lo que puede pasarse por alto, pero los códecs complejos como AAC y LDAC pueden provocar un retraso notable. La latencia algorítmica AAC para 44.1 kHz es de 60 ms. LDAC: aproximadamente 30 ms (según un análisis aproximado del código fuente. Podría estar equivocado, pero no mucho).

La latencia resultante depende en gran medida del dispositivo de reproducción, su chipset y su búfer. Durante las pruebas, obtuve una extensión de 150 a 250 ms en diferentes dispositivos (con el códec SBC). Si asumimos que los dispositivos que admiten códecs adicionales aptX, AAC y LDAC utilizan componentes de alta calidad y un tamaño de búfer pequeño, obtenemos las siguientes latencias típicas:

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

Permítanme recordarles: aptX Low Latency no es compatible con los sistemas operativos, por lo que solo se puede obtener una latencia más baja con una combinación de transmisor+receptor o transmisor+auriculares/altavoz, y todos los dispositivos deben admitir este códec.

Problemas con el dispositivo Bluetooth, la certificación y el logotipo

¿Cómo distinguir un dispositivo de audio de alta calidad de uno barato? ¡En apariencia, primero que nada!

Para auriculares, parlantes y receptores chinos baratos:

  1. Falta la palabra "Bluetooth" en la caja y en el dispositivo, "Wireless" y "BT" se usan con mayor frecuencia
  2. Falta el logotipo de Bluetooth Audio vía Bluetooth: máximo detalle sobre perfiles, códecs y dispositivos en la caja o dispositivo
  3. No hay LED azul parpadeante

La ausencia de estos elementos indica que el dispositivo no ha sido certificado, lo que significa que es potencialmente de baja calidad y problemático. Por ejemplo, los auriculares Bluedio no tienen certificación Bluetooth y no cumplen totalmente con la especificación A2DP. No habrían pasado la certificación.

Consideremos varios dispositivos y cajas de ellos:
Audio vía Bluetooth: máximo detalle sobre perfiles, códecs y dispositivos

Audio vía Bluetooth: máximo detalle sobre perfiles, códecs y dispositivos

Audio vía Bluetooth: máximo detalle sobre perfiles, códecs y dispositivos

Todos estos son dispositivos no certificados. Las instrucciones pueden contener un logo y el nombre de la tecnología Bluetooth, pero lo más importante es que estén en la caja y/o en el propio dispositivo.

Si sus auriculares o altavoz dicen "El bluetooth dewise está conectado correctamente", esto tampoco indica su calidad:

Conclusión

¿Puede Bluetooth reemplazar completamente los auriculares y cascos con cable? Es capaz, pero a costa de una mala calidad de las llamadas, una mayor latencia de audio que puede resultar molesta en los juegos y una gran cantidad de códecs propietarios que requieren tarifas de licencia y aumentan el costo final tanto de los teléfonos inteligentes como de los auriculares.

El marketing de códecs alternativos es muy fuerte: aptX y LDAC se presentan como un sustituto largamente esperado del SBC “anticuado y malo”, que no es tan malo como la gente cree.

Al final resultó que, las limitaciones artificiales de las pilas Bluetooth en la velocidad de bits del SBC se pueden evitar, por lo que el SBC no será inferior al aptX HD. Tomé la iniciativa en mis propias manos e hice un parche para el firmware LineageOS: Modificamos la pila Bluetooth para mejorar el sonido en auriculares sin códecs AAC, aptX y LDAC

Puede encontrar más información en los sitios web chicos de sonido и Experto en sonido.

bono: Codificador de referencia SBC, información de flujo de bits A2DP y archivos de prueba. Este archivo solía publicarse públicamente en el sitio web de Bluetooth, pero ahora solo está disponible para miembros de Bluetooth SIG.

Fuente: habr.com

Añadir un comentario