Cette page décrit les méthodes courantes pour mesurer la latence d'entrée et de sortie.
Mesurer la latence de sortie
Plusieurs techniques sont disponibles pour mesurer la latence de sortie, avec différents degrés de précision et de facilité d'exécution, comme décrit ci-dessous. Consultez également le circuit de test pour voir un exemple d'environnement de test.
Test de la LED et de l'oscilloscope
Ce test mesure la latence par rapport à l'indicateur LED de l'appareil. Si votre appareil de production ne comporte pas de LED, vous pouvez en installer une sur un appareil de forme prototype. Pour une précision encore meilleure sur les prototypes d'appareils 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 votre prototype, essayez les solutions de contournement suivantes:
- Utilisez une broche d'entrée/sortie à usage général (GPIO) pour le même objectif.
- 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 fait clignoter périodiquement la LED en même temps qu'elle émet du contenu audio.
Remarque:Pour obtenir des résultats utiles, il est essentiel d'utiliser les API appropriées dans l'application de test afin d'utiliser le chemin de sortie audio rapide. Consultez Conception pour une latence réduite pour en savoir plus.
- Placez un capteur de lumière à côté du voyant.
- Connectez les sondes d'un oscilloscope à deux canaux à la prise casque filaire (sortie de 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. En règle générale, la latence de la LED et du capteur de luminosité est relativement faible, de l'ordre d'une milliseconde ou moins, ce qui est suffisamment bas pour être ignoré.
Mesurer la latence aller-retour
La latence aller-retour correspond à la somme de la latence de sortie et de la latence d'entrée.
Test Larsen
L'un des tests de latence les plus simples est un test de retour audio (effet Larsen). Cela fournit une mesure approximative de la latence de sortie et d'entrée combinées 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 sa nature, mais il peut être utile pour calibrer d'autres tests et établir une borne 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. Par conséquent, cette méthode n'est pas recommandée pour mesurer précisément les valeurs de latence de sortie ou de latence d'entrée isolément, mais elle peut être utile pour établir des estimations approximatives.
La latence de sortie vers l'enceinte de l'appareil peut être beaucoup plus élevée que 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 à partir du micro et lit immédiatement les données capturées via le haut-parleur.
- Créez un son externe, par exemple en tapotant un crayon à côté du micro. Ce bruit génère une boucle de rétroaction. Vous pouvez également 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 des frais généraux 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 permettant de tester le retour 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 dans slesTestFeedback.cpp.
Il s'agit d'une application de ligne de commande créée à l'aide de l'environnement de compilation de la plate-forme. Toutefois, le code devrait être facile à adopter pour d'autres environnements.
Vous avez également besoin du code FIFO non bloquant situé dans la bibliothèque
audio_utils
.
Dongle de bouclage audio
Le dongle de rebouclage audio du 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 correspond à la latence aller-retour. L'appareil spécifique, la version logicielle et les conditions de test ne sont pas spécifiés ici. Les résultats affiché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 ajuster le niveau de volume pour obtenir une oscillation stable.
Mesurer 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 de la 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 correspond à la latence d'entrée.
Une autre technique consiste à utiliser une broche GPIO sur un appareil prototype. À l'extérieur, envoyez un signal GPIO au même moment que vous présentez un signal audio à l'appareil. Exécutez une application qui compare la différence entre les heures d'arrivée du signal GPIO et des données audio.
Réduire la latence
Pour obtenir une faible latence audio, portez une attention particulière à la planification, à la gestion des interruptions, à la gestion de l'alimentation et à la conception du pilote de l'appareil dans l'ensemble du système. Votre objectif est d'empêcher toute partie de la plate-forme de bloquer un thread 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 plus prévisibles dans l'ensemble.
Les sous-temps d'exécution audio, lorsqu'ils se produisent, ne sont souvent détectables que dans certaines conditions ou uniquement lors des transitions. Essayez de solliciter le système en lançant de nouvelles applications et en faisant défiler rapidement différents écrans. Toutefois, sachez que certaines conditions de test sont si stressantes qu'elles dépassent les objectifs de conception. Par exemple, la création d'un rapport de bug met une charge énorme sur le système. Il peut donc être acceptable d'avoir un sous-dépassement dans ce cas.
Lors du test des sous-exécutions:
- Configurez tout DSP après le processeur d'application afin qu'il ajoute une latence minimale.
- Exécutez des tests dans différentes conditions, par exemple lorsque l'écran est allumé ou éteint, que le câble USB est branché ou débranché, que le Wi-Fi est activé ou désactivé, que le Bluetooth est activé ou désactivé, et que les radios de téléphonie et de données sont activées ou désactivées.
- Sélectionnez une musique relativement calme que vous connaissez très bien et dans laquelle les sous-temps sont faciles à entendre.
- Utilisez des écouteurs filaires pour une sensibilité accrue.
- Faites des pauses pour éviter la fatigue auditive.
Une fois que vous avez identifié les causes sous-jacentes des sous-utilisations, réduisez le nombre et la taille des tampons pour en profiter. L'approche impatiente consistant à réduire le nombre et la taille des tampons avant d'analyser les sous-utilisations et de corriger leurs causes ne mène qu'à 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 mobiles simples". Il contient un résumé de la variabilité des temps écoulés pour chaque mixage audio et cycle d'E/S.
Dans l'idéal, toutes les mesures temporelles doivent être à peu près égales à la durée moyenne ou nominale du cycle. Si vous constatez un minimum très faible ou un maximum élevé, cela indique un problème, probablement une latence de planification ou un temps de désactivation des interruptions élevés. La partie queue de la sortie est particulièrement utile, car elle met en évidence la variabilité au-delà de +/- 3 écarts-types.