Mesure de la latence audio

Cette page décrit les méthodes courantes de mesure de la latence d'entrée et de sortie.

Mesure de la latence de sortie

Il existe plusieurs techniques disponibles pour mesurer la latence de sortie, avec divers degrés de précision et de facilité d'exécution, décrites ci-dessous. Consultez également le circuit de test pour un exemple d'environnement de test.

Test de LED et d'oscilloscope

Ce test mesure la latence par rapport à l'indicateur LED de l'appareil. Si votre appareil de production n'a pas de LED, vous pouvez installer la LED sur un appareil prototype. Pour une précision encore meilleure sur les appareils prototypes avec circuit exposé, connectez une sonde d'oscilloscope à la LED directement pour contourner la latence du capteur de lumière.

Si vous ne pouvez pas installer de LED sur votre appareil de production ou de prototype, essayez les solutions de contournement suivantes:

  • Utilisez une broche GPIO (General Purpose Input / Output) dans le même but.
  • Utilisez JTAG ou un autre port de débogage.
  • Utilisez le rétroéclairage de l'écran. Cela peut être risqué car le rétroéclairage peut avoir une latence non négligeable et peut contribuer à une lecture de latence inexacte.

Pour effectuer ce test:

  1. Exécutez une application qui clignote périodiquement la LED en même temps qu'elle émet de l'audio.

    Remarque: pour obtenir des résultats utiles, il est essentiel d'utiliser les API appropriées dans l'application de test afin que vous utilisiez le chemin de sortie audio rapide. Voir Conception pour une latence réduite pour le contexte.

  2. Placez un capteur de lumière à côté de la LED.
  3. Connectez les sondes d'un oscilloscope à deux canaux à la fois à la prise casque filaire (sortie ligne) et au capteur de lumière.
  4. Utilisez l'oscilloscope pour mesurer la différence de temps entre l'observation du signal de sortie de ligne et le signal du capteur de lumière.

La différence de temps correspond à la latence approximative de la sortie audio, en supposant que la latence de la LED et la latence du capteur de lumière sont toutes deux nulles. Typiquement, la LED et le capteur de lumière ont chacun une latence relativement faible de l'ordre d'une milliseconde ou moins, ce qui est suffisamment faible pour être ignoré.

Mesure de la latence aller-retour

La latence aller-retour est la somme de la latence de sortie et de la latence d'entrée.

Test de Larsen

L'un des tests de latence les plus simples est un test de rétroaction audio (effet Larsen). Cela fournit une mesure grossière de la latence combinée de sortie et d'entrée en chronométrant une boucle de réponse impulsionnelle. Ce test n'est pas très utile pour une analyse détaillée en lui-même en raison de la nature du test, mais il peut être utile pour calibrer d'autres tests et pour établir une limite supérieure.

Cette méthode ne décompose pas les temps des composants, ce qui est important lorsque la latence de sortie et la latence d'entrée sont indépendantes. Cette méthode n'est donc pas recommandée pour mesurer la latence de sortie précise ou les valeurs de latence d'entrée isolément, mais peut être utile pour établir des estimations approximatives.

La latence de sortie vers le haut-parleur de l'appareil peut être nettement supérieure à la latence de sortie vers le connecteur du casque. Cela est dû à la correction et à la protection des haut-parleurs.

Pour effectuer ce test:

  1. Exécutez une application qui capture l'audio du microphone et lit immédiatement les données capturées sur le haut-parleur.
  2. Créez un son à l'extérieur, par exemple en tapotant un crayon près du microphone. Ce bruit génère une boucle de rétroaction. Alternativement, on peut injecter une impulsion dans la boucle à l'aide d'un logiciel.
  3. Mesurez le temps entre les impulsions de rétroaction pour obtenir la somme de la latence de sortie, de la latence d'entrée et de la surcharge de l'application.

Voici quelques ressources pour obtenir une application pour le test Larsen:

  • L'application de bouclage Dr. Rick O'Rang est une application Android pour les tests de rétroaction audio. Vous pouvez télécharger l'application sur Google Play ou obtenir le code source sur GitHub .
  • Nous avons également publié un exemple d'implémentation sur slesTestFeedback.cpp . Ceci est une application de ligne de commande et est construite à l'aide de l'environnement de construction de la plate-forme; cependant, il devrait être simple d'adopter le code pour d'autres environnements. Vous aurez également besoin du code FIFO non bloquant situé dans la bibliothèque audio_utils .

Dongle de bouclage audio

Le dongle de bouclage audio Dr. Rick O'Rang est pratique pour mesurer la latence aller-retour sur le connecteur du casque. L'image ci-dessous montre le résultat de l'injection d'une impulsion dans la boucle une fois, puis de permettre à la boucle de rétroaction d'osciller. La période des oscillations est la latence aller-retour. L'appareil, la version du logiciel et les conditions de test spécifiques ne sont pas spécifiés ici. Les résultats présentés ne doivent pas être extrapolés.

mesure aller-retour

Figure 1. Mesure aller-retour

Vous devrez peut-être retirer le câble USB pour réduire le bruit et régler le niveau de volume pour obtenir une oscillation stable.

Mesure de la latence d'entrée

La latence d'entrée est plus difficile à mesurer que la latence de sortie. Les tests suivants peuvent vous aider.

Une approche consiste à déterminer d'abord la latence de sortie à l'aide de la méthode des LED et de l'oscilloscope, puis d'utiliser le test de rétroaction audio (Larsen) pour déterminer la somme de la latence de sortie et de la latence d'entrée. La différence entre ces deux mesures est la latence d'entrée.

Une autre technique consiste à utiliser une broche GPIO sur un appareil prototype. En externe, impulsez une entrée GPIO en même temps que vous présentez un signal audio à l'appareil. Exécutez une application qui compare la différence d'heures d'arrivée du signal GPIO et des données audio.

Réduire la latence

Pour obtenir une faible latence audio, accordez une attention particulière dans tout le système à la planification, à la gestion des interruptions, à la gestion de l'alimentation et à la conception des pilotes de périphériques. Votre objectif est d'empêcher toute partie de la plate-forme de bloquer un SCHED_FIFO audio SCHED_FIFO pendant plus de quelques millisecondes. En adoptant une telle approche systématique, vous pouvez réduire la latence audio et bénéficier de performances globales plus prévisibles.

Les sous-diffusions audio, lorsqu'elles se produisent, ne sont souvent détectables que dans certaines conditions ou uniquement aux transitions. Essayez de stresser le système en lançant de nouvelles applications et en faisant défiler rapidement divers écrans. Mais sachez que certaines conditions de test sont si stressantes qu'elles dépassent les objectifs de conception. Par exemple, prendre un rapport de bogue met une charge tellement énorme sur le système qu'il peut être acceptable d'avoir un underrun dans ce cas.

Lors des tests de sous-utilisation:

  • Configurez n'importe quel DSP après le processeur d'application afin qu'il ajoute une latence minimale.
  • Exécutez des tests dans différentes conditions telles que l'écran allumé ou éteint, USB branché ou débranché, WiFi activé ou désactivé, Bluetooth activé ou désactivé, et radios de téléphonie et de données allumées ou éteintes.
  • Sélectionnez une musique relativement silencieuse que vous connaissez très bien et qui est facile à entendre.
  • Utilisez des écouteurs filaires pour plus de sensibilité.
  • Donnez-vous des pauses pour ne pas ressentir de «fatigue auditive».

Une fois que vous avez trouvé les causes sous-jacentes de la sous-utilisation, réduisez le nombre et la taille des tampons pour en tirer parti. L'approche empressée de réduire le nombre et la taille des tampons avant d' analyser les sous-exécutions et de corriger les causes des sous-débits n'entraîne que de la frustration.

Outils

systrace est un excellent outil polyvalent pour diagnostiquer les problèmes de performances au niveau du système.

La sortie de dumpsys media.audio_flinger contient également une section utile appelée «statistiques de déplacement simples». Ceci a un résumé de la variabilité des temps écoulés pour chaque mixage audio et cycle d'E / S. Idéalement, toutes les mesures de temps devraient être à peu près égales au temps de cycle moyen ou nominal. Si vous voyez un minimum ou un maximum très bas, cela indique un problème, probablement une latence de planification élevée ou un temps de désactivation d'interruption. La partie arrière de la sortie est particulièrement utile, car elle met en évidence la variabilité au-delà de +/- 3 écarts types.