Android音频系统之AudioFlinger(四) 分类: ALSA/Audio 2014-06-12 17:37 195人阅读 评论(0) 收藏 举报 1.1.1 AudioMixer每一个MixerThread都有一个唯一对应的AudioMixer(在MixerThread中用mAud...
分类:
移动开发 时间:
2015-01-08 20:10:33
阅读次数:
241
1.1 AudioPolicy Service在AudioFlinger小节,我们反复强调它只是策略的执行者,而AudioPolicyService则是策略的制定者。这种分离方式有效地降低了整个系统的藕合性,而且为各个模块独立扩展功能提供了保障。1.1.1 AudioPolicyService概述汉...
分类:
移动开发 时间:
2015-01-08 20:09:40
阅读次数:
307
1.1 AudioFlinger在上面的框架图中,我们可以看到AudioFlinger(下面简称AF)是整个音频系统的核心与难点。作为Android系统中的音频中枢,它同时也是 一个系统服务,启到承上(为上层提供访问接口)启下(通过HAL来管理音频设备)的作用。只有理解了AudioFlinger,才...
分类:
移动开发 时间:
2015-01-08 20:09:04
阅读次数:
236
1.1.1 音频设备的管理虽然AudioFlinger实体已经成功创建并初始化,但到目前为止它还是一块静态的内存空间,没有涉及到具体的工作。从职能分布上来讲,AudioPolicyService是策略的制定者,比如什么时候打开音频接口设备、某种Stream类型的音频对应什么设备等等。而AudioFl...
分类:
移动开发 时间:
2015-01-08 20:08:11
阅读次数:
254
1.1.1 PlaybackThread的循环主体当一个PlaybackThread进入主循环后(threadLoop),音频事务就正式开启了。仔细观察的话,我们会发现这个循环中会不断地调用以 “threadLoop_”开头的若干接口,比如threadLoop_mix、threadLoop_slee...
分类:
移动开发 时间:
2015-01-08 20:03:52
阅读次数:
253
AudioFlinger(AF)是一个服务,具体的代码在av\media\mediaserver\Main_mediaserver.cpp中: int main(int argc, char** argv)
{ signal(SIGPIPE, SIG_IGN); char value[PROPERT...
分类:
移动开发 时间:
2014-12-26 16:38:10
阅读次数:
294
引子Android Framework的音频子系统中,每一个音频流对应着一个AudioTrack类的一个实例,每个AudioTrack会在创建时注册到 AudioFlinger中,由AudioFlinger把所有的AudioTrack进行混合(Mixer),然后输送到AudioHardware中 进...
分类:
移动开发 时间:
2014-12-10 12:20:40
阅读次数:
286
播放声音可以用MediaPlayer和AudioTrack,两者都提供了java API供应用开发者使用。虽然都可以播放声音,但两者还是有很大的区别的。其中最大的区别是MediaPlayer可以播放多种格式的声音文件,例如MP3,AAC,WAV,OGG,MIDI等。MediaPlayer会在framework层创建对应的音频解码器。而AudioTrack只能播放已经解码的PCM流,如果是文件的话只支持wav格式的音频文件,因为wav格式的音频文件大部分都是PCM流。AudioTrack不创建解码器,所以只能...
分类:
移动开发 时间:
2014-10-11 13:50:55
阅读次数:
488
AudioSystem是AudioPolicyService和AudioFlinger对外提供接口类。...
分类:
移动开发 时间:
2014-10-11 11:20:35
阅读次数:
141
音频基础知识
声音有哪些重要属性呢?
响度(Loudness)
响度就是人类可以感知到的各种声音的大小,也就是音量。响度与声波的振幅有直接关系。
音调(Pitch)
音调与声音的频率有关系,当声音的频率越大时,人耳所感知到的音调就越高,否则就越低。
音色(Quality)
同一种乐器,使用不同的材质来制作,所表现出来的音色效果是不一样的,这是由物体本身的结构特性所决定的。...
分类:
移动开发 时间:
2014-09-24 10:58:17
阅读次数:
266