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 dewrite()
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 dewrite()
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.
Medir o aquecimento da entrada
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.