Latência de áudio para desenvolvedores de aplicativos

Para a menor latência de áudio possível, recomendamos que você use o áudio nativo do Android baseado no OpenSL ES 1.0.1.

Lista de verificação de implementação

Para usar o áudio nativo do Android:

  1. Baixe e instale o Android NDK . No restante deste documento, vamos supor que NDKroot é o diretório onde você instalou o NDK.
  2. Leia a documentação de apoio.
  3. Verifique o nível de API 9 ou superior.
  4. Verifique o recurso android.hardware.audio.low_latency.
  5. Use o tamanho de buffer nativo recomendado e a taxa de amostragem retornada por android.media.AudioManager.getProperty(java.lang.String)

    Nota : o mesmo tamanho de buffer e taxa de amostragem também devem ser usados ​​para entrada.

  6. Normalmente, uma contagem de buffer do OpenSL ES de 1 é suficiente.
  7. Mantenha seus manipuladores de retorno de chamada curtos, sem uso intermitente da CPU ou bloqueio ilimitado. Evite a inversão de prioridade.
  8. Considere o uso de algoritmos sem bloqueio para se comunicar entre os manipuladores de retorno de chamada de entrada e saída e entre os manipuladores de retorno de chamada e o restante do aplicativo.

Documentação de suporte

OpenSL ES 1.0.1

Use um visualizador de PDF para revisar a Especificação OpenSL 1.0.1. Esta é uma referência bastante longa, e nem tudo será relevante para você; mas você precisará consultá-lo para obter detalhes sobre a API.

Observação : este documento descreve o OpenSL ES 1.0.1 completo, mas o áudio nativo do Android é baseado em um subconjunto do OpenSL ES 1.0.1 com algumas extensões específicas do Android.

Documentos que descrevem versões posteriores do OpenSL ES, como 1.1, não são relevantes para o Android.

OpenSL ES para Android

O documento "OpenSL ES para Android" é fornecido na instalação do NDK e não está disponível online no momento. Abra este link em um navegador:

NDKroot/docs/Additional_library_docs/opensles/index.html

Você desejará percorrer todo o documento, mas preste atenção especial à subseção "Desempenho" da seção "Notas de programação".

A seção "Recursos suportados do OpenSL ES 1.0.1" descreve o subconjunto suportado pelo Android.

A seção "Extensões do Android" descreve as extensões específicas do Android que não estão incluídas no OpenSL ES 1.0.1 básico.

Relacionamento com OpenSL ES 1.0.1

Este diagrama de Venn mostra a relação entre o áudio nativo do Android e o OpenSL ES 1.0.1.

Diagrama de Venn

Figura 1. Diagrama de Venn

Outros recursos

source.android.com

O site source.android.com foi desenvolvido principalmente para OEMs que criam dispositivos Android e fornecedores de SoC que fornecem componentes para esses OEMs.

No entanto, há muitas informações úteis sobre latência neste site, portanto, você pode revisá-lo. Veja os artigos em Latência de áudio.

android-ndk

Se você tiver dúvidas sobre como usar o áudio nativo do Android, pergunte no grupo de discussão android-ndk.

Vídeos

Áudio de alto desempenho no Android (Google I/O 2013)
Todo o vídeo é sobre latência.
Criando ótimas experiências multimídia no Android (Google I/O 2014)
Os primeiros 14 minutos são sobre áudio em geral e latência de entrada em particular.
Latência de áudio: tamanhos de buffer (100 dias de Google Dev)
Descreve a relação entre latência de áudio, tamanhos de buffer e agendamento de tarefas.