Audio a través de Bluetooth: información más detallada sobre perfiles, códecs y dispositivos

XKCD comic. Cómo proliferan los estándares. SITUACIÓN: hay 14 estándares competitivos. Geek: 14?! Ridículo! Necesitamos desarrollar un estándar universal que abarque los casos de uso de todos. Novia del friki: ¡sí! PRONTO: Situación: hay 15 estándares competitivos.

Este artículo también está disponible en ruso / Este artículo también está disponible en ruso

El mercado masivo de teléfonos inteligentes sin el conector de audio de 3.5 mm cambió la industria de los auriculares, los auriculares inalámbricos Bluetooth se han convertido en la principal forma de escuchar música y comunicarse en modo de auriculares para muchos usuarios.
Los fabricantes de dispositivos Bluetooth rara vez revelan especificaciones detalladas del producto, y los artículos de audio Bluetooth en Internet son contradictorios y, a veces, incorrectos. No cuentan todas las características y, a menudo, publican la misma información falsa.
Tratemos de comprender el protocolo, las capacidades de las pilas Bluetooth, auriculares y altavoces, códecs Bluetooth para música y voz, descubramos qué afecta la calidad del audio transmitido y el retraso, aprenda cómo capturar y decodificar información sobre códecs compatibles y otros características del dispositivo.

TL; DR :

  • El códec SBC está bien
  • Los auriculares tienen su propio ecualizador por códec y configuración de procesamiento posterior
  • aptX no es tan bueno como dicen los anuncios
  • LDAC es una pelusa de marketing
  • La calidad del audio de voz sigue siendo baja
  • Los navegadores pueden ejecutar codificadores de audio compilados en WebAssembly desde C usando emscripten, y ni siquiera se retrasan.





Música por Bluetooth

Los componentes funcionales de Bluetooth están definidos por perfiles, características documentadas formalizadas en especificaciones. La música Bluetooth se transmite utilizando un perfil de transmisión de audio A2DP de alta calidad. El estándar A2DP fue adoptado en 2003, y no ha cambiado drásticamente desde entonces.
El perfil estandariza un códec obligatorio: SBC, un códec de baja complejidad computacional creado específicamente para Bluetooth y 3 códecs adicionales. También se pueden usar códecs específicos del proveedor de su propia implementación, no incluidos en A2DP.

A partir de junio de 2019, vivimos en el cómic XKCD con 14 códecs A2DP:

  • SBC ← incluido en A2DP, compatible con todos los dispositivos
  • MPEG-1/2 Layer 1/2/3 ← incluido en A2DP: MP3 ampliamente conocido, común en TV digital MP2 y MP1 obsoleto
  • MPEG-2/4 AAC ← incluido en A2DP
  • ATRAC ← El viejo códec de Sony, incluido en A2DP
  • LDAC ← nuevo códec de Sony
  • códec aptX ← de 1988
  • aptX HD ← igual que aptX pero con diferente perfil de codificación
  • aptX Low Latencycódec totalmente diferente, sin implementación de software aptX con un buffer más bajo
  • aptX Adaptive ← otro códec Qualcomm
  • FastStream ← pseudocódigo, modificación bidireccional SBC
  • 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


Quizás se pregunte por qué necesitamos un códec en primer lugar, si Bluetooth tiene EDR , que le permite transferir datos a 2 o 3 Mb / s, mientras que PCM de 16 bits y dos canales sin comprimir requiere solo 1.4 Mb / s.

Transferencia de datos Bluetooth

Hay dos tipos de transferencia de datos en Bluetooth: conexión asíncrona sin conexión (ACL) para la transferencia asíncrona sin establecer una conexión, y sincrónico orientado a la conexión (SCO), para la transferencia sincrónica con el establecimiento de la conexión.
La transmisión de datos utiliza un esquema de división de tiempo y cambia el canal de frecuencia para cada paquete de datos transmitido (Frecuencia-Salto / División de Tiempo-Dúplex, FH / TDD). El tiempo se divide en intervalos de 625 microsegundos, llamados intervalos. Uno de los dispositivos transmite en números pares de ranuras, el otro, en números impares. Un paquete transmitido puede ocupar 1, 3 o 5 ranuras, según el tamaño de los datos y el modo de transmisión. Si el paquete es lo suficientemente grande y se utiliza más de un modo de transmisión de ranura, los datos se llevan a cabo en ranuras pares e impares hasta el final de la transmisión. En un segundo puede recibir y enviar hasta 1600 paquetes si cada uno de ellos ocupa 1 ranura y ambos dispositivos transmiten y reciben datos continuamente.

Las velocidades de transferencia de 2 o 3 Mbps para EDR que se encuentran en los anuncios y en el sitio web de Bluetooth son la velocidad máxima de transferencia de datos del canal de todos los datos en total (incluidos los encabezados técnicos de todos los protocolos para encapsular los datos) en dos direcciones simultáneamente. La tasa de transferencia de datos real variará mucho.

El método asincrónico se usa para la transmisión de música, casi siempre usando paquetes de tipo 2-DH5 y 3-DH5, que transportan la cantidad máxima de datos en los modos EDR de 2 Mb / sy 3 Mb / s respectivamente y ocupan 5 ranuras de división de tiempo.

Representación esquemática de la transmisión utilizando 5 ranuras por un dispositivo y 1 ranura por otro (DH5 / DH1):
5 ranuras de transmisión, cada una de las cuales se transmite durante 625 microsegundos, y una ranura de recepción, también 625 microsegundos. 3.75 milisegundos en total.

Debido al principio de tiempo compartido, tenemos que esperar un intervalo de tiempo de 625 microsegundos después de transmitir un paquete si el segundo dispositivo no nos transmite nada o si transmite un paquete pequeño, y más tiempo si el segundo dispositivo realiza la transmisión en paquetes grandes. Si hay más de un dispositivo conectado al teléfono (por ejemplo, auriculares, reloj inteligente y una pulsera de fitness), el tiempo de transmisión se comparte entre todos.

La transmisión de audio A2DP requiere encapsulación en protocolos de transporte especiales L2CAP y AVDTP que deducen 16 bytes de la cantidad máxima posible de carga de audio en el paquete.
Tipo de paqueteCantidad de la ranuraBytes máximos por paqueteBytes de carga útil máxima de A2DPVelocidad de bits de carga útil máxima de A2DP
2-dh33367351936 Kb / s
3-dh335525361429 kb / s
2-DH55 56796631414 kb / s
3-dh55 5102110052143 kb / s
1414 y 1429 kbps simplemente no son suficientes para transmitir audio sin comprimir en condiciones reales, con una banda ruidosa de 2,4 GHz y datos de servicio ocasionales. EDR 3 Mbps exige una potencia de transmisión y una relación señal / ruido, por lo que incluso en el modo 3-DH5 no es posible una transmisión PCM cómoda, ya que siempre habrá interrupciones a corto plazo y todo funcionará de manera más o menos confiable solo a una distancia de Un par de metros.
En la práctica, incluso la transmisión de audio de 990 kb / s (LDAC 990 kb / s) no es trivial para transmitir de manera confiable.

Volvamos a los códecs.

Sbc

Este códec es obligatorio para todos los dispositivos compatibles con el estándar A2DP. El mejor y el peor códec al mismo tiempo.

Frecuencia de muestreoProfundidad de bitsTasa de bitsSoporte de codificaciónSoporte de decodificación
16, 32, 44.1, 48 kHz16 bit10-1500 kb / sTodos los dispositivosTodos los dispositivos


SBC es un códec simple y computacionalmente rápido con un modelo psicoacústico primitivo (con enmascaramiento auditivo simple) que utiliza modulación de código de pulso adaptativo (APCM).
La especificación A2DP recomienda utilizar dos perfiles: Calidad media y Alta calidad.
Tabla con perfiles de calidad media y alta calidad. Los valores especificados son bitpool, longitud de trama y velocidad de bits. Para estéreo conjunto de 44,1 kHz. Calidad media: bitpool = 35, longitud de cuadro = 83, bitrate = 229. Alta calidad: bitpool = 53, longitud de cuadro = 119, bitrate = 328.

El códec tiene muchas configuraciones que le permiten controlar el retraso algorítmico, el número de muestras en el bloque y el algoritmo de asignación de bits, pero casi siempre los parámetros utilizados en la especificación se usan en todas partes: estéreo conjunto , 8 bandas de frecuencia, 16 bloques en el audio marco, método de asignación de bits de sonoridad .
SBC puede ajustar el parámetro de agrupación de bits dinámicamente, lo que afecta directamente a la tasa de bits. Si la radio está obstruida, los paquetes se pierden o los dispositivos están muy lejos, la fuente de audio puede reducir la agrupación de bits para evitar interrupciones de audio hasta que la conexión vuelva a ser estable.

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 auriculares ha establecido el valor máximo de bitpool por encima de 53 (que es cierto, por ejemplo, para Beats Solo³, JBL Everest Elite 750NC, Apple AirPods, y también para algunos receptores y unidades principales de automóviles), la mayoría de los sistemas operativos no permitirán el uso velocidades de bits más altas debido a límites internos en las pilas de Bluetooth.
Además, algunos fabricantes establecen un valor de grupo de bits máximo bajo para algunos dispositivos. Por ejemplo, en Bluedio T es igual a 39, en Samsung Gear IconX es 37, lo que da una calidad de sonido deficiente.

Las limitaciones artificiales se introdujeron en las pilas Bluetooth probablemente debido a la cantidad insuficiente de pruebas de certificación y la incompatibilidad de algunos dispositivos con grandes valores de Bitpool o perfiles atípicos, incluso si informan que los admiten. Fue más fácil para los desarrolladores restringir las opciones a valores buenos conocidos de un perfil recomendado, en lugar de crear una base de datos de dispositivos incompatibles. Aunque ahora lo hacen para otras funciones que funcionan incorrectamente.

SBC asigna dinámicamente bits de cuantificación para bandas de frecuencia, actuando de abajo hacia arriba, con diferentes pesos. Si se utilizó la velocidad de bits completa para las frecuencias bajas y medias, las frecuencias superiores se cortarán (se reemplazarán por silencio).

Ejemplo de SBC 328 kbps. El audio original está en la parte superior, el audio codificado con SBC está en la parte inferior. Las pistas se cambian para comparar. La secuencia de audio en el archivo de video se comprime usando el códec FLAC sin pérdidas. El uso de FLAC en el contenedor mp4 no está oficialmente estandarizado, es por eso que el audio puede no reproducirse en su navegador (debería funcionar en las últimas versiones de escritorio Chrome y Firefox). Si no tiene sonido, puede descargar el archivo y abrirlo en cualquier reproductor de video.
ZZ Top - Hombre bien vestido

El momento de conmutación es visible en el espectrograma: SBC corta periódicamente sonidos silenciosos por encima de 17.5 kHz, y no asigna bits en absoluto para una banda por encima de 20 kHz. Se puede hacer clic en el espectrograma (1,7 MB).
imagen

No puedo escuchar la diferencia entre el original y el SBC en esta pista.

Tomemos algo más nuevo y simulemos la calidad de audio de los auriculares Samsung Gear IconX con Bitpool 37 (la parte superior es la transmisión original, la parte inferior es SBC 239 kbps, FLAC se usa para audio).
Autoindulgencia sin sentido - Testigo

Oigo crujidos, un efecto estéreo más pequeño y un "ruido" desagradable de voces a altas frecuencias.

En resumen, SBC es un códec muy flexible: puede configurarse para baja latencia, ofrece una excelente calidad de audio a altas velocidades de bits (452+ kb / s) y es bastante bueno para la mayoría de las personas con alta calidad estándar (328 kb / s) . Sin embargo, hay algunas razones por las que el códec es infame por su baja calidad de sonido: el estándar A2DP no define perfiles fijos (solo da recomendaciones), los desarrolladores de la pila Bluetooth establecen límites 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 su configuración y nunca especificar el valor de Bitpool en las características técnicas del producto.
El parámetro bitpool afecta directamente la tasa de bits solo dentro de un perfil. El mismo valor de grupo de bits de 53 puede producir tanto la tasa de bits de 328 kbps con el perfil de alta calidad recomendado como 1212 kbps en modo de doble canal y 4 bandas de frecuencia, razón por la cual los autores del sistema operativo también establecen límites en la tasa de bits además de bitpool. Supongo que la situación surgió debido a la falla en el estándar A2DP: era necesario negociar la tasa de bits, no la agrupación de bits.

Tabla de características de SBC compatibles con diferentes sistemas operativos:
OSFrecuencia de muestreoLímite máximo de bitpoolLímite máximo de velocidad de bitsBitrate típicoSoporte dinámico de bitpool
Windows 1044,1 kHz53512 kb / s328 kb / s✓ *
Linux (BlueZ + PulseAudio)16, 32, 44.1, 48 kHz64 (para conexiones entrantes), 53 (para conexiones salientes)Sin limite328 kb / s✓ *
macOS High Sierra44,1 kHz64, 53 por defecto ***Desconocido328 kb / s
Android 4.4-944,1 / 48 kHz **53328 kb / s328 kb / s
Android 4.1-4.3.144,1, 48 kHz **53229 kb / s229 kb / s
Blackberry OS 1048 kHz53Sin limite328 kb / s
* Bitpool disminuye, pero no aumenta automáticamente en caso de condiciones de transmisión variables. Para restaurar la agrupación de bits, debe 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 solo 44.1 kHz o 48 kHz, dependiendo de la configuración al compilar, otras versiones admiten 44.1 kHz y 48 kHz simultáneamente.
*** El valor de Bitpool se puede ajustar con el software Bluetooth Explorer.

aptX y aptX HD

aptX es un códec simple y rápido desde el punto de vista computacional, sin psicoacústica, que utiliza la modulación de código de pulso diferencial adaptativo ( ADPCM ). Apareció alrededor de 1988 ( la fecha de presentación de la patente es febrero de 1988). Antes de Bluetooth, se usaba principalmente para equipos de audio inalámbricos profesionales. Actualmente propiedad de Qualcomm, requiere licencias y tarifas de licencia. A partir de 2014: $ 6,000 pago único y ≈ $ 1 por dispositivo, para lotes de hasta 10,000 dispositivos ( fuente , página 16).

El códec tiene un solo parámetro: frecuencia de muestreo. Aunque también hay una opción de configuración de modo / número de canal, todos los dispositivos que conozco solo admiten estéreo (más de 70 modelos).

CódecFrecuencia de muestreoProfundidad de bitsBitrateSoporte de codificaciónSoporte de decodificación
aptX16, 32, 44.1, 48 kHz16 bit128/256/352/384 kb / s (dependiendo de la frecuencia de muestreo)Windows 10 (escritorio y móvil), macOS, Android 4.4 + / 7 *, Blackberry OS 10Amplia variedad de dispositivos (en hardware)
* Las versiones hasta 7 requieren la modificación de la pila de Bluetooth. El códec solo es compatible si el fabricante del dispositivo Android ha autorizado el uso del códec de Qualcomm (si el sistema operativo tiene bibliotecas de codificación incluidas).

aptX divide el audio en 4 bandas de frecuencia y las cuantifica con el mismo número de bits continuamente: 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 ( valores para frecuencia de muestreo de 44,1 kHz).

Ejemplo de audio aptX (arriba - audio original, abajo - audio codificado aptX, espectrogramas de canales izquierdos solamente, sonido en FLAC):

Las frecuencias superiores son un poco más rojas, pero la diferencia no es audible.

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

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

Debido a esto, las pruebas sintéticas siempre producirán peores resultados que la música. Hice un ejemplo sintético especial en el que aptX funciona mal: una onda sinusoidal de 12.4 kHz (señal original superior, inferior - aptX. Sonido en FLAC. Violación de oído, ¡disminuye el volumen!):

Gráfico de espectro:
Gráfico de espectro, nivel de ruido máximo: -55 dB

El ruido es claramente audible.

Sin embargo, si genera una onda sinusoidal con una amplitud más pequeña para que sea más silenciosa, el ruido también se volverá más silencioso, lo que indica un amplio rango dinámico:
Gráfico de espectro, nivel de ruido máximo: -75 dB

Para escuchar la diferencia entre una pista de música original y una comprimida, puede invertir una de las señales y agregar pistas a los canales respectivos. Este enfoque es incorrecto en general y no daría resultados adecuados con códecs más complejos, pero para el códec de clase ADPCM, este método es razonable.
La diferencia entre audio codificado original y aptX
La diferencia cuadrática media de las señales está en el nivel de -37.4 dB, que no es mucho para esa música comprimida.

aptX HD

aptX HD no es un códec independiente, es un perfil de codificación aptX mejorado. Los cambios afectan el número de bits asignados para la codificación de 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 (valores para 44.1 kHz) .

CódecFrecuencia de muestreoProfundidad de bitsBitrateSoporte de codificaciónSoporte de decodificación
aptX HD16, 32, 44.1, 48 kHz24 bit192/384/529/576 kb / s (dependiendo de la frecuencia de muestreo)Android 8 + *Algunos dispositivos de audio (en hardware)
* Las versiones hasta 7 requieren la modificación de la pila de Bluetooth. El códec solo es compatible si el fabricante del dispositivo Android ha autorizado el uso del códec de Qualcomm (si el sistema operativo tiene bibliotecas de codificación incluidas).

Este códec es menos común que aptX: parece requerir una licencia separada de Qualcomm y tarifas de licencia separadas.

Repitamos el ejemplo con una onda sinusoidal de 12.4 kHz:
Gráfico de espectro, nivel de ruido máximo: -72 dB

Mucho mejor que con aptX, pero sigue siendo ruidoso.


aptX baja latencia

La versión de baja latencia de aptX no es un códec independiente. Solo difiere en la configuración de latencia y búferes que se aplican en el lado de la unidad de audio. Además de eso, ese es un aptX habitual.
Fue diseñado para la transmisión de audio interactiva con baja latencia (películas, juegos), donde el retardo de sonido no se puede ajustar mediante programación. Hay una implementación de software de controlador de Dell disponible para chips Intel Bluetooth . También es compatible con transmisores, receptores, auriculares y altavoces, pero no con teléfonos inteligentes.

Frecuencia de muestreoBitrateSoporte de codificaciónSoporte de decodificación
44,1 kHz352 kb / sWindows con controlador Dell y algunos transmisores (en hardware)Algunos dispositivos de audio (en hardware)


Aac

AAC, o Advanced Audio Coding, es un códec computacionalmente sofisticado con un modelo psicoacústico complejo. Es ampliamente utilizado para audio en Internet, el segundo códec más popular después de MP3. Requiere licencia y tarifas de licencia: $ 15,000 pago único (o $ 1000 para empresas con menos de 15 empleados) + $ 0.98 para los primeros 500,000 dispositivos ( fuente ).
El códec está estandarizado dentro de las especificaciones MPEG-2 y MPEG-4 y, a pesar de la frecuente creencia errónea, no pertenece a Apple.

Frecuencia de muestreoBitrateSoporte de codificaciónSoporte de decodificación
8 - 96 kHz8 - 576 kb / s (para estéreo), 256 - 320 kb / s (típico para Bluetooth)macOS, Android 7 + *, iOSAmplia variedad de dispositivos (en hardware)
* solo en dispositivos cuyos fabricantes pagaron regalías

iOS y macOS contienen el mejor codificador AAC de Apple disponible hasta la fecha, produciendo la mejor calidad de audio posible. Android usa el segundo mejor codificador Fraunhofer FDK AAC, pero también puede usar varios codificadores de hardware integrados en la plataforma (SoC) con una calidad de codificación desconocida. Según las pruebas recientes publicadas en el sitio web de SoundGuys , la calidad de la codificación AAC en diferentes teléfonos Android varía mucho:
Gráfico del espectro de codificación AAC de varios dispositivos móviles. El Huawei P20 Pro tiene una fuerte disminución en la región de 14 kHz, en LG V30 - en la región de 16 kHz, en Samsung Note 8 - 17 kHz, en Apple iPhone 7 - 19 kHz.

La mayoría de los dispositivos de audio inalámbricos tienen una velocidad de bits máxima de 320 kbps para AAC, algunos admiten solo 256 kbps. Otras tasas de bits son extremadamente raras.
AAC proporciona una excelente calidad a velocidades de bits de 320 y 256 kb / s, pero es propenso a la pérdida de generación en contenido ya comprimido, sin embargo, es difícil escuchar las diferencias entre el original y AAC 256 kb / s en iOS, incluso con varias codificaciones consecutivas. Para MP3 320 kbps codificados en AAC 256 kbps, la pérdida puede descuidarse.
Al igual que con cualquier otro códec Bluetooth, cualquier música se decodifica primero y luego se codifica con un códec. Al escuchar música en formato AAC, el sistema operativo primero lo decodifica, luego se codifica nuevamente en AAC, para su transmisión por Bluetooth. Esto es necesario para mezclar varias transmisiones de audio, como música y notificaciones de mensajes nuevos. iOS no es la excepción. Puede encontrar muchas afirmaciones de que iOS no transcodifica música en formato AAC para su transmisión a través de Bluetooth, lo cual es incorrecto.

AAC tiene muchas extensiones para el método de codificación estándar. Uno de ellos, escalable a sin pérdida (SLS), está estandarizado para Bluetooth y le permite transferir audio sin pérdida. Desafortunadamente, no se pudo encontrar soporte SLS en los dispositivos existentes. Una extensión para reducir el retraso de transmisión AAC-LD (Low Delay) no está estandarizada para Bluetooth.


MP1 / 2/3

Los códecs MPEG-1/2 Parte 3 consisten en MP3 conocidos y ampliamente utilizados, el MP2 menos común (utilizado principalmente en TV y radio digital) y el MP1 completamente desconocido.

Los viejos códecs MP1 y MP2 no son compatibles en absoluto, no pude encontrar auriculares ni ninguna pila Bluetooth que los codificara o decodificara.
La decodificación de MP3 es compatible con algunos auriculares, pero la codificación no es compatible con ninguna pila moderna de sistemas operativos. Parece que la pila BlueSoleil de terceros para Windows puede codificar MP3 si edita manualmente el archivo de configuración, pero en mi instalación conduce a BSoD en Windows 10. El resultado: en realidad no puede usar un códec para audio Bluetooth.
Anteriormente, en 2006-2008, antes de que el estándar A2DP se usara ampliamente en dispositivos, la gente escuchaba música MP3 en 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 teléfonos inteligentes permitía el acceso a muchas funciones de bajo nivel, incluso era posible instalar una pila Bluetooth de terceros en Windows Mobile.

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

Si se toma como medida la patente de más larga duración mencionada en las referencias antes mencionadas, entonces la tecnología MP3 quedó libre de patentes en los Estados Unidos el 16 de abril de 2017 cuando expiró la Patente de EE. UU. 6,009,399, en poder y administrada por Technicolor.
Fuente: www.iis.fraunhofer.de/en/ff/amm/prod/audiocodec/audiocodecs/mp3.html

Frecuencia de muestreoBitrateSoporte de codificaciónSoporte de decodificación
16-48 kHz8 - 320 kb / sNo es compatible en ningún lugarAlgunos dispositivos de audio (en hardware)


LDAC

Nuevo y promocionado activamente códec "Hi-Res" de Sony que admite frecuencias de muestreo de hasta 96 kHz y 24 bits de profundidad, con una velocidad de bits de hasta 990 kbps. Se anuncia como un códec audiófilo, como reemplazo de los códecs Bluetooth existentes. Tiene una función de velocidad de bits adaptativa que sintoniza la velocidad de bits dependiendo de las condiciones de transmisión de radio.

El codificador LDAC ( libldac ) está incluido en la distribución estándar de Android, la codificación es compatible con cualquier teléfono inteligente Android a partir de la versión 8 del sistema operativo. Los decodificadores de software no están disponibles de forma gratuita y la especificación del códec no está disponible para el público en general, sin embargo, a primera vista en el codificador, los componentes internos son similares al códec ATRAC9 de Sony utilizado en PlayStation 4 y Vita: ambos trabajan en el dominio de la frecuencia, usan una transformación de coseno discreta modificada (MDCT) y compresión Huffman.
LDAC divide el audio en 12 o 16 bandas de frecuencia: 12 se utiliza para 44,1 y 48 kHz, 16 para 88,2 y 96 kHz.

LDAC es compatible casi exclusivamente solo con auriculares Sony. La decodificación LDAC a veces se encuentra en auriculares y DAC de otros fabricantes, pero muy raramente.

Frecuencia de muestreoBitrateSoporte de codificaciónSoporte de decodificación
44,1 - 96 kHz303/606/909 kb / s (para 44,1 y 88,2 kHz), 330/660/990 kb / s (para 48 y 96 kHz)Android 8+Algunos auriculares Sony y dispositivos seleccionados de otros fabricantes (en hardware)


El marketing de "códec de alta resolución" de LDAC perjudica sus propiedades técnicas: no es aconsejable gastar la tasa de bits para codificar y transmitir frecuencias que no son audibles para el oído humano y una mayor profundidad de bits cuando aún no es posible comprimir sin pérdidas el audio de calidad de CD. Afortunadamente, el códec tiene dos modos de operación: transmisión de audio de CD y transmisión de audio de alta resolución. En el primer caso, solo se transmiten 44.1 kHz / 16 bits por el aire.

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

Perfil de ruido LDAC CD 990 kbit / s
Fuente: www.soundguys.com/ldac-ultimate-bluetooth-guide-20026

LDAC también admite una tasa de bits dinámica fuera de los perfiles establecidos: de 138 kbps a 990 kbps, pero por lo que puedo decir, Android solo usa perfiles estandarizados de 303/606/909 y 330/660/990 kbps.

Otros códecs

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


Soporte de códec de dispositivos de audio

No todos los fabricantes publican información precisa sobre los códecs compatibles con ciertos auriculares, parlantes, receptores o transmisores inalámbricos. A veces sucede que cierto códec es compatible solo para la transmisión pero no para la recepción (relevante para transmisores-receptores combinados), aunque el fabricante simplemente declara "soporte", sin ninguna nota (supongo que la culpa es de licencias separadas de codificadores y decodificadores) . En los dispositivos más baratos, nunca puede encontrar el soporte declarado para aptX.

Desafortunadamente, los códecs compatibles no se muestran en ninguna parte en la mayoría de las interfaces del sistema operativo. La información sobre el códec utilizado actualmente solo está presente 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 compatibles tanto con el teléfono / computadora como con los auriculares.

¿Cómo averiguar qué códecs admite el dispositivo? ¡Al capturar y analizar el volcado de tráfico con las opciones de negociación de A2DP!
Esto se puede hacer en Linux, macOS y Android. En Linux puede usar Wireshark o hcidump, en macOS se puede usar Bluetooth Explorer y en Android usar la función de guardado de volcado Bluetooth HCI disponible en las herramientas para desarrolladores. Obtendrá un volcado en formato btsnoop, que podría abrirse en el analizador Wireshark.
NOTA : necesitará conectarse desde el teléfono inteligente / computadora a los auriculares para capturar el volcado correcto, no al revés (¡no importa lo tonto que parezca)! Los auriculares también pueden establecer una conexión con el teléfono inteligente o la PC, en cuyo caso solicitarán una lista de códecs del teléfono y no divulgarán su propio conjunto de códecs. Para asegurarse de capturar un volcado correcto, primero desconecte el dispositivo y luego, mientras graba el volcado, empareje el teléfono con los auriculares.

Use el siguiente filtro de visualización para ocultar el tráfico irrelevante:
btavdtp.signal_id 


Como resultado, debería ver algo similar:
Wireshark con un volcado cargado y un filtro para mostrar el comando A2DP GetCapabilities

Al hacer clic en el comando GetCapabilities puede obtener información detallada del códec.
Características de uno de los artículos seleccionados. La identificación del códec es visible.

Wireshark no conoce todos los identificadores de códec, por lo que algunos de los códecs tendrán que descifrarse manualmente, según 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 

Puede averiguar si su dispositivo admite EDR 3 Mbps utilizando el siguiente filtro:
 bthci_evt.code==0x0b 

imagen

Para no analizar los volcados manualmente, hice un servicio que analizará todo automáticamente: btcodecs.valdikss.org.ru

El software simple pero útil de Windows Bluetooth Tweaker muestra los códecs compatibles y actualmente utilizados, además de otras funciones.
Los usuarios de Linux también pueden usar la utilidad avinfo del paquete BlueZ.


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

Cada códec tiene sus ventajas y desventajas.
aptX y aptX HD utilizan perfiles codificados que no se pueden cambiar sin modificar el codificador y el decodificador. Ni el teléfono inteligente ni el fabricante de los auriculares pueden cambiar la tasa de bits o los factores de codificación de aptX. Qualcomm, el propietario del códec, distribuye el codificador de referencia como una biblioteca a los licenciatarios. Estos hechos son el fuerte de aptX: usted sabe de antemano qué calidad de sonido obtendrá, sin peros.

SBC, por el contrario, tiene muchos parámetros ajustables, velocidad de bits dinámica (el codificador puede reducir el parámetro de bitpool si la radio está congestionada) y no tiene perfiles codificados, sino solo la "calidad media" y "alta calidad" recomendadas que se han agregado a la especificación A2DP en 2003. La "alta calidad" ya no es tan alta para los estándares modernos, y la mayoría de las pilas Bluetooth no permiten usar parámetros que son mejores que en el perfil de "alta calidad", aunque no existen técnicas limitaciones para esto.
Bluetooth SIG no proporciona un codificador de referencia SBC en forma de biblioteca, y los fabricantes lo implementan ellos mismos.
Estas son las debilidades de SBC: nunca está claro de antemano qué calidad de sonido se espera de un dispositivo en particular. SBC puede producir tanto una calidad de sonido baja como muy alta, pero esta última es inalcanzable sin deshabilitar o eludir las limitaciones artificiales de las pilas de Bluetooth.

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

Los dispositivos que admiten códecs alternativos suelen ser de mayor calidad, simplemente porque no tiene sentido pagar regalías por dispositivos muy baratos y de baja calidad para usar estos códecs. Según mis pruebas, SBC suena muy bien en hardware de alta calidad.

Hice un servicio web que codifica audio a SBC, aptX y aptX HD en tiempo real, directamente en su navegador. Puede usarlo para probar estos códecs de audio sin transmitir audio a través de Bluetooth, en cualquier auricular con cable, altavoces y su música favorita, y también cambiar los parámetros de codificación directamente durante la reproducción de audio:
btcodecs.valdikss.org.ru/sbc-encoder
El servicio utiliza 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 su ejecución en un navegador. ¡Quién podría haber soñado 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. No hay frecuencias superiores a 20 kHz presentes en el archivo MP3 original.

Intente cambiar los códecs y vea si puede escuchar la diferencia entre el SBC 53 Joint Stereo original (el perfil estándar y más común) y aptX / aptX HD.


¡Pero puedo escuchar la diferencia entre los códecs en unos auriculares !

Las personas que no escuchan la diferencia entre los códecs mientras prueban a través de un servicio web afirman que la escuchan cuando escuchan música con auriculares Bluetooth. Desafortunadamente, eso no es una broma o un efecto placebo: la diferencia es realmente audible, pero no es causada por la diferencia en los códecs .

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

En la imagen: DECODER - Ecualizador paramétrico - mejora estéreo - compander - post masterización - ganancia de salida
Canal de procesamiento de audio Kalimba DSP en SoC CSR / Qualcomm

En la imagen: las casillas de verificación activan diferentes funciones DSP por separado para cada códec.
Activación de varias funciones DSP para cada códec y salida por separado

Algunos dispositivos de segmento premium están equipados con un software que le permite ajustar los parámetros DSP, pero la mayoría de los auriculares más baratos no tienen esta característica, y los usuarios no pueden desactivar el procesamiento posterior del sonido con herramientas estándar.


Características funcionales de los dispositivos

La versión actual del estándar A2DP tiene una función de control de volumen absoluto que permite controlar la ganancia de salida con comandos especiales mediante el uso del protocolo AVRCP, en lugar de reducir mediante programación el volumen de la transmisión de audio. Si cambia el volumen de los auriculares y el cambio no está sincronizado con el volumen del teléfono, esto significa que sus auriculares o teléfono no son compatibles con esta función. En este caso, tiene sentido escuchar siempre música al volumen máximo en el teléfono, ajustando el volumen real con los botones de los auriculares: la relación señal / ruido será mejor y la calidad de audio debería ser mayor.
En realidad, hay situaciones tristes. Por RealForce OverDrive, los auriculares D1 usan un compander fuerte para SBC y un aumento en el volumen conduce a un aumento en el nivel de sonidos silenciosos, y el volumen de los sonidos fuertes no cambia (se produce la compresión de la señal). Debido a esto, es necesario configurar el volumen en la computadora a aproximadamente la mitad, en este 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, que es probablemente uno de los requisitos para la certificación de códecs.

Algunos auriculares admiten la conexión de dos dispositivos al mismo tiempo . Esto permite, por ejemplo, escuchar música desde una computadora y recibir llamadas desde un teléfono. Sin embargo, debe tener en cuenta que los códecs alternativos están deshabilitados en este modo, y solo se utiliza SBC.

La función AVDTP 1.3 Delay Reporting permite a los auriculares informar un retraso a un dispositivo emisor que realmente reproduce el sonido. Esto ayuda a ajustar la sincronización de audio con video mientras mira archivos de video: si se produce una congestión de radio, el audio no se retrasará con respecto al video, sino que, por el contrario, el reproductor de video reducirá la velocidad del video hasta que el audio y el video estén sincronizado de nuevo.
La característica es compatible con muchos auriculares, Android 9+ y Linux con PulseAudio 12.0+. No estoy al tanto de la compatibilidad con otros sistemas operativos.


Comunicación dúplex por Bluetooth. Transmisión de voz.

Synchronous Connection Oriented (SCO) y su versión mejorada Enhanced Synchronous Connection Oriented (eSCO) son los modos utilizados para la transmisión de voz Bluetooth. El modo le permite transmitir sonido y voz estrictamente en orden, con una velocidad simétrica de envío y recepción, sin esperar la confirmación de la transmisión y reenvío de paquetes. Esto reduce el retraso general en 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 del audio.
Cuando se utiliza este modo, tanto la voz del micrófono como el audio se transmiten a los auriculares con la misma calidad.
La transferencia de los datos en sí está estandarizada por el perfil HSP, que también describe funciones adicionales, como el funcionamiento de los botones de control de volumen, la recogida del auricular y el colgado.
Desafortunadamente, a partir de 2019, la calidad de la transmisión de voz a través de Bluetooth sigue siendo pobre, y no está claro por qué Bluetooth SIG no está haciendo nada al respecto.

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

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

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

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

No es brillante, pero es mucho mejor que CVSD, aunque todavía es desagradable usarlo para comunicarse a través de Internet, especialmente cuando usa auriculares para comunicarse en el juego: el sonido del juego también se transmitirá a una frecuencia de muestreo de 16 kHz .

Faststream
CSR decidió desarrollar aún más la idea de reutilizar SBC. Para sortear las limitaciones del protocolo SCO y utilizar velocidades de bits más altas, CSR fue en sentido contrario: agregaron soporte para audio SBC bidireccional en el estándar A2DP de transmisión de audio unidireccional, y lo llamaron "FastStream".

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

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

La compañía ideó un truco interesante, pero debido al hecho de que contradice el estándar A2DP, solo algunos de los transmisores de la compañía lo admiten (que funciona como una tarjeta de audio USB y no un dispositivo Bluetooth), pero no recibió Soporte en pila Bluetooth. Sin embargo, la cantidad de auriculares con soporte FastStream no es tan pequeña.

Por el momento, el soporte FastStream solo está disponible en forma de parche para Linux PulseAudio de Pali Rohár, que no está incluido en la rama principal del programa.

aptX baja latencia
Para sorpresa, aptX Low Latency también admite audio bidireccional, implementando el mismo principio que FastStream.
No hay forma de usar esta función del códec en ninguna parte: no hay soporte para la decodificación de baja latencia en ningún sistema operativo y en ninguna pila Bluetooth que yo sepa.


Bluetooth 5, clásico y de baja energía

Existe mucha confusión sobre las especificaciones y versiones de Bluetooth debido a la presencia de dos estándares incompatibles bajo una misma marca, los cuales son ampliamente utilizados para diferentes propósitos.

Hay dos protocolos de Bluetooth diferentes e incompatibles: Bluetooth Classic y Bluetooth Low Energy (LE, también conocido como Bluetooth Smart). También hay un tercer protocolo, Bluetooth de alta velocidad, pero no es común y no se usa en electrodomésticos.

A partir de Bluetooth 4.0, los cambios en las especificaciones se centraron principalmente en Bluetooth Low Energy, mientras que la versión Classic recibió solo 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 Bluetooth Core Specification 5.0. Las principales áreas de mejora son:
• Máscara de disponibilidad de ranura (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: www.bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=421043 (página 291)

Solo un cambio afectó a la versión clásica dentro de la especificación de Bluetooth 5: soporte para la tecnología de Máscara de disponibilidad de ranura (SAM), diseñada para mejorar el uso compartido de frecuencias de radio. Todos los demás cambios afectan solo a Bluetooth LE (lo mismo se aplica a la potencia de salida superior también).

Todos los dispositivos de audio usan solo Bluetooth Classic. Los auriculares y los altavoces no se pueden conectar a través de Bluetooth Low Energy. No hay un estándar para transmitir audio usando LE. El estándar A2DP, utilizado para transmitir audio de alta calidad, funciona solo a través de Bluetooth Classic, y no existe un equivalente en LE.

En resumen: comprar dispositivos de audio con Bluetooth 5 solo por la nueva versión del protocolo no tiene sentido. Bluetooth 4.0 / 4.1 / 4.2 en el contexto de la transmisión de audio funcionará de la misma manera.
Si el anuncio de los nuevos auriculares menciona un radio doble y un consumo de energía reducido gracias a Bluetooth 5, entonces debe saber que no se entienden o lo engañan. No es de extrañar, incluso los fabricantes de chips Bluetooth confunden la diferencia en ambos estándares, y algunos chips Bluetooth 5 admiten la quinta versión solo para LE y usan 4.2 para Classic.

Latencia de transmisión de audio

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

El retraso de los códecs simples, como SBC, aptX y aptX HD es bastante pequeño, aproximadamente de 3 a 6 ms, lo que puede descuidarse, pero los códecs complejos, como AAC y LDAC, pueden generar un retraso notable. El retraso algorítmico AAC para 44.1 kHz es de 60 ms. LDAC: aproximadamente 30 ms (mediante un análisis aproximado del código fuente. Puedo estar equivocado, pero no mucho).

El retraso total depende en gran medida del dispositivo de reproducción, su conjunto de chips y el búfer. Durante las pruebas, obtuve una extensión de 150 a 250 ms en diferentes dispositivos (con el códec SBC). Si suponemos que los dispositivos con soporte para códecs adicionales aptX, AAC y LDAC usan componentes de mejor calidad y un tamaño de búfer pequeño, obtenemos los siguientes valores de latencia típicos:

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

Permítame recordarle: aptX Low Latency no es compatible con los sistemas operativos, por lo que solo se puede obtener un retraso menor con un transmisor + receptor o transmisor + paquete de auriculares / altavoces, y todos los dispositivos deben ser compatibles con este códec.


Los problemas con las certificaciones, logotipos y dispositivos.

¿Cómo distinguir el dispositivo de audio de alta calidad de las artesanías baratas? Por la apariencia, en primer lugar!

Los auriculares, altavoces y receptores chinos baratos tienen:
  1. No hay una palabra "Bluetooth" en la caja y el dispositivo, la mayoría de las veces se reemplaza por "Inalámbrico" y "BT"
  2. Sin logo de Bluetooth Logotipo de Bluetooth en caja o dispositivo
  3. Sin LED azul intermitente

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

Veamos varios dispositivos y cajas de ellos:






Todos estos son dispositivos no certificados. Las instrucciones pueden tener el logotipo y el nombre de "Bluetooth", pero lo más importante: estos elementos deben estar presentes en el dispositivo o en la caja.

Si sus auriculares o altavoz dicen "Ze bluetooth dewise está conectado con éxito", esto tampoco dice nada bueno sobre la calidad:



Conclusión

¿Puede Bluetooth reemplazar completamente los auriculares y auriculares con cable? Probablemente, pero a costa de una voz de baja calidad, una mayor latencia en la transmisión de sonido, lo que puede ser molesto en los juegos, y una multitud de códecs patentados que requieren tarifas de licencia y aumentan el costo final de los teléfonos inteligentes y los auriculares.

La comercialización de códecs alternativos es muy fuerte: aptX y LDAC se presentan como un reemplazo largamente esperado del SBC "obsoleto y malo", que está lejos de ser tan malo como comúnmente se piensa.

Al final resultó que, las limitaciones artificiales de las pilas de Bluetooth en SBC pueden pasarse por alto, por lo que el SBC estará a la par con aptX HD. Tomé la iniciativa e hice un parche para el firmware de LineageOS: modificación de la pila de Bluetooth para mejorar el sonido en los auriculares sin códecs AAC, aptX y LDAC

Se puede encontrar más información sobre códecs en los sitios web SoundGuys y SoundExpert .

Bonificación: codificador de referencia SBC, información de flujo de bits A2DP y archivos de prueba . Este archivo se publicó anteriormente en el sitio web de Bluetooth públicamente, pero ahora está disponible solo para aquellos que se han unido a Bluetooth SIG.

Source: https://habr.com/ru/post/456182/


All Articles