Échauffement audio

Le préchauffage audio est le temps nécessaire pour que le circuit amplificateur audio de votre appareil soit entièrement alimenté et atteigne son état de fonctionnement normal. Les principaux contributeurs au temps de préchauffage audio sont la gestion de l'alimentation et toute logique de « de-pop » pour stabiliser le circuit.

Ce document décrit comment mesurer le temps de préchauffage audio et les moyens possibles de réduire le temps de préchauffage.

Mesurer l'échauffement de la sortie

Le thread FastMixer d'AudioFlinger mesure automatiquement l'échauffement de la sortie et le signale dans le cadre de la sortie de la commande dumpsys media.audio_flinger . Au préchauffage, FastMixer appelle write() à plusieurs reprises jusqu'à ce que le temps entre deux write() corresponde à la quantité attendue. FastMixer détermine l'échauffement audio en voyant combien de temps prend write() de la couche d'abstraction matérielle (HAL) pour se stabiliser.

Pour mesurer l'échauffement audio, suivez ces étapes pour le haut-parleur intégré et les écouteurs filaires et à différents moments après le démarrage. Les temps de préchauffage sont généralement différents pour chaque périphérique de sortie et juste après le démarrage du périphérique :

  1. Assurez-vous que FastMixer est activé.
  2. Activez les sons tactiles en sélectionnant Paramètres > Son > Sons tactiles sur l'appareil.
  3. Assurez-vous que le son est désactivé depuis au moins trois secondes. Cinq secondes ou plus, c'est mieux, car le matériel lui-même peut avoir sa propre logique d'alimentation au-delà des trois secondes dont dispose AudioFlinger.
  4. Appuyez sur Accueil et vous devriez entendre un clic.
  5. Exécutez la commande suivante pour recevoir l'échauffement mesuré :
    adb shell dumpsys media.audio_flinger | grep measuredWarmup
    

    Vous devriez voir un résultat comme celui-ci :

    sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
    

    Le measuredWarmup=X est le nombre X de millisecondes qu'il a fallu pour que le premier ensemble de HAL write() soit terminé.

    warmupCycles=X correspond au nombre de requêtes d'écriture HAL nécessaires jusqu'à ce que le temps d'exécution de write() corresponde à ce qui est attendu.

  6. Prenez cinq mesures et enregistrez-les toutes, ainsi que la moyenne. S’ils ne sont pas tous identiques, il est probable qu’une mesure soit incorrecte. Par exemple, si vous n'attendez pas assez longtemps après la coupure du son, vous constaterez un temps de préchauffage inférieur à la valeur moyenne.

Mesurer l'échauffement de l'entrée

Il n'existe actuellement aucun outil fourni pour mesurer l'échauffement de l'entrée audio. Cependant, le temps de préchauffage des entrées peut être estimé en observant le temps nécessaire au retour de startRecording() .

Réduisez le temps de préchauffage

Le temps de préchauffage peut généralement être réduit par une combinaison de :

  • Bonne conception des circuits
  • Délais précis dans le pilote de périphérique du noyau
  • Effectuer des opérations de préchauffage indépendantes simultanément plutôt que séquentiellement
  • Laisser les circuits sous tension ou ne pas reconfigurer les horloges (augmente la consommation d'énergie au repos)
  • Mise en cache des paramètres calculés

Attention cependant à une optimisation excessive. Vous constaterez peut-être que vous devez faire un compromis entre un faible temps de préchauffage et l'absence d'éclatement lors des transitions de puissance.