2010-05-04 7 views
5

Parece que esta pregunta se ha hecho antes, solo me gustaría saber si hay una actualización en Android.Audio de bajo retardo en Android a través de NDK

Planeo escribir una aplicación de audio que involucre E/S de audio de bajo retardo (aproximadamente < 10 ms). Parece que no es posible en función de los métodos propuestos por el SDK, por lo tanto, ¿existe, mientras tanto, una forma de lograr este objetivo utilizando el NDK?

Respuesta

4

Actualmente no hay bibliotecas en el NDK para acceder al sistema de sonido de Android, al menos ninguna que se considere segura (son estables).

¿Has hecho alguna prueba con la clase AudioTrack? Es la opción de latencia más baja disponible en este momento.

+0

El problema es la restricción de amortiguación mínima de la clase AudioTrack. Este tamaño es significativamente demasiado grande para realizar audio de baja demora. Y en dispositivos reales (Motorola Droid), el tamaño de búfer mostrado es incluso mayor que con el emulador. – user332530

+0

@hkhauke El tamaño del búfer de AudioTrack no afectará la latencia de la reproducción de audio. Para decirlo de otra manera, no es necesario llenar el búfer de AudioTrack para que comience la reproducción si configuró MODE_STREAM. La verdadera pregunta será qué tan rápido se desempeña el sistema de audio subyacente en Android y qué tan rápido es el hardware de audio. – Mark

+0

¡Gracias por esa pista, voy a probar ese modo! – user332530

0

Actualmente 2 apis principales están expuestos en NDK de audio: OpenSL (desde Android 2.3 API de nivel 9) OpenMAX AL (desde Android 4.0 Nivel de Api 14)

Un buen punto de partida para aprender acerca de la API OpenSL en Android está en el código de muestras del NDK: mira la muestra de "audio nativo".

la medida cerca de actuaciones se realizaron en este blog: http://audioprograming.wordpress.com/

Como resumen de las mejores latencias obtenidas fueron de alrededor 100-200ms, lejos de su objetivo. Pero, a partir de la documentación de NDK de Android, la interfaz OpenSL es la que en el futuro se beneficiará más de la aceleración HW para ir hacia la baja latencia.