Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Android Audio System
Search
Sam Huang
August 31, 2020
Programming
1
360
Android Audio System
Sam Huang
August 31, 2020
Tweet
Share
More Decks by Sam Huang
See All by Sam Huang
從開發走向管理及規劃 — 工程師的自我修養
sailplanetw
0
110
軟體的成本預估與時程規劃
sailplanetw
0
110
全方位技術整合:專業開發能力成就完善的智能平台
sailplanetw
0
150
從案例看製造業如何做數位轉型
sailplanetw
0
98
案例分享:台塑生醫實驗用藥追蹤系統
sailplanetw
0
110
[MOPCON 2022 Keynote] 從 IoT 到 Web2,從 Web2 到 Web3:那些開發路上的奇妙風景
sailplanetw
0
460
Offline x Online:HiPrint Smart Printing E-Commerce System
sailplanetw
0
210
從 APP 到雲端:物聯網產品的軟體設計該如何規劃
sailplanetw
0
320
感官文化印刷的全通路品牌營運策略
sailplanetw
0
250
Other Decks in Programming
See All in Programming
今話題のMCPサーバーをFastAPIでサッと作ってみた
yuukis
0
130
VitestのIn-Source Testingが便利
taro28
9
2.5k
Rubyの!メソッドをちゃんと理解する
alstrocrack
1
310
“技術カンファレンスで何か変わる?” ──RubyKaigi後の自分とチームを振り返る
ssagara00
0
120
読書シェア会 vol.4 『ダイナミックリチーミング 第2版』
kotaro666
0
110
Jakarta EE Meets AI
ivargrimstad
0
930
Cursorを活用したAIプログラミングについて 入門
rect
0
220
Designing Your Organization's Test Pyramid ( #scrumniigata )
teyamagu
PRO
5
1.5k
VibeCoding時代のエンジニアリング
daisuketakeda
0
210
Instrumentsを使用した アプリのパフォーマンス向上方法
hinakko
0
250
個人開発の学生アプリが企業譲渡されるまで
akidon0000
2
1.2k
JAWS DAYS 2025 re_Cheers: WEB
komakichi
0
120
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
Speed Design
sergeychernyshev
29
940
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
105
19k
Optimizing for Happiness
mojombo
378
70k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
5
570
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
21k
GitHub's CSS Performance
jonrohan
1031
460k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
120
52k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
179
53k
Being A Developer After 40
akosma
91
590k
Transcript
Android Audio System Introduction
Outline • Background • Android Audio System • Audio Framework
• Audio HAL 2
Background 3
Background • Information about this slide • Software • Android
4.0/4.2 4
Android Audio System 5
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
Architecture Audio System 7 Linux Driver Audio HAL Android Framework
Java App
Android Audio System 8 app AudioTrack/AudioRecord/… (AudioPolicy/AudioFlinger/…) Audio HAL (open/read/write/…)
Audio Driver control flow data flow p c m d a t a Audio Policy Audio Flinger
Audio Framework 9
Audio Framework 10 router receiver 1 sender 1 Network Packet
Routing sender 2 sender 3 sender 4 receiver 2 receiver 3 Routing path
Audio Framework 11 Audio Policy Hardware 1 AudioTrack 1 Audio
Routing (play audio) Hardware 2 Hardware 3 Audio Flinger AudioTrack 2 AudioTrack 3 AudioTrack 4 Java App Audio Framework Audio HAL
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
Audio Policy 13
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
Audio Policy 15
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
Audio HAL 17
Audio HAL Platform Group 18 app AudioTrack/AudioRecord/… (AudioPolicy/AudioFlinger/…) Audio HAL
(open/read/write/…) Audio Driver
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