Aquecimento de áudio

O aquecimento de áudio é o tempo que o circuito do amplificador de áudio do dispositivo leva para vão funcionar e atingir o estado normal de operação. Principais colaboradores ao tempo de aquecimento por áudio são o gerenciamento de energia e qualquer lógica para se estabilizar pelo circuito.

Este documento descreve como medir o tempo de aquecimento de áudio e possíveis maneiras de reduzir tempo de aquecimento.

Medir o aquecimento da saída

A linha de execução do 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, o FastMixer chama write() repetidamente até que o tempo entre dois write()s seja o valor esperado. O FastMixer determina o aquecimento de áudio ao verificar por quanto tempo uma abstração de hardware A camada HAL (HAL) write() usa para se estabilizar.

Para medir o aquecimento de á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 inicializar o dispositivo:

  1. Verifique se o FastMixer está 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 há pelo menos três segundos. Cinco segundos ou mais é melhor, porque o próprio hardware pode ter a própria lógica de energia além dos três segundos do AudioFlinger.
  4. Pressione Home. Você ouvirá um som de clique.
  5. Execute este comando para receber o aquecimento medido:
    adb shell dumpsys media.audio_flinger | grep measuredWarmup
    

    A saída será semelhante a esta:

    sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
    

    O measuredWarmup=X é um número X de milissegundos. o primeiro conjunto de write()s da HAL foi concluído.

    O warmupCycles=X indica quantas solicitações de gravação da HAL foram necessárias. até que o tempo de execução de write() corresponda ao esperado.

  6. Faça cinco medidas e registre todas, bem como a média. Se não forem todos iguais, é provável que a medida esteja incorreta. Por exemplo, se você não esperar tempo suficiente após a desativação do áudio, você verá um tempo de aquecimento menor do que o valor médio.

Medir 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 startRecording() para retornar.

Reduzir o tempo de aquecimento

O tempo de aquecimento geralmente pode ser reduzido por uma combinação de:

  • Bom design de circuito
  • Atrasos precisos no driver de dispositivo do kernel
  • Execução de operações de aquecimento independentes de forma simultânea, não sequencial
  • deixar circuitos ligados ou não reconfigurar relógios (aumenta o consumo de energia inativo);
  • Como armazenar parâmetros calculados em cache

No entanto, tenha cuidado com a otimização excessiva. Talvez você ache que precisam escolher um equilíbrio entre baixo tempo de aquecimento falta de destaque nas transições de poder.