Introduction Audio Android Automotive [email protected] Tieto, PDS BU Automotive & Smart Devices Engineer Software Senior Bartosz Bialek

Public Table of contents Public

• Android Automotive Architecture • Audio Framework • Android sounds and streams • Multi-Zone Audio • Audio Signal Arbitration • Audio HAL interfaces

2 © Tieto Corporation Architecture overview Audio Framework

Public Android Automotive Architecture Public

Applications

Android Framework API Car API

Android System Services Car Services

HAL Automotive HAL

Linux Kernel

4 © Tieto Corporation Audio Framework Public

Application

Car Audio Audio Effect Audio Track Audio Manager Manager Car Audio Audio Service Service

Audio Track Audio Effect Audio System

Audio Policy Effects Factory Audio Flinger Manager

Audio Control Audio HAL HAL

TinyALSA

ASoC / Drivers

5 © Tieto Corporation Android sounds and streams (1/2) Public

Music Player Voice Navigation Calendar

Audio sources

Audio Flinger

Mixer 0 Mixer 1 Mixer 2 Audio contexts Audio devices MUSIC Bus 0 Bus 1 Bus 2 NAVIGATION VOICE_COMMAND Audio HAL CALL_RING Chime Unit CALL External Mixer ALARM Tuner NOTIFICATION Car Amplifier(s) SYSTEM_SOUND

6 © Tieto Corporation Android sounds and streams (2/2) Public

Android 10: New player Radio Navigation

HwAudioSource

Audio Flinger

Tuner Mixer 0 Mixer 1

Tuner Bus 0 Bus 1

Audio HAL

Tuner External Mixer

Car Amplifier(s)

7 © Tieto Corporation Multi-Zone Audio () Public

Primary zone • Application can be played in zone Media Player Media playback • Zone contains audio devices Nav playback Navigation • Zones have separate volume • Zone can be requested by app • No app auto-assignment to zone Media Player Secondary zone based on display yet Media playback Notification • HW volume keys controls primary Notify playback zone only

8 © Tieto Corporation Audio Signal Arbitration (1/2) Public

• Pre-Android 10: AudioFocus • Not enforced

• Android 10: CarAudioFocus • Internal interaction matrix (currently fixed) • Supports multi-zone audio (maintains focus per zone)

9 © Tieto Corporation Audio Signal Arbitration (2/2) Public

Music Nav Voice Ring Call Alarm Notifica System tion CarAudioFocus Music ECEEEECE interaction matrix Nav CCECECCC

• Row selected by playing sound Voice CRCEERRR (labels along the right) • Column selected by incoming request (labels along the top) Ring RCCCCRRC

Context RCRCCCCR R – reject Alarm CCEEECCC E – exclusive Notificati CCEEECCC – concurrent on System CCEEECCC

10 © Tieto Corporation Audio HAL interfaces Public

• HAL interface: hardware/libhardware/include/ hardware/audio.h • HIDL interface: hardware/interfaces/audio/

11 © Tieto Corporation Audio HIDL Public

• IDevice – represents Audio HW module (e.g. primary, USB, A2DP); • IDevicesFactory – connect to one of the Audio HW modules; • IPrimaryDevice – interface for primary Audio HW module, extends IDevice; • IStream – controls audio streams; • IStreamIn – specialization for input streams; • IStreamOut – specialization for output streams; • IAudioControl - interacts with the car's audio subsystem to manage audio sources and volumes.

12 © Tieto Corporation Audio Effects HIDL Public

Control effect lifecycle: Effect specializations (defined by ): • IAcousticEchoCancelerEffect • IEffectsFactory • IAutomaticGainControlEffect • IBassBoostEffect Generic effect interface: • IDownmixEffect • IEffect • IEffectBufferProviderCallback • IEnvironmentalReverbEffect • IEqualizerEffect • ILoudnessEnhancerEffect • INoiseSuppressionEffect • IPresetReverbEffect • IVirtualizerEffect • IVisualizerEffect

13 © Tieto Corporation Configuration challenge Public

Configurable: • attached audio output/input devices, • audio effects, Related : • audio codecs configuration, • audio_policy_configuration. (bus address definition), • audio hardware paths, • AudioControl.cpp (sContextToBusMap), • audio features (CDD), • car_volume_groups.xml (mapping of buses to volume groups), • default sounds. • config.xml (audioUseDynamicRouting), • audio_effects.[xml|conf], Methods: • media_profiles_*.xml, • global settings (for all processes), • media_codecs_*.xml, • user / profile settings, • other. • car variant specific, • static vs dynamic.

14 © Tieto Corporation [email protected] Tieto, PDS BU Automotive & Smart Devices Engineer Software Senior Bartosz Bialek

Public