Soluções alternativas de latência de áudio Android
-
25-09-2019 - |
Pergunta
Portanto, qualquer pessoa que valha seu sal na comunidade de desenvolvimento do Android conhece a edição 3434 relacionada ao áudio de baixa latência no Android. Para aqueles que não o fazem, você pode se educar aqui. http://code.google.com/p/android/issues/detail?id=3434
Estou procurando qualquer tipo de solução temporária para o meu projeto pessoal. Ouvi dizer sobre a exposição de interfaces particulares ao NDK, rolando sua própria construção do Android e modificando o NDK.
Tudo o que preciso é uma maneira de acessar os drivers ALSA de baixo nível que já estão embalados com a compilação 2.2 padrão. Eu gostaria de ter a capacidade de enviar o PCM diretamente para o hardware de áudio no meu dispositivo. Não me importo que o aplicativo resultante não seja distribuível pelo mercado e provavelmente não será executado com nenhum outro dispositivo além do meu.
Alguém tem alguma idéia útil?
-Griff
EDIT: Devo mencionar, sei que o Audiotrack fornece essa funcionalidade, mas eu gostaria de uma latência muito menor-o áudio fica em torno de 300ms, eu gostaria de cerca de 20 a 30 ms.
Solução
Griff, esse é apenas o problema, o NDK não melhorará a questão da latência conhecida (que está documentada). A camada de abstração de hardware no código nativo está atualmente aumentando a latência; portanto, não se trata apenas de acesso aos drivers de baixo nível (btw você não deve confiar nos motoristas da ALSA estarem lá de qualquer maneira).
Outras dicas
Android: API de som (determinística, baixa latência) cobre as compensações muito bem. Tl; dr: ndk oferece um benefício menor porque os threads podem ser executados com maior prioridade, mas esse benefício é pré-jellybean sem sentido porque todo o sistema de áudio está ajustado para Java.
O Galaxy Nexus em execução 4.1 pode ficar bastante próximo de 30ms de latência de saída.