Android音频系统之音频基础

第1章  音频系统

转载请注明:LXS, http://blog.csdn.net/uiop78uiop78/article/details/8787779


对于一部嵌入式设备来说,除了若干基础功能外(比如手机通话、短信),最重要的可能就是多媒体了——那么一个最简单的问题,什么是多媒体呢?

这个术语对应的英文单词是“Multi-Media”,直译过来就是多媒体。名称就很好地解释了它的含义,我们引用Wikipedia上对其的详细定义:

Multimedia is media and content that uses a combination of differentcontent forms. This contrasts with media that use only rudimentary computerdisplays such as text-only or traditional forms of printed or hand-producedmaterial. Multimedia includes a combination of text, audio, still images,animation, video, or interactivity content forms.

换句话说,多媒体是各种形式的媒体(比如文本、音频、视频、图片、动画等等)的组合。可以说,它是一款产品能否在众多“同质化”严重的市场上脱颖而出的关键。另外,由于不同的产品在音频处理、视频解码等芯片方面或多或少都存在差异,原生态的Android系统不可能覆盖市面上的所有硬件方案,所以这部分功能的移植与二次开发就成了设备研发中的重头戏——当然,Android系统在设计之初就充分考虑到了这点,它提供了一整套灵活的多媒体解决方案,以应对厂商的定制化需求。

对于应用开发人员来说,最熟悉最常用的就是MediaPlayer和MediaRecorder,而深藏在这两个类之间的实现细节却鲜有人知。这也是Android的一大优点——高度封装,让各类开发人员可以把精力放在自己“需要做的事情上”,各司其职,细化分工,从而极大的提高了产品的开发效率。

不过,这种封装也同时带来了一些代价。比如系统异常庞大,各种类定义、C++库、Java封装等等让人目不暇接,这给我们剖析多媒体系统带来了不少障碍。为此,我们特别选取其中的音频实现(其中大部分又以音频回放为主),通过有重点、深入的分析音频系统的实现,来为大家学习Android多媒体系统打开一个缺口。

本章的内容编排是由下而上的,即从最底层的基础知识、框架实现讲起,再逐步扩展延伸到上层应用

·        音频的基础知识

理解音频的一些基础知识,对于我们分析整个音频系统是大有裨益的。它可以让我们从实现的层面去思考,音频系统的目的是什么,然后才是怎么样去完成这个目的

·        AudioFlinger、AudioPolicyService和AudioTrack/AudioRecorder

抛开MediaPlayer、MediaRecorder这些与应用开发直接关联的部分,整个音频系统的核心就是由这三者构建而成的。其中前两个都是System Service,驻留在mediaserver进程中,不断地处理AudioTrack/AudioRecorder的请求。音频的回放和录制从大的流程上看都是相似的,所以我们侧重于对AudioTrack的分析

·        音频的数据流

数据流处理是音频系统管理的一大重点和难点,至少有如下几点是需要充分考虑的:

Ø 如何决定音频流的路径

通常一台设备会有多种音频设备,而且同一时间内系统也很可能会播放多种音频,我们需要将这些音频流与对应的设备建立关联,并做好全局管理

Ø 如何保证音频流以有效的速度传输到音频设备

显然,数据太快或者太慢都会是缺陷

Ø 跨进程的数据传递

举个例子,从Apk应用程序创建一个MediaPlayer,到音频真正从设备中回放出来,这个过程涉及到多个进程间的通信,如何在这些进程间做好数据传递,也是我们所关心的

·    

  • 26
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值