Réchauffement audio

Le préchauffage audio est le temps nécessaire pour que le circuit de l'amplificateur audio de votre appareil soit complètement 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-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.

Mesure de l'échauffement de la sortie

Le thread FastMixer d'AudioFlinger mesure automatiquement le préchauffage 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() s soit le montant attendu. FastMixer détermine le préchauffage audio en voyant combien de temps une write() HAL (Hardware Abstraction Layer write() prend 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 a été désactivé pendant 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 le préchauffage mesuré:
    adb shell dumpsys media.audio_flinger | grep measuredWarmup
    

    Vous devriez voir une sortie comme celle-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 d' write() HAL se termine.

    warmupCycles=X est le nombre de demandes d'écriture HAL qu'il a fallu 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 à peu près identiques, il est probable qu'une mesure soit incorrecte. Par exemple, si vous n'attendez pas assez longtemps après que l'audio ait été désactivé, vous verrez un temps de préchauffage inférieur à la valeur moyenne.

Mesure de l'échauffement de l'entrée

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

Réduire le temps de préchauffage

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

  • Bonne conception de circuit
  • 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 en veille)
  • 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 temps de préchauffage faible et un manque de saut aux transitions de puissance.