Aquecimento de áudio

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:

  1. Certifique-se de que o FastMixer esteja ativado.
  2. Ative os sons de toque selecionando Configurações > Som > Sons de toque no dispositivo.
  3. 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.
  4. Pressione Home e você deverá ouvir um som de clique.
  5. 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 HAL write() 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 de write() corresponda ao esperado.

  6. 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.