A partir de 27 de março de 2025, recomendamos usar android-latest-release
em vez de aosp-main
para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Aquecimento de áudio
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
O aquecimento do áudio é o tempo que leva para o circuito do amplificador de áudio no dispositivo
ser totalmente ligado e alcançar o estado de operação normal. Os principais contribuintes
para o tempo de aquecimento do áudio são o gerenciamento de energia e qualquer lógica de "desligamento" para estabilizar
o circuito.
Este documento descreve como medir o tempo de aquecimento do áudio e possíveis maneiras de diminuir
esse tempo.
Medir o aquecimento da saída
A linha de execução FastMixer do AudioFlinger mede automaticamente o aquecimento da saída
e o informa como parte da saída do comando dumpsys media.audio_flinger
.
No aquecimento, o FastMixer chama write()
repetidamente até que o tempo entre dois write()
s seja o valor esperado.
O FastMixer determina o aquecimento do áudio verificando quanto tempo uma camada de abstração
de hardware (HAL) write()
leva para se estabilizar.
Para medir o aquecimento do áudio, siga estas etapas para o alto-falante integrado e os fones de ouvido com fio
e em diferentes momentos após a inicialização. Os tempos de aquecimento geralmente são diferentes para cada dispositivo de saída
e logo após a inicialização do dispositivo:
- Verifique se o FastMixer está ativado.
- Ative os sons de toque selecionando Configurações > Som > Sons de toque no dispositivo.
- Verifique se o áudio ficou desligado por pelo menos três segundos. Cinco segundos ou mais é melhor, porque
o hardware pode ter a própria lógica de energia além dos três segundos que o AudioFlinger tem.
- Pressione o botão home e ouça um som de clique.
- Execute o comando a seguir para receber o aquecimento medido:
adb shell dumpsys media.audio_flinger | grep measuredWarmup
A resposta será semelhante a esta:
sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
O measuredWarmup=X
é o número X de milissegundos
necessários para que o primeiro conjunto de write()
s HAL seja concluído.
O warmupCycles=X
é o número de solicitações de gravação de HAL necessárias
até que o tempo de execução de write()
corresponda ao esperado.
-
Faça cinco medições e registre todas elas, além da média.
Se eles não forem aproximadamente iguais,
é provável que uma das medições esteja incorreta.
Por exemplo, se você não esperar o tempo suficiente depois que o áudio for desativado,
o tempo de aquecimento será menor do que o valor médio.
No momento, não há ferramentas para medir o aquecimento da entrada de áudio.
No entanto, o tempo de aquecimento da entrada pode ser estimado observando
o tempo necessário para que startRecording()
retorne.
Reduzir o tempo de aquecimento
O tempo de aquecimento geralmente pode ser reduzido com uma combinação de:
- Bom design de circuito
- Atrasos de tempo precisos no driver de dispositivo do kernel
- Realizar operações de aquecimento independentes simultaneamente, em vez de sequencialmente
- Deixar os circuitos ligados ou não reconfigurar os relógios (aumenta o consumo de energia em modo inativo)
- Armazenamento em cache de parâmetros calculados
No entanto, tenha cuidado com a otimização excessiva. Talvez você precise
fazer um trade-off entre o tempo de aquecimento baixo e a
falta de popping nas transições de energia.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-03-26 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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."]]