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 différents degrés de précision et de facilité d'exécution, décrites ci-dessous. Voir également le circuit de test pour un exemple d'environnement de test.
Test des LED et de l'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 prototype d'appareil au facteur de forme. Pour une précision encore meilleure sur les appareils prototypes avec des circuits exposés, connectez directement une sonde d'oscilloscope à la LED pour contourner la latence du capteur de lumière.
Si vous ne parvenez pas à installer une LED sur votre appareil de production ou prototype, essayez les solutions de contournement suivantes :
- Utilisez une broche d'entrée/sortie à usage général (GPIO) 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 :
- Exécutez une application qui pulse 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 bonnes API dans l'application de test afin d'utiliser le chemin de sortie audio rapide. Voir Conception pour une latence réduite pour l'arrière-plan.
- Placez un capteur de lumière à côté de la LED.
- Connectez les sondes d'un oscilloscope à double canal à la fois à la prise casque filaire (sortie ligne) et au capteur de lumière.
- 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 de sortie audio approximative, 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, qui est suffisamment faible pour être ignorée.
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.
Essai de Larsen
L'un des tests de latence les plus simples est un test de rétroaction audio (effet Larsen). Cela fournit une mesure brute 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 soi 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 des valeurs précises de latence de sortie ou de latence d'entrée de manière isolée, mais peut être utile pour établir des estimations approximatives.
La latence de sortie vers le haut-parleur intégré à 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 :
- Exécutez une application qui capture l'audio du microphone et lit immédiatement les données capturées sur le haut-parleur.
- Créez un son externe, 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.
- 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 depuis Google Play ou obtenir le code source depuis GitHub .
- Nous avons également publié un exemple d'implémentation sur slesTestFeedback.cpp . Il s'agit d'une application en 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 l'oscillation de la boucle de rétroaction. La période des oscillations est la latence aller-retour. L'appareil spécifique, la version du logiciel et les conditions de test ne sont pas spécifiés ici. Les résultats présentés ne doivent pas être extrapolés.

Figure 1. Mesure aller-retour
Vous devrez peut-être retirer le câble USB pour réduire le bruit et régler le niveau du 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 pourraient 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 à 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, envoyez une impulsion à 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 des heures d'arrivée du signal GPIO et des données audio.
Réduction de la latence
Pour obtenir une faible latence audio, accordez une attention particulière à l'ensemble du système à la planification, à la gestion des interruptions, à la gestion de l'alimentation et à la conception des pilotes de périphérique. Votre objectif est d'empêcher toute partie de la plate-forme de bloquer un fil audio SCHED_FIFO
pendant plus de quelques millisecondes. En adoptant une approche aussi systématique, vous pouvez réduire la latence audio et bénéficier de performances globales plus prévisibles.
Les sous-utilisations audio, lorsqu'elles se produisent, ne sont souvent détectables que dans certaines conditions ou uniquement au niveau des transitions. Essayez de stresser le système en lançant de nouvelles applications et en faisant défiler rapidement les différents affichages. Mais sachez que certaines conditions de test sont si stressantes qu'elles vont au-delà des objectifs de conception. Par exemple, prendre un rapport de bogue met une telle charge énorme sur le système qu'il peut être acceptable d'avoir un underrun dans ce cas.
Lors du test des sous-exécutions :
- 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, l'USB branché ou débranché, le WiFi allumé ou éteint, le Bluetooth allumé ou éteint, et la téléphonie et les radios de données allumées ou éteintes.
- Sélectionnez une musique relativement calme que vous connaissez très bien et dans laquelle il est facile d'entendre des sous-entendus.
- Utilisez des écouteurs filaires pour plus de sensibilité.
- Accordez-vous des pauses pour ne pas ressentir de "fatigue auditive".
Une fois que vous avez trouvé les causes sous-jacentes des sous-utilisations, réduisez le nombre et la taille des tampons pour en tirer parti. L'approche enthousiaste consistant à réduire le nombre et la taille des tampons avant d' analyser les sous-utilisations et de corriger les causes des sous-utilisations 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". Cela 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 très bas ou un maximum élevé, cela indique un problème, probablement une latence de planification élevée ou un temps de désactivation des interruptions. La partie finale de la sortie est particulièrement utile, car elle met en évidence la variabilité au-delà de +/- 3 écarts-types.