2010-11-17 22 views
8

Por lo tanto, cualquiera que merezca la pena en la comunidad de desarrollo de Android conoce el problema 3434 relacionado con el audio de baja latencia en Android. Para aquellos que no lo hacen, puedes informarte aquí. http://code.google.com/p/android/issues/detail?id=3434Soluciones de latencia de audio de Android

Estoy buscando cualquier tipo de solución temporal para mi proyecto personal. He oído hablar de exponer interfaces privadas al NDK al hacer rodar tu propia compilación de Android y modificar el NDK.

Todo lo que necesito es una forma de acceder a los controladores alsa de bajo nivel que ya vienen empaquetados con la versión 2.2 estándar. Me gustaría tener la capacidad de enviar PCM directamente al hardware de audio en mi dispositivo. No me importa que la aplicación resultante no pueda distribuirse en el mercado, y probablemente no se ejecute con ningún otro dispositivo que no sea el mío.

¿Alguien tiene alguna idea útil?

-Griff

EDIT: Debo mencionar, sé AudioTrack proporciona esta funcionalidad, pero me gustaría mucho menor latencia - AudioTrack se sienta alrededor de 300 ms, me gustaría algún lugar alrededor de 20-30 ms.

Respuesta

7

Griff, ese es solo el problema, NDK no mejorará el conocido problema de latencia (que incluso está documentado). La capa de abstracción de hardware en el código nativo se está agregando actualmente a la latencia, por lo que no se trata solo de acceder a los controladores de bajo nivel (por cierto, no debe confiar en que los controladores estén ahí de todos modos).

+1

Gah. Esperaba que ese no fuera el caso. De hecho, tuve la oportunidad de hablar con los chicos de Android en GDC 2011, y aparentemente no es un problema de hardware, sino un problema de arquitectura que no es fácil de resolver. – Griffin

+0

Consulte el comentario de @Ian Ni-Lewis: las cosas mejoran con 4.1 –

+0

Predigo que no habrá una resolución arquitectónica, ya que a Google no le preocupa el rendimiento real de estos dispositivos de minería de datos que se hacen pasar por teléfonos inteligentes. –

1

Android: sound API (deterministic, low latency) cubre las concesiones bastante bien. TL; DR: NDK le da un pequeño beneficio porque los subprocesos pueden ejecutarse con mayor prioridad, pero este beneficio no tiene sentido antes de Jellybean porque todo el sistema de audio está sintonizado para Java.

El Galaxy Nexus running 4.1 puede obtener bastante cerca de 30 ms de latencia de salida.

+0

Genial, por lo que un dispositivo de hardware específico funcionará pero solo un poco mejor; esto se está convirtiendo en un juego de suma cero. –