0. 专用术语

1. 物理结构

2. 系统架构


本文基于Freescale IMX平台Codec ALC5625为例。

0. 专用术语

ASLA - Advanced Sound Linux Architecture

OSS - 以前的Linux音频体系结构,被ASLA取代并兼容

Codec - Coder/Decoder

I2S/PCM/AC97 - Codec与CPU间音频的通信协议/接口/总线

 DAI - Digital Audio Interface 其实就是I2S/PCM/AC97

DAC - Digit to Analog Conversion

ADC - Analog to Digit Conversion

DSP - Digital Signal Processor

Mixer - 混音器,将来自不同通道的几种音频模拟信号混合成一种模拟信号

Mute - 消音,屏蔽信号通道

PCM - Pulse Code Modulation 一种从音频模拟信号转换成数字信号的技术,区别于PCM音频通信协议

采样频率 - ADC的频率,每秒采样的次数,典型值如44.1KHZ

量化精度 - 比如24bit,就是将音频模拟信号按照2的24次方进行等分

SSI - Serial Sound Interface

DAPM - Dynamic Audio Power Management

1. 物理结构

音频编解码器Codec 负责处理音频信息,包括ADC,DAC,Mixer,DSP,输入输出以及音量控制等所有与音频相关的功能。

Codec与处理器之间通过I2C总线 和 数字音频接口DAI(IIS)进行通信。

I2C总线 - cpu通过它 实现对Codec寄存器数据的读写。

DAI(IIS) - 实现音频数据在CPU和Codec间的通信。

以Codec作为研究对象,它的输入有Mic(Microphone),PhoneIn电话信号等,输出有耳机HP(HeadPhone),扬声器Speaker和PhoneOut电话信号。另外需要注意在Codec与CPU端间也有音频数字信号的输入输出。

1) 播放音乐

2) 录音

3) 电话

--- 打电话 ---                                                           --- 接听---

  

4) 通过蓝牙打电话

--- 打电话 ---                                                           --- 接听---

 

2. 系统架构

Android的音频系统拥有一个比较标准和健全的架构,从上层应用,Java framework服务AudioMananger,本地服务AudioFlinger,抽象层AlsaHAL,本地库,再调用external的Alsa-lib外部支持库,最后到底层驱动的codec,可谓"五脏俱全"。

以系统启动AuidoFlinger为例,简要窥探Alsa Sound的组织架构。

Java服务AudioManager作为服务端,本地服务AudioFlinger作为客户端,两者通过Binder机制交互。AudioFlinger对硬件功能的具体实现(比如setMode设置电话/蓝牙/录音等模式)交给硬件抽象层AlsaHAL完成。抽象层可以调用本地标准接口,比如mASLADevice->route,或者直接调用Alsa-lib库去操作底层驱动。

Linux的音频驱动结构相对复杂,源码位于内核目录下的/sound/soc/,其中/codec文件夹下存放与平台无关的编解码器驱动,/imx文件夹下存放于freescale imx平台相关的音频驱动,主要可分为SSI驱动和DAI驱动。

以声卡驱动的数据结构为切入点分析,

1) struct snd_soc_codec - 由与平台无关的codec驱动实现。

2) struct snd_soc_platform - 由与imx平台相关的DAI驱动实现,主要实现了音频数据的DMA传输功能。

3) struct snd_soc_dai_link - 将平台相关的DAI与平台无关的codec联系起来。

android 音频系统/声卡驱动 codec相关推荐

  1. Android 音频系统:从 AudioTrack 到 AudioFlinger(全)

    Android 音频框架概述 Audio 是整个 Android 平台非常重要的一个组成部分,负责音频数据的采集和输出.音频流的控制.音频设备的管理.音量调节等,主要包括如下部分: Audio App ...

  2. Android音频系统的改进设想和展望 PulseAudio介绍

    http://www.soomal.com/doc/10100002871.htm 在这里先说明,本人并没有仔细地去看Android和PulseAudio的音频具体源代码和实现,欢迎指正. 从硬件用料 ...

  3. 深度剖析 Android音频系统解析与改进

    导读:Android是用了一个Google自己开发的中间层API来让APP和声音驱动(ALSA或者HAL封闭驱动)通信的.在早期,它是个ALSA的插件:现在则命名为AudioFlinger.但是安卓音 ...

  4. android音频系统之AudioTrack的使用

    今天,简单讲讲  AudioTrack的使用. 1.Android AudioTrack简介 在android中播放声音可以用MediaPlayer和AudioTrack两种方案的,但是两种方案是 ...

  5. android音频系统(4):AudioService之音量管理

    前言:AudioService这个系统服务包含或者使用了几乎所有与音频有关的内容,AudioService是音频系统在java层的大本营: android音频系统,分为两个部分:数据流和策略: 数据流 ...

  6. Android音频系统之四AudioPolicy

    4.1 AudioPolicy的诞生 AudioPolicyService是Android音频系统的两大服务之一,另一个服务是AudioFlinger,这两大服务都在系统启动时有MediaSever加 ...

  7. android下调试声卡驱动之概述

    在Android中音频系统使用的是ALSA系统架构.ASoC--ALSA System on Chip .是建立在标准ALSA驱动层上,为了更好地支持 嵌入式处理器和移动设备中的音频Codec的一套软 ...

  8. android音量加减驱动,android下调试声卡驱动之概述

    在Android中音频系统使用的是ALSA系统架构.ASoC--ALSA System on Chip .是建立在标准ALSA驱动层上,为了更好地支持 嵌入式处理器和移动设备中的音频Codec的一套软 ...

  9. Android音频系统扫盲

    原址 0. 专用术语 1. 物理结构 2. 系统架构 本文基于Freescale IMX平台Codec ALC5625为例. 0. 专用术语 ASLA - Advanced Sound Linux A ...

  10. android 4.0 电话录音,ANDROID音频系统散记之四:4.0音频系统HAL初探

    昨天(2011-11-15)发布了Android4.0的源码,今天download下来,开始挺进4.0时代.简单看了一下,发现音频系统方面与2.3的有较多地方不同,下面逐一描述. 一.代码模块位置 1 ...

最新文章

  1. 【青少年编程】【一级】小狗散步
  2. 【C# 复习总结】类、继承和接口
  3. SQL server与Oracle触发器的创建与使用
  4. python pandas加速包
  5. 从应用开发角度认识 K8s
  6. 19.函数的使用.rs
  7. 扩展系统功能——装饰模式
  8. java过滤器如何操作数据库_jsp – 使用Java中的过滤器验证用户名,密码(与数据库联系)...
  9. vant在cell中加表格_Vant Cell 单元格
  10. MyBatis基础入门--知识点总结
  11. [转]Python中RE模块的应用
  12. SM4算法详解(2021-12-8)
  13. 标准粒子群优化算法 PSO
  14. kindle资源网址
  15. 小米2S稳定版 教你如何一键ROOT
  16. 使用表格制作流量查询表
  17. 关于echarts中饼图设置颜色的方法
  18. 公众号采集,公众号批量自动采集,微信公众号免费文章采集
  19. 禁止迅雷极速版强制升级方法
  20. Jenkins基础:Jenkinsfile使用实例:12:使用docker.build构建镜像

热门文章

  1. 注册免费许可证试用 PowerApps
  2. [无忧网络验证]代理使用教程
  3. ARKit之路-射线检测
  4. python合并单元格的快捷键是什么_【答疑】wps word表格如何合并单元格,快捷键是什么? - 羽兔网问答...
  5. python-docx文档
  6. C# BitConverterExt 对BitConverter的GetBytes 方法扩展
  7. mxnet:Optimizer rescale_grad
  8. 关于28379D的X-BAR
  9. Win 开机自动启动 WSL 服务
  10. APP消息推送-个推java端实现