Aquecimento de áudio

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:

  1. Certifique-se de que FastMixer esteja ativado.
  2. Ative 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 possui.
  4. Pressione Home e você deverá ouvir um clique.
  5. 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 HAL write() 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 de write() correspondesse ao esperado.

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