androidP audio system (二) ---> 音频框架

1、linux 中的音频框架

1.1、声卡介绍

  众所周知,android 系统是以linux为基准的,那么在介绍android 音频框架之前,稍微带一下linux的音频系统。
  早期的声卡以插件的方式连接到电脑主板上的,并提供了复杂的音频设备,后期随着技术的发展又出现了“集成声卡”,“集成声卡”又分为“软声卡”
和“硬声卡” --- 如果声卡只有解码芯片,没有“主处理”芯片,需要通过cpu运算来执行处理工作,那么就是“软声卡”,反之就是“硬声卡”。

1.2、声卡组成

    一个典型的声卡由三部分组成:
    Connectors:用于声卡与外放设备,如扬声器、耳机的连接等。
     
    Audio Circuits:是、声卡的主体实现,负责信号的放大、混音以及模拟数字信号的转换操作

    Interface: 连接声卡与计算机总线的单元,如PCI总线。

2 音频驱动

 对于一个操作系统来说,如果管理这些音频设备并向上层应用提供统一的接口,这就需要音频驱动

2.1 OSS

 早起Linux采用的版本是OSS框架,但后期因为OSS涉及到4Front Technologisc的版权问题,所以导致支持和升级不是很友好就慢慢的抛弃了它,从而出现了ALSA。

2.2 ALSA

 ALSA 是Linux社区为了取代OSS而提出的一种框架,是一个完全的开源系统,ALSA 相对于OSS提供了更多复杂的API接口,后面
android系统也使用了ALSA,但是由于ALSA太过于庞大,android 对其进行了剪裁,就出现了tinyalsa, 我们可以在android的源码目录下看到,tinyalsa的代码,在external/tinyalsa下:

在这里插入图片描述
在这里插入图片描述

以上介绍基本都是为了引出tinyalsa,下面开始android 音频框架

3、android 音频框架

  良好的软件架构需要降低上层的实现和硬件设备的耦合,下图红色部分为linux的音频架构雏形,而除去audio driver之外,整个android的音频体
系被看成User,其蓝色部分:

在这里插入图片描述

我们现在来逐一说明一下每一部分:
APP:整个音频最上层的音频播放或者录音软件

Freamwork: android为上层音频播放 录音软件提供了操作的接口,方便它们处理业务和逻辑代码,这里提供的Freamwork的类主要有,AudioManager、AudioService、AudioSystem、MediaPlayer、MediaRecorder等。

Libraries:向framework层提供底层库的支持,这部分基本都是c++实现的。

HAL: android hal 提供了统一的接口来定义和AudioFlinger / AudioPolicy service 之间的通信方式。从设计层面来讲,音频的硬件抽象层的 服务对象是AudioFinger。AudioFilnger向下直接和Audio HAL通信,不用接触到audio Driver,向上上层模块只需要和它进行通信就可以实现音频相关的功能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值