O aquecimento de áudio é o tempo que leva para o circuito do amplificador de áudio em seu dispositivo ser totalmente alimentado 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 de áudio e possíveis maneiras de diminuir o tempo de aquecimento.
Medindo o aquecimento da saída
O encadeamento FastMixer do AudioFlinger mede automaticamente o aquecimento de saída e o relata 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 de áudio vendo quanto tempo uma 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 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 o FastMixer esteja ativado.
- Ative os 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 tem.
- Pressione Home e você deverá ouvir um som de clique.
- Execute o seguinte comando para receber o aquecimento medido:
adb shell dumpsys media.audio_flinger | grep measuredWarmup
Você deve 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.O
warmupCycles=X
é quantas solicitações de gravação HAL foram necessárias até que o tempo de execução dewrite()
corresponda ao esperado. - Faça cinco medições e registre todas, bem como a média. Se eles não forem todos aproximadamente iguais, é provável que uma medida esteja incorreta. Por exemplo, se você não esperar o suficiente depois que o áudio for desligado, verá um tempo de aquecimento menor do que o valor médio.
Medindo o aquecimento de entrada
No momento, não há ferramentas fornecidas para medir o aquecimento da entrada de áudio. No entanto, o tempo de aquecimento de entrada pode ser estimado observando o tempo necessário para o retorno de startRecording() .
Reduzindo 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
- Executando 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)
- Cache de parâmetros computados
No entanto, cuidado com a otimização excessiva. Você pode achar que precisa negociar entre o baixo tempo de aquecimento versus a falta de popping nas transições de energia.