Audio System Architecture
https://source.android.com/devices/audio/index.html
http://www.bobbog.com/wp-content/uploads/2011/11/audio-architecture.jpg
O Android possui uma arquitetura de audio que isola o hardware da camada de aplicação. As classes java usadas para tratamento de audio são apenas uma interface para classes em c++; A partir do Android 4.1 o Android comeceu a ter a latencia, para processamento de audio em tempo real, aceitável de cerca de 10ms 20ms. https://source.android.com/devices/audio/latency_design.html Para se conseguir isso foi necessário uma investigação intesa sobre o sistema de gerenciamento de threads do android. Foi percebido que a latencia ficava muito alto em certos casos, que envolviam o tamanho do buffer utilizado no processamento de recursos de audio, que causava glithces nos audios devido a alta latência. https://www.youtube.com/watch?v=d3kfEeMZ65c Media Server
Serviço de áudio que interage com a camada de abstração de hardware. Nessa camada se faz os processamentos necessários para se enviar recursos de audio dentro dos requisitos necessários ao hadware do dispositivo. Audio Policy Service (/frameworks/av/services/audiopolicy/..) Decide em que thread um recurso de audio deve ser atachado. Instancia threads no AudioFlinger (mixer thread, ressamplimg, output);
AudioFlinger (/frameworks/av/services/audioflinger/AudioFlinger.cpp) Implementação do sound server para Android.
“In a Unix-like operating system, a sound server mixes different data streams and sends out a single unified audio to an output device. The mixing is usually done by software, or by hardware if there is a supported sound card. “ http://www.wikiwand.com/en/Sound_server
Possui diferenstes threads especializadas para lidar com recursos de audio.
MixerThread (/frameworks/av/services/audioflinger/AudioMixer.cpp) Modulo do AudioFlinger resposavel por combinar várias faixas a aplicar volume e alguns efeitos. (Talvez um