Latence audio pour les développeurs d'applications

Pour une latence audio la plus faible possible, nous vous recommandons d'utiliser l'audio natif Android basé sur OpenSL ES 1.0.1.

Liste de contrôle de mise en œuvre

Pour utiliser l'audio natif d'Android:

  1. Téléchargez et installez Android NDK . Dans le reste de ce document, nous supposerons que NDKroot est le répertoire dans lequel vous avez installé NDK.
  2. Lisez la documentation de support.
  3. Vérifiez le niveau d'API 9 ou supérieur.
  4. Vérifiez la fonctionnalité android.hardware.audio.low_latency.
  5. Utilisez la taille de tampon natif et la fréquence d'échantillonnage recommandées renvoyées par android.media.AudioManager.getProperty (java.lang.String)

    Remarque : la même taille de tampon et la même fréquence d'échantillonnage doivent également être utilisées pour l'entrée.

  6. En général, un nombre de tampons OpenSL ES de 1 est suffisant.
  7. Gardez vos gestionnaires de rappel courts, sans utilisation excessive du processeur ou blocage illimité. Évitez l'inversion de priorité.
  8. Envisagez d'utiliser des algorithmes non bloquants pour communiquer entre les gestionnaires de rappel d'entrée et de sortie, et entre les gestionnaires de rappel et le reste de votre application.

Documentation à l'appui

OpenSL ES 1.0.1

Utilisez une visionneuse PDF pour consulter la spécification OpenSL 1.0.1. Il s'agit d'une référence assez longue, et elle ne sera pas entièrement pertinente pour vous; mais vous devrez le consulter pour plus de détails sur l'API.

Remarque : ce document décrit l'OpenSL ES 1.0.1 complet, mais l'audio natif d'Android est en fait basé sur un sous-ensemble d'OpenSL ES 1.0.1 avec certaines extensions spécifiques à Android.

Les documents décrivant les versions ultérieures d'OpenSL ES, telles que 1.1, ne sont pas pertinents pour Android.

OpenSL ES pour Android

Le document "OpenSL ES pour Android" est fourni dans l'installation de NDK et n'est actuellement pas disponible en ligne. Ouvrez ce lien dans un navigateur:

NDKroot/docs/Additional_library_docs/opensles/index.html

Vous voudrez parcourir tout le document, mais portez une attention particulière à la sous-section «Performance» de la section «Notes de programmation».

La section «Fonctionnalités prises en charge par OpenSL ES 1.0.1» décrit le sous-ensemble pris en charge par Android.

La section "Extensions Android" décrit les extensions spécifiques à Android qui ne sont pas incluses dans la base OpenSL ES 1.0.1.

Relation avec OpenSL ES 1.0.1

Ce diagramme de Venn montre la relation entre l'audio natif d'Android et OpenSL ES 1.0.1.

Diagramme de Venn

Figure 1. Diagramme de Venn

Autres ressources

source.android.com

Le site source.android.com est principalement conçu pour les OEM qui construisent des appareils Android et les fournisseurs de SoC qui fournissent des composants à ces OEM.

Cependant, il existe une mine d'informations utiles sur la latence sur ce site, vous voudrez peut-être l'examiner. Voir les articles sur Latence audio.

android-ndk

Si vous avez des questions sur l'utilisation de l'audio natif d'Android, vous pouvez les poser au groupe de discussion android-ndk.

Vidéos

Audio haute performance sur Android (Google I / O 2013)
Toute la vidéo parle de latence.
Créer de superbes expériences multimédias sur Android (Google I / O 2014)
Les 14 premières minutes concernent l'audio en général et la latence d'entrée en particulier.
Latence audio: tailles de tampon (100 jours de Google Dev)
Décrit la relation entre la latence audio, les tailles de tampon et la planification des tâches.