Android Audio架构全分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ASoc 主要由 3 部分组成: (1)、Codec驱动:这部分只进行 Codec 相关的操作。 (2)、平台驱动:这部分只进行 CPU 端的操作,它主要处理两个问题: DMA 引擎和 Soc 集成的 PCM、I2S或AC97数字接口控制。 (3)、板驱动:这部分将平台驱动和 Codec 驱动绑定在一起,描述了 板一级的硬件特性。 对于目前的嵌入式系统,一般采用 ASoc 框架,这样能使驱动具有更 好的移植性。
3.3、ALSA驱动分析
ALSA框架初始化过程:
第P1a2g页e ▪/共1222页
3.3、ASoc驱动简介
ASoc(ALSA System On Chip)是 ALSA 在 Soc 方面的发展和演变, 它本质上仍然属于 ALSA ,但是在 ALSA 架构基础上对 CPU 相关的代码 和 Codec 相关的代码进行了分离。
第P1a6g页e ▪/共1622页
3.3、s5pc1xx-ac97.c分 析
s5pc1xx-ac97.c 对外提供了两个接口,分别为:s3c6400_ac97_dai 和 soc_ac97_ops, S3c6400_ac97_dai 主要对上层提供操作接口;soc_ac97_ops 提供了对 S5PC100 中的 AC97 控制器操作的方法,这些方法会被 wm9713.c 中相应的函数调用,从而实现对 wm9713 进行操 作。
第P1a3g页e ▪/共1322页
3.3、ASoc驱动分析
ASoc驱动源码:
soc-core.c:ASoc 驱动核心 s5pc1xx-ac97.c:平台驱动 wm9713.c:Codec驱动 smdkc100_wm9713.c:板驱动
wm9713同时提供了PCM、I2S 和 AC97三种控制接口,从 smdkc100电路图可以知道S5PC100与wm9713通过 AC97 控制 接口相连,因此此处选用的平台驱动是:s5pc1xx-ac97.c。
第Pa5g页e /▪共522页
3.1、Hardware
Android 2.1 自带 Audio Hardware :
用于实现将PCM流 输出到文件,可以 用来测试音频解码 是否正确。
实现基于特定驱 动(eac)的通用 Audio硬件抽象层
实现一个虚拟的Audio硬件抽象层, 这个实现不操作实际的硬件和文件, 它所进行的是空操作,在系统没有实 际的Audio设备时使用这个实现可以 保证系统的正常运行。
第Pa8g页e /▪共822页
3.1、Hardware
Android 2.1 Audio Hardware(ALSA) 分析:
第Pa9g页e /▪共922页
3.2、Alsa lib
alsa-lib运行在用户 空间,他对alsa-driver进 行封装,应用程序只要调 用alsa-lib提供的API,即 可以完成对底层音频硬件 的控制。ALSA lib 编译后 会生成 libasound.so,该 库会被 AudioFlinger 动 态链接,除此之外,编译 后还会生成 alsa lib 配 置文件。
Hardware
第Pa4g页e /▪共422页
2.2、Android 2.1 o 框架分析
用户空间 内核空间
ALSA lib ALSA 框架
ASoc 驱动
ALSA lib 用于对底层驱动进行封装,以方便应用程序的编写;ALSA 框架对底层驱动进行封装,然后对应用程序提供一个统一的接口;ASoc 驱动是基于 ALSA 框架的驱动,它的主要思想是将板级相关的代码和芯片 相关的代码分离,以提供驱动程序的移植性。
第Pa6g页e /▪共622页
3.1、Hardware
Android 2.1 基于 ALSA 的 Audio Hardware 层:
基于ALSA驱动的 Android Audio Hardware层。
第Pa7g页e /▪共722页
3.1、Hardware
Android 2.1 Audio Hardware 配置:
第P1a4g页e ▪/共1422页
3.3、ASoc驱动分析
ASoc框架:
ALSA
Platfor m
soccore.c
smdkc100 _wm9713.
c
s5pc1xx -ac97.c
soc_ac97_ops
wm9713. c
第P1a5g页e ▪/共1522页
3.3、硬件分析
S5PC100
AC97 Controler
第P1a0g页e ▪/共1022页
3.3、ALSA驱动分析
ALSA框架的逻辑结构:
snd_card 是整个 ALSA 框架的入口,ALSA框架在初始化时会首 先创建一个 snd_card ,然后在其下创建多个设备(至少应包含一个 PCM设备和一个Control设备,分别用于声音的录放和控制。)
第Pa11g页e ▪/共1122页
多媒体应用向来是3C电子产品中的一个永恒话题,作为 一个智能操作系统,Android自然少不了多媒体应用,正是在 这种背景下,本项目分析Android Audio的基本框架以及底层 驱动的实现。
第Pa2g页e /▪共222页
1.1、项目平台和功能
平台: ▪ 硬件平台:smdkc100、WM9714 ▪ 软件平台:Android 2.1、Linux kernel 2.6.29、alsa-
lib 1.0.19、alsa-utils 1.0.19 功能: ▪ 使用 Music App 播放音频文件 ▪ 使用 SoundRecorder App进行录音
第Pa3g页e /▪共322页
2.1、Android 2.1 Audio 框架分析
Music
PacketVideo Open Core Platform
主要内容:
项目背景 项目平台及Android Audio整体框架 Android Audio Hardware 和驱动详细分析
第Pa1g页e /▪共122页
1、项目背景
Android系统迅速崛起,其市场占有率已经超越iOS和 Symbian成为第一大智能设备操作系统。作为一个开源的系统 ,Android被越来越多的硬件厂家所支持,使得Android被大量 应用在智能手机和平板电脑。
相关文档
最新文档