Text
FxOS Audio Playback 101
Alastor Wu	

2015/06/12
OUTLINE
2
Data flow
!
Outputs selection
GECKO
3
mVideoQueue
MDSM
mAudioQueue
AudioSink AudioStream
AudioLoop()
mAudioSink mAudioStream
Write()
mBuffer
AUDIO PLAYBACK OVERVIEW
GONK
4
AudioTrack
Audio
Buffer
MediaServer
AudioFlinger
AudioPolicy
Service
HAL
Audio
Module
AudioPolicy
Module
Linux
Kernel
ALSA/OSS
Custom Driver
AUDIO PLAYBACK OVERVIEW
FXOS
5
AUDIO PLAYBACK OVERVIEW
Gecko
Gonk
MDSM AudioSink AudioStream Lib Cubeb
AudioTrack AudioSystemNative Framework
AudioFlinger
AudioPolicy	

Service
Media Server
AudioHardware AudioPolicyManagerHAL
Linux Kernel
OpenSL NDK
ANDROID
6
AUDIO OUTPUT DEVICES
StreamTypes Strategies Devices
Audio	

Channel 	

Types
Output	

device
Earpiece 	

Speaker	

Wired headset/phone 	

Bluetooth SCO headset/carkit	

Bluetooth A2DP headphone/speaker
…
Media	

Phone	

Sonification	

Sonification respectful	

DTMF	

Enforce audible
Voice call	

System	

Ring	

Music	

Alarm	

Notification	

BT SCO	

Enforce audible	

DTMF	

TTS	

FM
ANDROID
7
AUDIO OUTPUT PROFILES
Inputs
Outputs
IOProfiles
IOProfiles
Sample rates
Channel masks
Formats
Devices
Modules
primary/a2dp/usb
khz
mono/stereo
mp3/aac/…
speaker/headset…
ANDROID
8
AUDIO PLAYBACK FLOW
AudioTrack
AudioSystem
AudioPolicy	

Service
GetOutput() OpenOutput()
Data flow
AudioFlinger
PlaybackThread
mTracks
Audio	

Mixer
AudioHardware
9
END

FxOS Audio Playback 101