À partir du 27 mars 2025, nous vous recommandons d'utiliser android-latest-release
au lieu de aosp-main
pour créer et contribuer à AOSP. Pour en savoir plus, consultez la section Modifications apportées à AOSP.
Préparation audio
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
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:
- Assurez-vous que FastMixer est activé.
- Pour activer les sons tactiles, sélectionnez Paramètres > Son > Sons tactiles sur l'appareil.
- 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.
- Appuyez sur le bouton Accueil. Vous devriez entendre un clic.
- 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.
-
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.
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.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/03/26 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/03/26 (UTC)."],[],[],null,["# Audio warmup is the time it takes for the audio amplifier circuit in your device to\nbe fully powered and reach its normal operation state. The major contributors\nto audio warmup time are power management and any \"de-pop\" logic to stabilize\nthe circuit.\n\nThis document describes how to measure audio warmup time and possible ways to decrease\nwarmup time.\n\nMeasure output warmup\n---------------------\n\n\nAudioFlinger's FastMixer thread automatically measures output warmup\nand reports it as part of the output of the `dumpsys media.audio_flinger` command.\nAt warmup, FastMixer calls `write()`\nrepeatedly until the time between two `write()`s is the amount expected.\nFastMixer determines audio warmup by seeing how long a Hardware Abstraction\nLayer (HAL) `write()` takes to stabilize.\n\nTo measure audio warmup, follow these steps for the built-in speaker and wired headphones\nand at different times after booting. Warmup times are usually different for each output device\nand right after booting the device:\n\n1. Ensure that FastMixer is enabled.\n2. Enable touch sounds by selecting **Settings \\\u003e Sound \\\u003e Touch sounds** on the device.\n3. Ensure that audio has been off for at least three seconds. Five seconds or more is better, because the hardware itself might have its own power logic beyond the three seconds that AudioFlinger has.\n4. Press Home, and you should hear a click sound.\n5. Run the following command to receive the measured warmup: \n\n ```\n adb shell dumpsys media.audio_flinger | grep measuredWarmup\n ```\n\n\n You should see output like this: \n\n ```\n sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X\n ```\n\n\n The `measuredWarmup=X` is X number of milliseconds\n it took for the first set of HAL `write()`s to complete.\n\n\n The `warmupCycles=X` is how many HAL write requests it took\n until the execution time of `write()` matches what is expected.\n6. Take five measurements and record them all, as well as the mean. If they are not all approximately the same, then it's likely that a measurement is incorrect. For example, if you don't wait long enough after the audio has been off, you will see a lower warmup time than the mean value.\n\nMeasure input warmup\n--------------------\n\n\nThere are currently no tools provided for measuring audio input warmup.\nHowever, input warmup time can be estimated by observing\nthe time required for [startRecording()](http://developer.android.com/reference/android/media/AudioRecord.html#startRecording())\nto return.\n\nReduce warmup time\n------------------\n\n\nWarmup time can usually be reduced by a combination of:\n\n- Good circuit design\n- Accurate time delays in kernel device driver\n- Performing independent warmup operations concurrently rather than sequentially\n- Leaving circuits powered on or not reconfiguring clocks (increases idle power consumption)\n- Caching computed parameters\n\n\nHowever, beware of excessive optimization. You may find that you\nneed to tradeoff between low warmup time versus\nlack of popping at power transitions."]]