Préparation audio

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

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

Mesurer le préchauffage des sorties

Le thread FastMixer d'AudioFlinger mesure automatiquement le préchauffage de la sortie et le signale dans la sortie de la commande dumpsys media.audio_flinger. Lors du préchauffage, FastMixer appelle write() à plusieurs reprises jusqu'à ce que le délai entre deux write() soit égal à la valeur attendue. FastMixer détermine le préchauffage audio en vérifiant le temps nécessaire à la stabilisation d'une write() HAL (Hardware Abstraction Layer).

Pour mesurer le préchauffage audio, procédez comme suit 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 appareil de sortie et juste après le démarrage de l'appareil:

  1. Assurez-vous que FastMixer est activé.
  2. Pour activer les sons tactiles, sélectionnez Paramètres > Son > Sons tactiles sur l'appareil.
  3. Assurez-vous que l'audio est désactivé depuis au moins trois secondes. Cinq secondes ou plus est préférable, car le matériel lui-même peut avoir sa propre logique d'alimentation au-delà des trois secondes d'AudioFlinger.
  4. Appuyez sur le bouton Accueil. 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
    

    Le résultat doit ressembler à ceci:

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

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

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

  6. Effectuez cinq mesures et enregistrez-les toutes, ainsi que la moyenne. Si elles ne sont pas toutes à peu près identiques, il est probable qu'une mesure soit incorrecte. Par exemple, si vous n'attendez pas assez longtemps après l'arrêt de l'audio, le temps de préchauffage sera inférieur à la valeur moyenne.

Mesurer le préchauffage des entrées

Aucun outil n'est actuellement fourni pour mesurer le préchauffage de la saisie audio. Toutefois, le temps de préchauffage de l'entrée peut être estimé en observant le temps nécessaire pour que startRecording() renvoie une valeur.

Réduire le temps de préchauffage

La durée de préchauffage peut généralement être réduite en combinant les éléments suivants:

  • Bonne conception de circuit
  • Délais temporels 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 de manière séquentielle
  • Laisser les circuits allumés ou ne pas reconfigurer les horloges (augmente la consommation d'énergie au repos)
  • Mise en cache des paramètres calculés

Toutefois, attention à ne pas trop optimiser. Vous devrez peut-être trouver un compromis entre un temps de préchauffage court et l'absence de clignotement lors des transitions d'alimentation.