O aquecimento de áudio é o tempo que leva para o circuito amplificador de áudio do seu dispositivo estar totalmente ligado e atingir seu 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-pop" para estabilizar o circuito.
Este documento descreve como medir o tempo de aquecimento do áudio e possíveis maneiras de diminuir o tempo de aquecimento.
Medir o aquecimento da saída
O thread FastMixer do AudioFlinger mede automaticamente o aquecimento da saída e o relata como parte da saída do comando dumpsys media.audio_flinger
. No aquecimento, FastMixer chama write()
repetidamente até que o tempo entre dois write()
s seja o valor esperado. O FastMixer determina o aquecimento do áudio vendo quanto tempo uma write()
da Camada de Abstração de Hardware (HAL) leva para se estabilizar.
Para medir o aquecimento do áudio, siga estas etapas para o alto-falante integrado e fones de ouvido com fio e em momentos diferentes 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:
- Certifique-se de que FastMixer esteja ativado.
- Ative sons de toque selecionando Configurações > Som > Sons de toque no dispositivo.
- Certifique-se de que o áudio esteja desligado por pelo menos três segundos. Cinco segundos ou mais é melhor, porque o próprio hardware pode ter sua própria lógica de energia além dos três segundos que o AudioFlinger possui.
- Pressione Home e você deverá ouvir um clique.
- Execute o seguinte comando para receber o aquecimento medido:
adb shell dumpsys media.audio_flinger | grep measuredWarmup
Você deverá ver uma saída como esta:
sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
O
measuredWarmup=X
é o número X de milissegundos que o primeiro conjunto de HALwrite()
s levou para ser concluído.warmupCycles=X
é quantas solicitações de gravação HAL foram necessárias até que o tempo de execução dewrite()
correspondesse ao esperado. - Faça cinco medições e registre todas elas, bem como a média. Se não forem todos aproximadamente iguais, é provável que a medição esteja incorreta. Por exemplo, se você não esperar o tempo suficiente depois que o áudio for desligado, você verá um tempo de aquecimento inferior ao valor médio.
Medir o aquecimento de entrada
Atualmente não existem ferramentas fornecidas 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 o retorno de startRecording() .
Reduza o tempo de aquecimento
O tempo de aquecimento geralmente pode ser reduzido por uma combinação de:
- Bom projeto de circuito
- Atrasos de tempo precisos no driver de dispositivo do kernel
- Executar 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 ociosa)
- Armazenando parâmetros computados em cache
No entanto, cuidado com a otimização excessiva. Você pode achar que precisa equilibrar o baixo tempo de aquecimento e a falta de estalos nas transições de energia.