
Debido al lanzamiento masivo de smartphones sin conector de audio de 3.5 mm, los auriculares Bluetooth han pasado a ser la forma principal de escuchar música y comunicarse como auriculares.
Los fabricantes de dispositivos inalámbricos no siempre proporcionan características detalladas del producto, y los artículos sobre audio Bluetooth en internet son contradictorios, a veces inexactos, no abarcan todas las características y a menudo replican la misma información incorrecta.
Intentaremos entender el protocolo, las capacidades de las pilas Bluetooth de los sistemas operativos, los auriculares y altavoces, los códecs Bluetooth para música y voz, averiguaremos qué influye en la calidad del sonido transmitido y en la latencia, y aprenderemos a recopilar y decodificar información sobre los códecs y otras capacidades compatibles de los dispositivos.
TL;DR:
- SBC — códec estándar
- Los auriculares tienen su propio ecualizador y post-procesamiento para cada códec por separado.
- aptX no es tan bueno como dicen los anuncios publicitarios.
- LDAC — un engaño de marketing.
- La calidad de sonido en modo conversación sigue siendo baja.
- Se pueden integrar codificadores de audio en el navegador usando C, compilando a WebAssembly a través de emscripten, y no causarán un gran retraso.
Música a través de Bluetooth.
La funcionalidad de Bluetooth se define por perfiles: especificaciones de funciones concretas. La transmisión de música por Bluetooth se realiza utilizando el perfil de transmisión de audio de alta calidad unidireccional A2DP. El estándar A2DP fue aceptado en 2003 y desde entonces no ha cambiado drásticamente.
En el marco del perfil se estandariza 1 códec obligatorio de baja complejidad computacional SBC, diseñado específicamente para Bluetooth, y 3 adicionales. También se permite el uso de códecs no documentados de implementación propia.
A partir de junio de 2019 nos encontramos con 14 códecs A2DP:
- SBC ← estandarizado en A2DP, soportado por todos los dispositivos.
- MPEG-1/2 Layer 1/2/3 ← estandarizados en A2DP: el famoso , utilizado en TV digital. , y el menos conocido
- MPEG-2/4 AAC ← estandarizado en A2DP.
- ATRAC ← viejo códec de Sony, estandarizado en A2DP.
- LDAC ← nuevo códec de Sony.
- aptX ← códec de 1988.
- aptX HD ← lo mismo que aptX, solo con diferentes parámetros de codificación.
- aptX Low Latency ← totalmente otro códec, no tiene implementación de software.
- aptX Adaptive ← otro códec de Qualcomm.
- FastStream ← pseudocódec, modificación bidireccional de SBC.
- HWA LHDC ← nuevo códec de Huawei
- Samsung HD ← es compatible con 2 dispositivos
- Samsung Scalable ← es compatible con 2 dispositivos
- Samsung UHQ-BT ← es compatible con 3 dispositivos
¿Por qué son necesarios los códecs?, se pregunta uno, cuando en Bluetooth existe EDR, que permite transmitir datos a velocidades de 2 y 3 Mbit/s, y para PCM estéreo no comprimido de 16 bits, suficiente es 1.4 Mbit/s?
Transmisión de datos a través de Bluetooth
En Bluetooth existen dos tipos de transmisión de datos: Asynchronous Connection Less (ACL) para la transmisión asíncrona sin establecimiento de conexión, y Synchronous Connection Oriented (SCO), para la transmisión síncrona con previa negociación de conexión.
La transmisión se realiza utilizando un esquema de división de tiempo y selección de canal 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 ranuras (slot). Uno de los dispositivos transmite en números de ranura pares, el otro en impares. El paquete transmitido puede ocupar 1, 3 o 5 ranuras, dependiendo del tamaño de los datos y el tipo de transmisión establecido; en este caso, la transmisión por un dispositivo se lleva a cabo en ranuras pares e impares hasta que se completa la transmisión. En total, se pueden recibir y enviar hasta 1600 paquetes por segundo, si cada uno ocupa 1 ranura, y ambos dispositivos transmiten y reciben continuamente algo.
2 y 3 Mbit/s para EDR, que se pueden encontrar en anuncios y en el sitio web de Bluetooth, son la velocidad máxima de canal para la transmisión total de todos los datos (incluidos los encabezados técnicos de todos los protocolos en los que deben encapsularse los datos), en ambas direcciones simultáneamente. La velocidad real de transferencia de datos será muy diferente.
Para la transmisión de música se utiliza un método asíncrono, casi siempre mediante paquetes tipo 2-DH5 y 3-DH5, que transportan la máxima cantidad de datos en modo EDR 2 Mbit/s y 3 Mbit/s respectivamente, y ocupan 5 ranuras de división de tiempo.
Representación esquemática de la transmisión utilizando 5 ranuras para un dispositivo y 1 ranura para otro (DH5/DH1):

Debido al principio de separación del espectro en el tiempo, debemos esperar un intervalo de tiempo de 625 microsegundos después de enviar un paquete, si el segundo dispositivo no nos envía nada o envía un paquete pequeño, y más tiempo si el segundo dispositivo está transmitiendo paquetes grandes. Si hay más de un dispositivo conectado al teléfono (por ejemplo, auriculares, reloj y pulsera de actividad), el tiempo de transmisión se divide entre todos ellos.
La necesidad de encapsular el audio en protocolos de transporte especiales L2CAP y AVDTP consume 16 bytes del máximo posible de carga útil de audio que puede ser transmitida.
Tipo de paquete
Número de intervalos
Máx. número de bytes en el paquete
Máx. número de bytes de carga útil A2DP
Máx. bitrate de carga útil A2DP
2-DH3
3
367
351
936 kbit/s
3-DH3
3
552
536
1429 kbit/s
2-DH5
5
679
663
1414 kbit/s
3-DH5
5
1021
1005
2143 kbit/s
1414 y 1429 kbit/s son claramente insuficientes para transmitir audio sin comprimir en condiciones reales, con un rango ruidoso de 2.4 GHz y la necesidad de transmitir datos de control. EDR 3 Mbit/s es exigente en términos de potencia de transmisión y ruidos en el aire, por lo que, incluso en modo 3-DH5, la transmisión cómoda de PCM es imposible, habrá interrupciones breves y todo funcionará solo a una distancia de un par de metros.
En la práctica, incluso el flujo de audio de 990 kbit/s (LDAC 990 kbit/s) se transmite con dificultad.
Volvamos a los códecs.
SBC
Códec obligatorio para todos los dispositivos que soportan el estándar A2DP. Es el mejor y el peor códec al mismo tiempo.
Frecuencia de muestreo
Profundidad de bits
Bitrate
Soporte de codificación
Soporte de decodificación
16, 32, 44.1, 48 kHz
16 bits
10-1500 kbit/s
Por todos los dispositivos
Por todos los dispositivos
SBC es un códec simple y computacionalmente rápido, con un modelo psicoacústico primitivo (utiliza solo la enmascarado de sonidos silenciosos), que emplea modulación por impulsos codificados adaptativa (APCM).
La especificación A2DP recomienda utilizar dos perfiles: Calidad Media y Calidad Alta.

El códec tiene muchas configuraciones que permiten controlar la latencia algorítmica, el número de muestras por bloque, el algoritmo de distribución de bits, pero en casi todos los casos se utilizan los mismos parámetros recomendados en la especificación: Estéreo Conjunto, 8 bandas de frecuencia, 16 bloques en un marco de audio, y el método de distribución de bits Loudness.
SBC admite el cambio dinámico del parámetro Bitpool, que afecta directamente a la tasa de bits. Si la transmisión de radio está saturada, los paquetes se pierden o los dispositivos están a gran distancia, la fuente de audio puede reducir el Bitpool hasta que la conexión se normalice.
Los fabricantes de la mayoría de los auriculares establecen el valor máximo del parámetro 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 los auriculares estableció un valor máximo de Bitpool superior a 53 (modelos como Beats Solo³, JBL Everest Elite 750NC, Apple AirPods y algunos receptores y unidades de cabeza de automóviles lo presentan), la mayoría de los sistemas operativos no permitirán utilizar tasas de bits más altas debido a las restricciones internas de los valores en los stacks de Bluetooth.
Además, algunos fabricantes establecen un valor máximo bajo de Bitpool para ciertos dispositivos. Por ejemplo, en Bluedio T es de 39, en Samsung Gear IconX es de 37, lo que proporciona una mala calidad de sonido.
Las restricciones artificiales por parte de los desarrolladores de stacks de Bluetooth probablemente surgieron debido a la incompatibilidad de algunos dispositivos con valores elevados de Bitpool o perfiles atípicos, incluso si afirmaban soportarlos, y a la falta de pruebas adecuadas durante la certificación. A los autores de los stacks de Bluetooth les resultó más fácil ceñirse al perfil recomendado que crear una base de dispositivos incorrectos (aunque ahora están haciendo eso para otras funciones que no funcionan correctamente).
SBC asigna dinámicamente bits de cuantización para bandas de frecuencia, actuando de abajo hacia arriba, con diferentes coeficientes de ponderación. Si toda la tasa de bits se utiliza para frecuencias bajas y medias, las frecuencias altas se "recortarán" (en su lugar habrá silencio).
Ejemplo SBC 328 kbps. Arriba — original, abajo — SBC, y hay un cambio periódico entre las pistas. Para el audio en el archivo de video se utiliza el códec de compresión sin pérdidas FLAC. El uso de FLAC en un contenedor mp4 no está estandarizado oficialmente, por lo que no es seguro que tu navegador lo reproduzca, pero debería funcionar en las últimas versiones de Chrome y Firefox de escritorio. Si no tienes sonido, puedes descargar el archivo y abrirlo en un reproductor de video completo.
ZZ Top — Sharp Dressed Man
En el espectrograma se puede ver el momento del cambio: SBC corta periódicamente los sonidos silenciosos por encima de 17.5 kHz y no asigna bits a la banda por encima de 20 kHz. El espectrograma completo está disponible al hacer clic (1.7 MB).
No escucho la diferencia entre el original y SBC en esta pista.
Tomemos algo más reciente y simulamos el audio que se obtendría usando los auriculares Samsung Gear IconX con Bitpool 37 (arriba — señal original, abajo — SBC 239 kbps, sonido en FLAC).
Mindless Self Indulgence — Witness
Escucho chisporroteo, un menor efecto estéreo y un desagradable ‘clic’ en la voz en altas frecuencias.
Aunque SBC es un códec muy flexible, que puede ajustarse para bajas latencias, ofrece una excelente calidad de audio a altas tasas de bits (452+ kbps) y bastante buena para la mayoría de las personas en calidad estándar (328 kbps), debido a que el estándar A2DP no establece perfiles fijos (solo da recomendaciones), los desarrolladores de stacks han impuesto limitaciones artificiales en Bitpool, los parámetros de audio transmitidos no se muestran en la interfaz de usuario, y los fabricantes de auriculares son libres de establecer sus configuraciones y nunca indican el valor de Bitpool en las especificaciones del producto; el códec se ha hecho famoso por su baja calidad de sonido, aunque esto no es un problema del códec en sí.
El parámetro Bitpool afecta directamente la tasa de bits solo dentro de un perfil. El mismo valor de Bitpool 53 puede dar tanto una tasa de bits de 328 kbps con el perfil recomendado de alta calidad, como 1212 kbps con Dual Channel y 4 bandas de frecuencia, por lo que los autores del sistema operativo, además de las limitaciones en Bitpool, establecen un límite también en el bitrate. Como veo, esta situación surgió de una falta de desarrollo del estándar A2DP: era necesario coordinar el bitrate y no Bitpool.
Tabla de soporte de capacidades de SBC en diferentes sistemas operativos:
el sistema operativo
Frecuencias de muestreo soportadas
Límite máximo de Bitpool
Límite máximo de Bitrate
Bitrate típico
Ajuste dinámico de Bitpool
Windows 10
44.1 kHz
53
512 kbps
328 kbps
✓*
Linux (BlueZ + PulseAudio)
16, 32, 44.1, 48 kHz
64 (con conexión entrante), 53 (con conexión saliente)
Sin límite
328 kbps
✓*
macOS High Sierra
44.1 kHz
64, por defecto 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 kHz
53
Sin límite
328 kbps
✗
* Bitpool solo disminuye, pero no se incrementa automáticamente en caso de mejora en las condiciones de transmisión. Para restaurar Bitpool, se debe detener la reproducción, esperar un par de segundos y reiniciar el audio.
** El valor por defecto depende de la configuración de la pila especificada al compilar el firmware. En Android 8/8.1, la frecuencia es solo de 44.1 kHz o 48 kHz, dependiendo de la configuración al compilar; 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 por impulsos codificados adaptativa diferencial (). Apareció aproximadamente en 1988 (fecha de presentación fechada en febrero de 1988), se utilizaba principalmente en equipos de audio inalámbricos profesionales antes de Bluetooth. Actualmente pertenece a Qualcomm, requiriendo licencias y regalías. Según los datos de 2014: $6000 de pago único y aproximadamente $1 por cada dispositivo, para lotes de hasta 10000 dispositivos (, p. 16).
aptX y aptX HD son el mismo códec, con diferentes perfiles de codificación.
El códec tiene solo un parámetro: la selección de la frecuencia de muestreo. También hay, en realidad, la elección de la cantidad/modo de canales, pero en todos los dispositivos que conozco (más de 70) solo se admite el estéreo.
Códec
Frecuencia de muestreo
Profundidad de bits
Bitrate
Soporte de codificación
Soporte de decodificación
aptX
16, 32, 44.1, 48 kHz
16 bits
128 / 256 / 352 / 384 kbit/s (dependiendo de la frecuencia de muestreo)
Windows 10 (de escritorio y móvil), macOS, Android 4.4+/7*, Blackberry OS 10
Ampliamente utilizado por muchos dispositivos de audio (hardware)
* Las versiones anteriores a 7 requieren modificaciones en la pila de Bluetooth. El códec solo es compatible si el fabricante del dispositivo Android ha licenciado el uso del códec de Qualcomm (si el sistema operativo tiene bibliotecas de codificación).
aptX divide el audio en 4 bandas de frecuencia y cuantiza cada una con el mismo número de bits de manera constante: 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 (números para una frecuencia de muestreo de 44.1 kHz).
Ejemplo de audio aptX (en la parte superior — señal original, en la parte inferior — aptX, espectrogramas solo de los canales izquierdos, sonido en FLAC):
Las altas frecuencias se vuelven un poco más rojizas, pero no se nota diferencia.
Debido a la distribución fija de bits de cuantificación, el códec no puede "trasladar bits" a las frecuencias que más los necesitan. A diferencia de SBC, aptX no "cortará" frecuencias, sino que añadirá ruidos de cuantificación, reduciendo el rango dinámico del audio.
No se debe suponer que el uso, por ejemplo, de 2 bits para la banda reduce el rango dinámico a 12 dB: ADPCM permite usar hasta 96 dB de rango dinámico incluso al utilizar 2 bits de cuantificación, pero solo con una señal particular.
ADPCM almacena la diferencia en la representación numérica entre la muestra actual y la siguiente, en lugar de registrar el valor absoluto, como en PCM. Esto permite reducir los requerimientos en la cantidad de bits necesarios para almacenar la misma información (sin pérdida) o prácticamente la misma (con un error de redondeo relativamente pequeño). Se utilizan tablas de coeficientes para reducir los errores de redondeo.
Al crear el códec, los autores calcularon los coeficientes ADPCM a partir de un conjunto de archivos de audio musical. Cuanto más se asemeje la señal de audio a ese conjunto de música en el que se basaron las tablas, menos errores de cuantificación (ruidos) generará aptX.
Debido a esto, las pruebas sintéticas siempre mostrarán resultados peores que la música. Hice un ejemplo sintético especial donde aptX muestra malos resultados: una sinusoidal de 12.4 kHz (arriba está la señal original, abajo está aptX. Sonido en FLAC. ¡Baje el volumen!):
Gráfico de espectro:

Se oyen claramente los ruidos.
Sin embargo, si se genera una sinusoidal con menor amplitud para que sea más silenciosa, los ruidos también se volverán más silenciosos, lo que indica un rango dinámico amplio:

Para escuchar la diferencia entre la pista musical original y la comprimida, se puede invertir una de las señales y sumar las pistas por canal. Este enfoque, en general, no es correcto y no daría un resultado razonable con códec más complejos, pero es perfectamente adecuado para ADPCM.
La raíz cuadrática media de la diferencia de señales se encuentra en -37.4 dB, lo que no es mucho para 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 afectan la cantidad de bits asignados para codificar las bandas 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 (números para 44.1 kHz).
Códec
Frecuencia de muestreo
Profundidad de bits
Bitrate
Soporte de codificación
Soporte de decodificación
aptX HD
16, 32, 44.1, 48 kHz
24 bits
192 / 384 / 529 / 576 kbit/s (dependiendo de la frecuencia de muestreo)
Android 8+*
Algunos dispositivos de audio (por hardware)
* Las versiones anteriores a 7 requieren modificaciones en la pila de Bluetooth. El códec solo es compatible si el fabricante del dispositivo Android ha licenciado el uso 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 regalías de licencia individuales.
Repitamos el ejemplo con una señal sinusoidal a 12.4 kHz:

Mucho mejor que con aptX, pero aún ruidoso.
aptX Low Latency
Un códec de Qualcomm que no tiene relación con los estándares aptX y aptX HD, según la escasa información de personas involucradas en su desarrollo. Diseñado para la transmisión interactiva de audio con baja latencia (películas, juegos), donde la latencia del sonido no puede ser ajustada programáticamente. No hay implementaciones de software conocidas para codificadores y decodificadores; es compatible exclusivamente con transmisores, receptores, auriculares y altavoces, pero no con teléfonos inteligentes y computadoras.
Frecuencia de muestreo
Bitrate
Soporte de codificación
Soporte de decodificación
44.1 kHz
276/420 kbit/s
Algunos transmisores (por hardware)
Algunos dispositivos de audio (por hardware)
AAC
AAC, o Codificación de Audio Avanzada, es un códec computacionalmente complejo, con un modelo psicoacústico serio. Ha ganado amplia aceptación para audio en Internet, siendo el segundo más popular después del MP3. Requiere licencia y regalías: $15000 una vez (o $1000 para empresas con menos de 15 empleados) + $0.98 por los primeros 500000 dispositivos ().
El códec está estandarizado en las especificaciones MPEG-2 y MPEG-4, y a pesar de la creencia común, no pertenece a Apple.
Frecuencia de muestreo
Bitrate
Soporte de codificación
Soporte de decodificación
8 — 96 kHz
8 — 576 kbit/s (para estéreo), 256 — 320 kbit/s (típico para Bluetooth)
macOS, Android 7+*, iOS
Ampliamente utilizado por muchos dispositivos de audio (hardware)
* solo en dispositivos cuyos fabricantes hayan pagado regalías
En iOS y macOS se utiliza el mejor codificador AAC de Apple en la actualidad, que ofrece la máxima calidad de audio posible. En Android se utiliza un segundo codificador de calidad, el Fraunhofer FDK AAC, pero se pueden usar varios codificadores de hardware, integrados en la plataforma (SoC), con calidad de codificación desconocida. , la calidad de codificación de AAC entre diferentes teléfonos Android varía considerablemente:
La mayoría de los dispositivos de audio inalámbricos para AAC tienen una tasa de bits máxima de 320 kbps, algunos solo admiten 256 kbps. Otras tasas de bits son extremadamente raras.
AAC ofrece una excelente calidad a tasas de bits de 320 y 256 kbps, pero es susceptible , sin embargo, es difícil escuchar cualquier diferencia con el original en iOS a una tasa de bits de 256 kbps, incluso después de varias codificaciones sucesivas, en una codificación única, por ejemplo, MP3 a 320 kbps en AAC a 256 kbps, las pérdidas pueden ser despreciables.
Al igual que con otros códecs de Bluetooth, cualquier música se decodifica primero, luego se codifica con el códec. Al escuchar música en formato AAC, primero se decodifica mediante el sistema operativo, luego se codifica en AAC nuevamente para la transmisión por Bluetooth. Esto es necesario para mezclar múltiples flujos de audio, como música y notificaciones de mensajes nuevos. iOS no es una excepción. En internet se puede encontrar muchas afirmaciones de que la música en formato AAC en iOS no se transcodifica al transmitir por Bluetooth, lo cual es incorrecto.
MP1/2/3
Los códecs de la familia MPEG-1/2 Parte 3 incluyen el conocido y ampliamente utilizado MP3, el menos común MP2 (utilizado principalmente en TV y radio digitales) y el desconocido MP1.
Los antiguos códecs MP1 y MP2 no se admiten en absoluto: no pude encontrar ningún auricular ni ningún stack de Bluetooth que los codificara o decodificara.
La decodificación de MP3 es admitida por algunos auriculares, pero ninguna pila de sistemas operativos modernos admite la codificación. Al parecer, el stack de terceros BlueSoleil para Windows puede codificar en MP3 si se modifica manualmente el archivo de configuración, pero su instalación me lleva a un BSoD en Windows 10. Conclusión: el códec no puede usarse realmente para audio Bluetooth.
Antes, entre 2006 y 2008, antes de que el estándar A2DP se generalizara en los dispositivos, las personas escuchaban música en MP3 con el auricular 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 smartphones permitía acceder a muchas funciones de bajo nivel, y en Windows Mobile incluso se podían instalar stacks de Bluetooth de terceros.
La última patente del códec MP3 ha expirado, su uso no requiere pagos de licencias desde el 23 de abril de 2017.
Si se toma como medida la patente de mayor duración mencionada en las referencias anteriores, la tecnología MP3 se volvió libre de patentes en los Estados Unidos el 16 de abril de 2017, cuando expiró la Patente de EE.UU. 6,009,399, que estaba en posesión y administrada por Technicolor.
Fuente:
Frecuencia de muestreo
Bitrate
Soporte de codificación
Soporte de decodificación
16 — 48 kHz
8 — 320 kbit/s
No se soporta en ninguna parte
Algunos dispositivos de audio (por hardware)
LDAC
Un nuevo y ampliamente promocionado codec 'Hi-Res' de Sony, que soporta frecuencias de muestreo de hasta 96 kHz y una profundidad de 24 bits, con un bitrate de hasta 990 kbit/s. Se vende como un codec audiophile que reemplaza a los codecs Bluetooth existentes. Tiene una función de ajuste adaptativo del bitrate, dependiendo de las condiciones de la transmisión de radio.
El codificador LDAC () viene incluido en la instalación estándar de Android, por lo que la codificación es compatible en cualquier smartphone Android a partir de la versión 8 del sistema operativo. Los decodificadores de software no están disponibles públicamente, la especificación del codec no está accesible al público en general, sin embargo, a primera vista el codificador parece tener una estructura interna similar a — el codec de Sony utilizado en PlayStation 4 y Vita: ambos operan en un rango de frecuencias, utilizan la Transformada Discreta de Coseno Modificada (MDCT) y compresión utilizando el algoritmo de Huffman.
El soporte de LDAC está presente prácticamente solo en los auriculares de Sony. La capacidad de decodificación de LDAC a veces se encuentra en auriculares y DAC de otros fabricantes, pero muy raramente.
Frecuencia de muestreo
Bitrate
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 de Sony y unos pocos dispositivos de otros fabricantes (hardware)
El marketing de LDAC como un codec Hi-Res perjudica su componente técnico: es tonto gastar bitrate en transmitir frecuencias inaudibles para el oído humano y mayor profundidad, mientras que no es suficiente para transmitir calidad de CD (44.1/16) sin pérdidas. Afortunadamente, el codec tiene dos modos de operación: transmisión de audio CD y transmisión de audio Hi-Res. En el primer caso, solo se transmite 44.1 kHz/16 bits por aire.
Dado que no hay un decodificador de LDAC disponible públicamente, no es posible probar el codec sin dispositivos adicionales que decodifiquen LDAC. Según la prueba de LDAC en un DAC que admite su soporte, que fue conectado por ingenieros del sitio SoundGuys.com a través de la salida digital y grabaron el sonido emitido con señales de prueba, LDAC a 660 y 990 kbit/s en modo de calidad CD proporciona una relación señal/ruido ligeramente mejor que la de aptX HD.
Fuente:
LDAC también admite una tasa de bits dinámica fuera de los perfiles establecidos, desde 138 kbps hasta 990 kbps, pero, según lo que puedo juzgar, en Android solo se utilizan perfiles estandarizados de 303/606/909 y 330/660/990 kbps.
Otros códecs
Otros códecs A2DP no han ganado una amplia adopción. Su soporte es casi inexistente o está limitado a 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 Sony, los códecs Samsung HD, Samsung Scalable y Samsung UHQ-BT tienen un soporte muy limitado por parte de dispositivos transmisores y receptores, mientras que HWA LHDC es demasiado nuevo y solo es compatible con tres(?) dispositivos.
Soporte de códecs por dispositivos de audio
No todos los fabricantes publican información precisa sobre los códecs que admiten ciertos auriculares inalámbricos, altavoces, receptores o transmisores. A veces, es posible que el soporte de un códec específico esté disponible solo para la transmisión, pero no para la recepción (esto es relevante para los transmisores-receptores combinados), aunque el fabricante solo declare "soporte" sin aclaraciones (supongo que esto se debe a la licencia separada de los codificadores y decodificadores de algunos códecs). En los dispositivos más baratos, es posible que no se descubra el soporte anunciado para aptX.
Desafortunadamente, en las interfaces de la mayoría de los sistemas operativos no se muestra en ninguna parte el códec utilizado. Esta información 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 los códecs que son compatibles tanto con el teléfono/computadora como con los auriculares.
¿Cómo se puede saber qué códecs admite el dispositivo? ¡Grabando y analizando un volcado de tráfico con parámetros de negociación A2DP!
Esto se puede hacer en Linux, macOS y Android. En Linux, se puede usar Wireshark o hcidump, en macOS — Bluetooth Explorer, y en Android — la función predeterminada de guardar un volcado de Bluetooth HCI, que está disponible en las herramientas de desarrollador. Obtendrás un volcado en formato btsnoop, que se puede cargar en el analizador Wireshark.
Presta atención¡Es posible obtener un volcado correcto solo conectándose desde un teléfono/computadora a los auriculares/altavoces (¡por extraño que parezca)! Los auriculares pueden establecer la conexión con el teléfono por sí solos, y en este caso, solicitarán la lista de códecs al teléfono y no al revés. Para grabar un volcado correctamente, primero desconéctese del dispositivo y luego, durante la grabación del volcado, vincule el teléfono con los auriculares.
Utilice el siguiente filtro de visualización para filtrar el tráfico irrelevante:
btavdtp.signal_idComo resultado, deberías ver algo como esto:
Puedes hacer clic en cada elemento del comando GetCapabilities para ver las especificaciones detalladas del códec.
Wireshark no conoce todos los identificadores de códecs, por lo que algunos códecs deberán ser descifrados manualmente, consultando la tabla de identificadores a continuación:
Obligatorio:
0x00 - SBC
Opcional:
0x01 - MPEG-1,2 (también conocido como MP3)
0x02 - MPEG-2,4 (también conocido como AAC)
0x04 - ATRAC
Específico del proveedor:
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 - El ID de códec CSR True Wireless Stereo v3 para AAC
0xFF 0x000A 0x0105 - El ID de códec CSR True Wireless Stereo v3 para MP3
0xFF 0x000A 0x0106 - El ID de códec CSR True Wireless Stereo v3 para aptXPara no tener que analizar los volcados manualmente, creé un servicio que lo analizará todo automáticamente:
Comparación de códecs. ¿Cuál códec es mejor?
Cada códec tiene sus propias ventajas y desventajas.
aptX y aptX HD utilizan perfiles estrictamente definidos 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 ni los coeficientes de codificación de aptX. El propietario del códec, Qualcomm, proporciona un codificador de referencia en forma de biblioteca. Estos hechos son la fortaleza de aptX: sabes de antemano qué calidad de sonido recibirás, sin ningún "pero".
SBC, por otro lado, tiene múltiples opciones configurables, una tasa de bits dinámica (el codificador puede reducir el parámetro bitpool si la transmisión de radio está saturada) y no tiene perfiles estrictamente definidos, solo los recomendados de «calidad media» y «alta calidad», que se añadieron a la especificación A2DP en 2003. «Alta calidad» ya no es tan alta según los estándares modernos, y la mayoría de las pilas de Bluetooth no permiten utilizar parámetros mejores que en el perfil «alta calidad», a pesar de que no existen limitaciones técnicas para ello.
Bluetooth SIG no tiene un codificador de referencia SBC en forma de biblioteca, y los fabricantes lo implementan por sí mismos.
Estas son las debilidades de SBC: nunca se sabe con anticipación qué calidad de sonido se puede esperar de un dispositivo específico. SBC puede proporcionar tanto una calidad de sonido baja como muy alta, pero la última es inalcanzable sin desactivar o eludir las restricciones artificiales de las pilas de Bluetooth.
La situación con AAC es ambigua: por un lado, teóricamente el códec debería proporcionar una calidad indistinguible de la original, pero en la práctica, según las pruebas del laboratorio SoundGuys en varios dispositivos Android, esto no se confirma. Es probable que la culpa sea de los codificadores de audio de bajo calidad integrados en varios chipsets de teléfonos. Tiene sentido utilizar AAC solo en dispositivos Apple, y en Android limitarse a aptX y LDAC.
El hardware que admite códecs alternativos suele ser de mejor calidad, simplemente porque no tiene sentido pagar regalías de licencia para utilizar estos códecs en dispositivos de muy bajo coste y baja calidad. Según mis pruebas, SBC suena muy bien en hardware de calidad.
He creado un servicio web que codifica audio en SBC, aptX y aptX HD en tiempo real, directamente en el navegador. Con él, podrás probar estos códecs de audio sin una transmisión de audio real por Bluetooth, en cualquier auricular por cable, altavoces y tu música favorita, y también cambiar los parámetros de codificación mientras se reproduce el audio:
El servicio utiliza las bibliotecas de codificación SBC del proyecto BlueZ y libopenaptx de ffmpeg, que se han compilado en WebAssembly y JavaScript a partir de 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 en diferentes códecs. En el archivo MP3 original no hay frecuencias por encima de 20 kHz.
Intenta alternar entre códecs y evalúa si notas la diferencia entre el original, SBC 53 Joint Stereo (perfil estándar y más común), y aptX/aptX HD.
Escucho la diferencia entre los códecs en los auriculares!
Las personas que no perciben la diferencia entre los códecs durante las pruebas a través del servicio web aseguran que la escuchan al escuchar música en auriculares inalámbricos. Lamentablemente, no es una broma ni un efecto placebo: la diferencia es realmente perceptible, aunque no está causada por las diferencias de los códecs.
La gran mayoría de los chipsets de audio Bluetooth utilizados en dispositivos receptores inalámbricos están equipados con un procesador de señal digital (Digital Signal Processor, DSP), que implementa ecualizadores, compresores, expansores estéreo y otros elementos destinados a mejorar (o modificar) el sonido. Los fabricantes de equipos Bluetooth pueden ajustar el DSP para cada códec por separado, y al alternar entre códecs, el oyente podría creer que escucha diferencias en su funcionamiento, cuando en realidad está escuchando diferentes configuraciones del DSP.
El conector de procesamiento de sonido DSP Kalimba en los chips de CSR/Qualcomm

Activación de diversas funciones del DSP para cada códec y salida por separado
Algunos dispositivos de gama alta vienen con un software que permite configurar los parámetros del DSP, pero la mayoría de los auriculares más económicos no tienen tal posibilidad, y los usuarios no pueden desactivar el procesamiento de sonido por medios estándar.
Características funcionales de los dispositivos
La versión moderna del estándar A2DP tiene la función de «ajuste absoluto de volumen» — control del volumen del dispositivo mediante comandos del protocolo AVRCP, que regula la amplificación de la etapa de salida, en lugar de disminuir programáticamente el volumen del flujo de audio. Si al cambiar el volumen en los auriculares, el cambio no se sincroniza con el volumen en el teléfono, significa que sus auriculares o el teléfono no soportan esta función. En tal caso, es recomendable escuchar música siempre con el volumen máximo en el teléfono, ajustando el volumen real con los botones de los auriculares; de esta manera, la relación señal/ruido será mejor y la calidad del audio. debe ser superior.
En la realidad, sin embargo, hay situaciones desafortunadas. En mis auriculares RealForce OverDrive D1, el compresor fuerte está activado para SBC, y aumentar el volumen lleva a un aumento en el nivel de los sonidos silenciosos, mientras que el volumen de los sonidos fuertes no cambia (se produce compresión de la señal). Por esto, tengo que establecer el volumen en la computadora aproximadamente a la mitad; en este caso, el efecto de compresión es casi inexistente.
Según mis observaciones, todos los auriculares con códecs adicionales soportan la función de control absoluto del volumen; parece ser uno de los requisitos para la certificación de códecs.
Algunos auriculares soportan la conexión de dos dispositivos simultáneamente. Esto permite, por ejemplo, escuchar música desde la computadora y recibir llamadas desde el teléfono. Sin embargo, hay que tener en cuenta que en este modo se desactivan los códecs alternativos, y solo se utiliza SBC.
La función AVDTP 1.3 Delay Reporting permite a los auriculares informar al dispositivo transmisor sobre la latencia con la que se reproduce el sonido. Esto permite ajustar la sincronización de audio con video durante la visualización de archivos de video: ante problemas de transmisión a través del aire, el audio no se retrasará con respecto al video, sino que, por el contrario, el video se detendrá en el reproductor de video hasta que audio y video vuelvan a sincronizarse.
La función es soportada por muchos auriculares, Android 9+ y Linux con PulseAudio 12.0+. No tengo información sobre el soporte de esta función en otras plataformas.
Comunicación bidireccional a través de Bluetooth. Transmisión de voz.
Para la transmisión de voz a través de Bluetooth se utiliza Synchronous Connection Oriented (SCO), que es una transmisión síncrona con una conexión acordada previamente. Este modo permite transmitir sonido y voz en un orden estricto, con una velocidad simétrica de envío y recepción, sin esperar la confirmación de la transmisión ni reenviar paquetes. Esto reduce la latencia general en la transmisión de audio a través del canal de radio, pero impone serias limitaciones en la cantidad de datos transmitidos por unidad de tiempo, afectando negativamente la calidad.
Cuando se utiliza este modo, tanto la voz como el audio se transmiten con la misma calidad.
Desafortunadamente, hasta 2019, la calidad de transmisión de voz a través de Bluetooth seguía siendo baja, y no está claro por qué Bluetooth SIG no hace nada al respecto.
CVSD
El códec básico de transmisión de voz CVSD fue estandarizado en 2002 y es compatible con todos los dispositivos de comunicación bidireccional a través de Bluetooth. Ofrece transmisión de audio con una frecuencia de muestreo de 8 kHz, que corresponde a la calidad de la telefonía convencional por cable.
.
mSBC
El códec adicional mSBC fue estandarizado en 2009, y en 2010 ya aparecieron chips que lo utilizaban para la transmisión de voz. mSBC es ampliamente compatible con varios dispositivos.
No es un códec independiente, sino un SBC regular del estándar A2DP, con un perfil de codificación fijo: 16 kHz, mono, bitpool 26.
.
No es genial, pero es mucho mejor que el CVSD, aunque todavía es incómodo usarlo para comunicarse a través de Internet, especialmente cuando usas auriculares para comunicarte en un juego: el sonido del juego también se transmitirá con una frecuencia de muestreo de 16 kHz.
FastStreamLa compañía CSR decidió desarrollar la idea de reutilizar el SBC. Para sortear las limitaciones del protocolo SCO y utilizar tasas de bits más altas, CSR adoptó un enfoque diferente: implementaron el soporte para audio SBC bidireccional en el estándar de transmisión de audio unidireccional A2DP, estandarizaron los perfiles de codificación y lo denominaron «FastStream».
FastStream transmite sonido estéreo a los altavoces a 44.1 o 48 kHz con una tasa de bits de 212 kbps, mientras que para la transmisión de audio desde el micrófono utiliza mono, 16 kHz, con una tasa de bits de 72 kbps (algo mejor que el mSBC). Estas especificaciones son mucho más adecuadas para la comunicación en juegos en línea: el sonido de los juegos y de los interlocutores será de calidad.
(+ ).
La empresa ideó un ingenioso truco, pero debido a que contradice el estándar A2DP, su soporte solo está disponible en algunos de los transmisores de la empresa (que funcionan como una tarjeta de sonido USB y no como un dispositivo Bluetooth), pero no recibió apoyo en las pilas Bluetooth, aunque la cantidad de auriculares que soportan FastStream no es tan pequeña.
Actualmente, el soporte para FastStream en el sistema operativo solo está disponible del desarrollador Pali Rohár, que no está incluido en la rama principal del programa.
aptX Low Latency
Para gran sorpresa, aptX Low Latency también soporta audio bidireccional, implementando el mismo principio que FastStream.
No se puede utilizar esta característica del códec en ningún lugar: no hay soporte para la decodificación de Low Latency en ningún sistema operativo ni en ninguna pila Bluetooth que conozca.
Bluetooth 5, Classic y Low Energy
Alrededor de las especificaciones y versiones de Bluetooth ha surgido una gran confusión debido a la existencia de dos estándares incompatibles bajo una misma marca, ambos ampliamente utilizados para diferentes propósitos.
Existen dos protocolos Bluetooth diferentes e incompatibles entre sí: Bluetooth Classic y Bluetooth Low Energy (LE, también conocido como Bluetooth Smart). También hay un tercer protocolo, Bluetooth High Speed, pero no es común y no se utiliza en dispositivos de consumo.
Desde Bluetooth 4.0, los cambios en la especificación se han centrado predominantemente en Bluetooth Low Energy, mientras que la versión Classic solo ha recibido 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 nuevas características en la Especificación Central de Bluetooth 5.0. Las principales áreas de mejora son:
• Máscara de Disponibilidad de Slot (SAM)
• 2 Msym/s PHY para LE
• LE de Largo Alcance
• Publicidad No Conectable de Alto Ciclo de Trabajo
• Extensiones de Publicidad LE
• Algoritmo de Selección de Canal LE #2
9.1.1 Características Agregadas en CSA5 — Integradas en v5.0
• Mayor Potencia de Salida
Fuente: (página 291)
Solo un cambio afectó a la versión Classic en el marco de la especificación Bluetooth 5: se agregó soporte para la tecnología Slot Availability Mask (SAM), destinada a mejorar la separación del espectro radioeléctrico. Todos los demás cambios solo afectan a Bluetooth LE (y a la Mayor Potencia de Salida también).
Todos Los dispositivos de audio utilizan únicamente Bluetooth Classic. No es posible conectar auriculares y altavoces a través de Bluetooth Low Energy: no existe un estándar de transmisión de audio utilizando LE. El estándar A2DP, utilizado para la transmisión de audio de alta calidad, solo funciona a través de Bluetooth Classic, y no hay un equivalente en LE.
La conclusión es que no tiene sentido adquirir dispositivos de audio con Bluetooth 5 solo por la nueva versión del protocolo. Bluetooth 4.0/4.1/4.2 funcionará exactamente igual en el contexto de la transmisión de audio.
Si el anuncio de unos nuevos auriculares menciona un doble radio de acción y un menor consumo energético gracias a Bluetooth 5, ten en cuenta que o bien no entienden lo que dicen o te están engañando. No es de extrañar, ya que incluso los fabricantes de chips Bluetooth confunden las diferencias de la nueva versión del estándar en sus anuncios, y algunos chips Bluetooth 5 solo son compatibles con la versión 5 para LE, utilizando 4.2 para Classic.
Retraso en la transmisión de audio
La magnitud del retraso (retardo) de audio depende de muchos factores: el tamaño del búfer en la pila de audio, en la pila Bluetooth y en el propio dispositivo de reproducción inalámbrico, así como del retardo algorítmico del códec.
El retardo de códecs simples, como SBC, aptX y aptX HD, es muy pequeño, y varía entre 3-6 ms, lo cual se puede ignorar. Sin embargo, los códecs complejos como AAC y LDAC pueden introducir un retardo notable. El retardo algorítmico de AAC para 44.1 kHz es de 60 ms. LDAC — alrededor de 30 ms (según un análisis básico del código fuente. Puedo estar equivocado, pero no demasiado).
El retardo final depende en gran medida del dispositivo de reproducción, su chipset y el búfer. Durante las pruebas, obtuve una variación de 150 a 250 ms en diferentes dispositivos (con el códec SBC). Si asumimos que los dispositivos compatibles con códecs adicionales como aptX, AAC y LDAC utilizan componentes de calidad y un tamaño de búfer pequeño, obtendremos los siguientes retardos típicos:
SBC: 150-250 ms
aptX: 130-180 ms
AAC: 190-240 ms
LDAC: 160-210 ms
Recuerda: aptX Low Latency no es compatible con sistemas operativos, por lo que un menor retardo se puede obtener solamente con la combinación transmisor+receptor o transmisor+auriculares/altavoz, y todos los dispositivos deben ser compatibles con este códec.
Problemas de dispositivos, certificación y logotipos de Bluetooth
¿Cómo distinguir un dispositivo de audio de calidad de una imitación barata? Por la apariencia, ¡sobre todo!
En auriculares, altavoces y receptores baratos de China:
- No aparece la palabra "Bluetooth" en la caja y el dispositivo, frecuentemente se utiliza "Wireless" y "BT"
- No hay logotipo de Bluetooth
en la caja o en el dispositivo - No hay un LED azul parpadeante
La ausencia de estos elementos indica que el dispositivo no ha pasado la certificación, lo que significa que podría ser de baja calidad y problemático. Por ejemplo, los auriculares de la marca Bluedio no están certificados para Bluetooth y no cumplen completamente con la especificación A2DP. No habrían superado la certificación.
Consideremos varios dispositivos y sus cajas:
Todos estos son dispositivos no certificados. En el manual puede haber un logotipo 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 tus auriculares o altavoz dicen «Ze bluetooth dewise is connecteda successfulle», eso tampoco indica su calidad:

Conclusión
¿Puede Bluetooth reemplazar completamente los auriculares y auriculares con cable? Puede, pero a costa de una baja calidad en las llamadas, un aumento en la latencia de transmisión de audio, que puede ser molesto en los juegos, y muchos códecs propietarios que requieren regalías 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 la esperada sustitución del «obsoleto y malo» SBC, que no es tan malo como se suele pensar.
Como se ha descubierto, las limitaciones artificiales en el bitrate del stack de Bluetooth para SBC se pueden eludir, de modo que SBC no será inferior a aptX HD. Tomé la iniciativa y hice un parche para el firmware de LineageOS:
Puedes encontrar más información en los sitios web de y .
Bonus: . Este archivo anteriormente fue publicado en el sitio web de Bluetooth, pero ahora solo está disponible para los miembros de Bluetooth SIG.
Fuente: habr.com

en la caja o en el dispositivo