Top Banner
Android Audio System Introduction
19

Android Audio System

Jan 15, 2015

Download

Technology

An introduction about android audio system from system development view
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Android Audio System

Android Audio System Introduction

Page 2: Android Audio System

Outline• Background• Android Audio System• Audio Framework• Audio HAL

2

Page 3: Android Audio System

Background

3

Page 4: Android Audio System

Background• Information about this slide

• Software• Android 4.0/4.2

4

Page 5: Android Audio System

Android Audio System

5

Page 6: Android Audio System

Architecture Audio System• The complexity of android audio system

• Soft real-time requirement• Large number of usage scenarios

• Software• phone/media player/…• different volume setting/…

• Hardware• earpiece/speaker/hdmi/…• mic/bluetooth/…

• Flexibility design• good design pattern• performance (Java/JNI/binder/…)

6

Page 7: Android Audio System

Architecture Audio System

7

Linux Driver

Audio HAL

Android Framework

Java App

Page 8: Android Audio System

Android Audio System

8

app

AudioTrack/AudioRecord/…(AudioPolicy/AudioFlinger/…)

Audio HAL(open/read/write/…)

Audio Driver

control flow data flow

pcm data

Audio Policy

Audio Flinger

Page 9: Android Audio System

Audio Framework

9

Page 10: Android Audio System

Audio Framework

10

routerreceiver 1

sender 1

Network Packet Routing

sender 2

sender 3

sender 4

receiver 2

receiver 3

Routing path

Page 11: Android Audio System

Audio Framework

11

Audio Policy Hardware 1

AudioTrack 1

Audio Routing (play audio)

Hardware 2

Hardware 3

Audio FlingerAudioTrack 2

AudioTrack 3

AudioTrack 4

Java App Audio FrameworkAudio HAL

Page 12: Android Audio System

Audio Policy• Decide which thread in AudioFlinger should sound be

attached.• stream strategy output

• stream : VOICE_CALL, TTS, MUSIC, …• strategy : PHONE, MUSIC, …• output : a thread in AudioFlinger

• strategy : bridge between software data stream and hardware

12

Page 13: Android Audio System

Audio Policy

13

Page 14: Android Audio System

Audio Policy• IOProfile (audio_policy.conf)

• Content• Define all the possible I/O devices• Define default I/O device

• Hierarchical structure• hardware module• profile

• sampling_rates/channels/formats/devices/flags

• With IOProfile, audio policy gets better OO structure.

14

Page 15: Android Audio System

Audio Policy

15

Page 16: Android Audio System

Audio Flinger• Several thread to read/write data

• Create thread by AudioPolicy• mixer thread• duplicating thread• direct output thread

• Resampler• Non-blocking audio I/O• AudioWatchdog

16

Page 17: Android Audio System

Audio HAL

17

Page 18: Android Audio System

Audio HAL

Platform Group

18

app

AudioTrack/AudioRecord/…(AudioPolicy/AudioFlinger/…)

Audio HAL(open/read/write/…)

Audio Driver

Page 19: Android Audio System

Audio HAL• ALSA (Advanced Linux Sound Architecture)

• unified interface/SMP/thread-safe/…• usespace library

• alsa-lib• tinyalsa

• tinyplay/tinycap/ tinymix

• Audio HAL interface• volume setting• I/O function• …

19