一、Audio框架
APP层:
音乐播放器,视频播放器。
播放器一般使用MediaPlayer,MediaRecorder来进行播放和录音,MediaPlayer可以将音频文件进行解码,得到pcm流,然后使用AudioTrack进行播放。MediaRecorder是类似相反的过程。
framework Java层
AudioTrack —— 播放pcm流
AudioRecorder —— 录音pcm流
AudioManager , AudioSystem, AudioEffect 实现音量控制、音频通路策略、音效设置等
framework Native层
AudioTrack —— 播放pcm流
AudioRecorder —— 录音pam流
AudioEffect —— 音效处理
AudioPolicyService —— 音频策略管理,音量管理,音效设置
AudioFlinger —— 音频播放,录音,混音,音效处理
Hal层:
向上对接AudioFlinger,向下通过读写声卡card0节点,调用kernel驱动控制硬件,实现对音频流数据的播放与录音实现。
ALSA框架
可以参考:ALSA驱动分析
可以参考:tinyalsa工具使用
整体从下到上涉及知识点
硬件电路知识,audio播放录音原理,i2s、TDM协议,codec功能(功放芯片)
linux驱动知识,ALSA框架
c语言,audio Hal层接口功能
c++语言,audio framework如何实现音频流的播放与采集,音频通路的策略管理,音效处理,音量调节等
binder机制在audio系统中的作用
java语言,AudioTrack与AudioRecorder如何使用去播放,录音。AudioManager , AudioSystem, AudioEffect 如何实现音量控制、音频通路策略控制、音效设置、参数传递等