2010-05-04 5 views
5

Il semble que cette question a déjà été posée, je voudrais juste savoir s'il y a une mise à jour dans Android.Faible retard audio sur Android via NDK

Je prévois d'écrire une application audio impliquant des E/S audio à faible retard (environ < 10 ms). Cela ne semble pas possible sur la base des méthodes proposées par le SDK, donc existe-t-il - en attendant - un moyen d'atteindre cet objectif en utilisant le NDK?

Répondre

4

Il n'y a actuellement aucune bibliothèque dans le NDK pour accéder au système audio android, au moins aucune bibliothèque considérée comme sûre à utiliser (stable).

Avez-vous fait des tests avec la classe AudioTrack? C'est l'option de latence la plus faible disponible pour le moment.

+0

Le problème est la contrainte minimum de buffersize de la classe AudioTrack. Cette taille est significativement trop grande pour réaliser un son à faible retard. Et sur les appareils réels (Motorola Droid), la taille de la mémoire tampon affichée est encore plus élevée qu'avec l'émulateur. – user332530

+0

@hkhauke La taille du tampon AudioTrack n'aura aucune incidence sur la latence de la lecture audio. En d'autres termes, vous n'avez pas besoin de remplir le tampon AudioTrack pour démarrer la lecture si vous avez défini MODE_STREAM. La vraie question sera à quelle vitesse le système audio sous-jacent dans Android fonctionne ainsi que la vitesse du matériel audio lui-même. – Mark

+0

Merci pour cette indication, je vais tester ce mode! – user332530

0

Actuellement 2 principaux apis sont exposés dans NDK Audio: OpenSL (à partir d'Android 2.3 Niveau Api 9) OpenMAX AL (à partir d'Android 4.0 niveau Api 14)

Un bon point de départ pour en apprendre davantage sur l'API OpenSL dans Android est dans le code des échantillons de la NDK: regardez l'échantillon "native-audio".

mesure sur les performances ont été réalisées dans ce blog: http://audioprograming.wordpress.com/

En résumé, les meilleures latences obtenus étaient autour 100-200ms, loin de votre cible. Mais, à partir de la documentation NDK Android, l'interface OpenSL est celle qui à l'avenir bénéficiera le plus de l'accélération matérielle pour aller vers une faible latence.