前面写过一篇文章(Android智能手机上的音频浅析)介绍了安卓智能手机上的音频。今年又做了智能手表的项目。相对智能手机而言,相同的是依旧有AP/ADSP/CP,不同的是不再用安卓系统,同时音频外设只有内置codec上的麦克风和扬声器,以及蓝牙。我负责音频系统的软件架构设计和ADSP上的软件开发。 准备写一系列文章,详细介绍智能手表上的音频,主要包括如下:
1) 架构,包括硬件架构和软件框图,还有应用场景等
2) 音频驱动,包括IPC驱动和codec驱动等
3) 音频文件播放,包括音乐文件播放和录音文件播放等
4) 语音通话
5) 录音,包括普通录音和电话录音
本篇先讲架构和应用场景。
1, 硬件架构
下图是硬件架构的框图。
硬件架构的框图同安卓智能手机上的几乎一样,具体可以去看文章(Android智能手机上的音频浅析)。 不同的是少了一些外设(在手表这种产品形态下就不需要有线耳机和听筒等了),同时把外置codec芯片换成了内置codec,即把codec芯片集成到SOC里面了 。有专门的codec芯片厂商,他们把codec芯片的功能做的比较丰富。内置codec是我们公司自己设计的,功能够用就行,就没那么丰富了。优势是节省成本。
2, 软件框图
下图是软件的框图。
音频软件在AP/ADSP/CP上都有。AP上有play / record / BT host (播放蓝牙音乐时用到) / audio HAL等。ADSP上有 audio driver / 采样率转换(SRC) / music decoder / BT SBC encoder / 混音(mix) / music effect等。Audio driver包括IPC的driver和codec的driver,后面会专门写一篇文章介绍这些。SRC是各种采样率(8k / 16k / 44.1 k /48k等)的转换,以前写过专门的文章,具体见以下文章(音频开源代码中重采样算法的评估与选择 、 基于sinc的音频重采样(一):原理 、 基于sinc的音频重采样(二):实现) 。 music decoder是各种音乐格式的解码器,包括MP3/AAC等。因为要支持蓝牙音乐,需要把PCM数据用SBC编码。混音就是把各个stream 的PCM混在一起。Music effect是各种音效,如EQ等。CP上有voice codec / voice enhancement / IMS等。voice codec包括AMR-NB / AMR-WB等。voice enhancement包括回声消除、噪声抑制等。IMS(IP multimedia subsystem,IP多媒体子系统)主要是语音的网络侧处理。需要说明的是voice codec和voice enhancement 也可以放在ADSP上做,这款产品由于一些原因就放在CP上做了,这样ADSP就显得有些大材小用。
3, 应用场景
应用场景主要如下:
1) 播放音频文件,包括从内置codec的扬声器播放出来和从蓝牙耳机播放出来
2) 播放音频文件时有提示音,同样包括从内置codec的扬声器播放出来和从蓝牙耳机播放出来
3) 语音通话,包括内置codec和蓝牙语音通话
4) 语音通话时有提示音,同样包括内置codec和蓝牙语音通话
5) 录音,包括普通录音和电话录音
因为跟安卓智能手机上的音频软硬件架构很相似,本篇写的相对简单。要想详细了解,可以看我写的关于安卓智能手机音频的那篇文章。本篇主要就是智能手表上音频系列文章的一个序,没有它这个系列显得不怎么完整。从下一篇开始讲具体的, 先讲audio driver。