¿Por qué la latencia es tan alta para el audio Bluetooth?

En referencia a esto , las latencias más bajas alcanzadas en la transmisión de audio por Bluetooth son alrededor de 30-40 ms. Dado el hecho de que la velocidad de datos de la capa física de Bluetooth es de alrededor de 2-3 Mbps y los conjuntos de chips de Bluetooth de hoy en día admiten una potencia de procesamiento suficientemente alta, las latencias de la fuente para el dispositivo de reproducción deberían ser mucho más bajas (por ejemplo, dentro de 10 ms aproximadamente, incluso manteniendo un almacenamiento en búfer sustancial).

Los códecs de audio como AptX afirman agregar latencia en solo 1,8 ms .

¿Qué causa una latencia tan alta en la transmisión de audio Bluetooth usando el perfil Bluetooth A2DP?

Probablemente el hecho de que a nadie le importe implementarlo lo más rápido posible
Nada que ver con la potencia de procesamiento, todo tiene que ver con el tamaño del paquete y el tamaño del búfer. Si alguien descubre la especificación A2DP, podemos echarle un vistazo.
@PlasmaHH, quiere que sea lo más rápido posible si está viendo televisión con sonido a través de Bluetooth, lo que hace mucha gente. El retraso del habla observable se convierte en un problema.
@TonyM: 40 ms no es perceptible para la persona promedio, puede empujar el audio mal sincronizado un poco más allá del límite de ser reconocible, pero entonces ya tiene otro problema.
@PlasmaHH, claro, hay mínimos prácticos y máximos aceptables para la latencia de audio y ha sido objeto de mucha inversión y desarrollo de Bluetooth. Sin embargo, "el hecho de que a nadie le importe implementarlo lo más rápido posible" no captó eso del todo :-)

Respuestas (2)

Esto es solo una aproximación a lo que está sucediendo: -

El tamaño del paquete de transmisión de bluetooth es de aproximadamente 1 kByte. Si está enviando música MP3 a 192 kbits por segundo, eso es aproximadamente 24 kB por segundo, por lo que 1 kB representa aproximadamente una vigésima cuarta parte de un segundo o aproximadamente 42 ms.

Debe recibir el paquete completo para verificar si hay errores, por lo que la latencia es de decenas de ms.

Consulte también esta pregunta y respuesta de desbordamiento de pila relacionadas con el tamaño máximo de paquete.

En cuanto a por qué hay un límite de tamaño de paquete, considere dos requisitos opuestos: -

  1. Los tamaños de paquete pequeños tienen un tamaño de datos de carga útil que es ineficiente en comparación con la longitud real del paquete (incluidos los encabezados y las sumas de verificación), PERO, un paquete pequeño tiene una buena probabilidad de ser recibido sin errores.
  2. Un tamaño de paquete grande tiene un uso mucho más eficiente de los datos de carga útil, pero tiene una mayor probabilidad de fallar en un enlace de radio.

Creo que Ricitos de Oro tuvo el mismo problema con los tres osos.

lo que quiere decir es que la latencia depende en gran medida del tiempo requerido para llenar el búfer del paquete de 1kByte de longitud. Si ese es el caso, si algún tipo de códec requiere una velocidad de bits más alta, [ consulte la sección "baja latencia aptX" ], entonces debería llenar el búfer de 1kB rápidamente y, por lo tanto, debería dar como resultado una latencia reducida, lo que no parece estar sucediendo en "aptX baja latencia", que dice que la latencia es de 40 ms.
Eso debería significar que hay otros factores importantes responsables de la latencia, y no solo el tamaño del paquete, ¿verdad?
No digo que no haya otros factores, pero optimizar el tamaño del paquete para adaptarse al mejor rendimiento de entrega de datos en un sistema de radio es una compensación y es probablemente el factor más importante, excepto cuando la latencia se vuelve demasiado larga para ser aceptable para el usuario.
Sobre esta base, ¿parece imposible esperar audio transmitido en vivo hasta que Bluetooth 5 comience, entonces? Me pregunto si el audio es lo suficientemente rápido como para comprimirse sobre la marcha a esa velocidad, no estoy seguro de la viabilidad de eso. Estoy escuchando resultados de <0.1s de personas aquí: reddit.com/r/AndroidQuestions/comments/9su8or/…
Y mientras tanto, literalmente puedo transmitir juegos con <30ms a través de Wifi. Bluetooth realmente apesta. Apuesto a que con Wifi podríamos transmitir audio con una latencia de <5 ms. Es un poco extraño que estas tecnologías estén tan separadas y, sin embargo, Bluetooth y Wifi a menudo son proporcionados exactamente por el mismo chip e incluso usan la misma frecuencia.

La latencia de Bluetooth se debe al diseño de los protocolos de comunicación.

Dado que Bluetooth es un sistema de conexión multipunto, necesita almacenar datos (señal de audio). El retardo de radio físico es inferior a 5 ms. Por lo tanto, sin el almacenamiento en búfer, la latencia puede estar muy por debajo de los 5 ms.