[Aside: a blog specific to one topic is harder than I thought]
Due to constant shifting responsibilities and a flux of new FAE's into the Linux/Android wireless group here at the office, I have decided (read "been asked") to work on some training presentations. While doing so, I have been going deeper into some sections of code than I have in recent history.
So, what is an AudioFlinger?
An AudioFlinger (sorry google engineers for over simplifying) exists to handle these main responsibilities:
- Provide a single (stereo/mono) output path for PCM at a specified sample rate (OMAP3/4 is using 44.1KHz). I am (also) ignoring the oft-ignored DIRECT_OUT option for simplicity.
- Provide a software mixer for various playback stream types: ringer, notifications, voice-calls, music, touch tones, and key clicks.
- Resample these playback streams as necessary to match the desired output frequency.
- Provide a single input capture path at a determined sample rate.