昨天从整体上介绍了一下音频处悝流程让大家对音频处理有个大致的概念,以便进行深入的研究
整个音频处理可以分为三个部分:
用户空间Mplayerservice 它是一个独立的服务进程,其主要作用有;
- 首先是充当一个抽象层隔离下层的软件和硬件平台,让应用程序不受下层变化的影响比如以前我们用mplayer,现在改为用gstreamer上层应用程序不需要做任何修改。
- 其次是负责播放任务的调度上层有很多个应用程序要播放声音,像SMS,MMS,EMAIL,电话,媒体播放器和GUI等等它们之間如何协调,这是很重要的
- 最后它在MVC模型中充当模型的作用,播放状态可以由此转发给关心这些事件的应用程序
Gstreamer 它是Mplayerservice的实现,其主要負责音视频的编解码对此不太熟悉,而且已经有很多资料介绍这里就不多说了。
ALSA lib 现在播放声音用的ALSA而不是OSS了,ALSA内核提供的接口比较底层ALSA lib把它们包装成易用的接口函数。
内核空间ALSA接口:通过/dev/snd下的设备文件与用户空间进行交互对于声音数据,它提供了两种交互方式┅种是基于文件IO的读写方式,播放时向里面写数据录音时从里面读数据。另外一种是基于内存映射的方式通过mmap把DMA内存映射到用户空间,直接从里面读写数据
ALSA core:这块是比较复杂的,它主要的功能是抽取各种不同驱动的公共代码;为上层提供统一的接口;为下层提供一个框架不过我们主要关心的是PCM数据的播放和读写,以及对硬件的控制
ALSA driver:这一部分就是实际的驱动程序,包括与上面对应的PCM和Control两部分
硬件音频芯片我们用的是WM9713,它的主要功能其实就是A/D转换和D/A转换播放时把数字信号转换成模拟信号,录音时把模拟信号转换成数字信号因為触摸屏也用到了A/D转换,为了重用这个功能所以WM9713集成了音频处理和触摸屏处理两部分功能。
WM9713支持AC97标准通过64个寄存器对它进行控制,这個在WM9713的datasheet里有详细的描述
WM9713与PXA300之间通过同步串号SSP通信。PXA300在硬件上对AC97有支持它提供了FIFO,所以音频数据可以通过DMA方式读写
希望哪位高手能告知。有时间再研究一下再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人笁智能的队伍中来!