2 概览
音频处理库包含一组音频处理模块,开发者可以根据需要选用其中的模块,以获得高品质的音频体验。本音频处理库是免费附送的,以预编译库的形式提供。
本音频处理库只能运行于以下芯片:
- ING916XX
2.1 模块设计原则
为了适配资源紧张的嵌入式系统,本音频处理库在设计时遵循下列原则。
内存管理
音频处理往往涉及较大量的数据处理,需要较多的内存。考虑到嵌入式系统的特点,内存由开发者负责分配, 库内的模块可以完全不使用堆(
malloc
/free
),而且不会从栈上分配大块内存。各模块采用面向对象式的接口,需要销毁对象时,直接释放为对象分配的内存即可,无需其它操作, 因此皆未提供专门的销毁接口。
线程安全性
如无特殊说明,一个模块的多个实例可以并发执行。
一个实例只能在一个线程内使用。如果需要在多个线程中操作某一个实例,必须使用同步机制,避免对同一个实例的并发操作。
2.2 依赖关系
音频处理库依赖于 CMSIS-DSP1 v1.15.0 及以上。以 Keil μVision 为例, 打开 “Manage Run-time Environment”,将 CMSIS-DSP 添加到项目。
音频库支持多种编译器。每种编译器提供两种版本,一为开启硬件单精度浮点运算,库文件带有 _f
后缀;一为不开启硬件单精度浮点运算,库文件不带有 _f
后缀。
ING916XX
开启硬件单精度浮点运算时,GCC 版本使用的编译选项为:
-mthumb -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
不开启硬件单精度浮点运算时,GCC 版本使用的编译选项为:
-mthumb -mcpu=cortex-m4
2.3 缩略语及术语
缩略语 | 说明 |
---|---|
ADC | 模数转换器(Analog-to-Digital Converter) |
ADPCM | 自适应脉冲编码调制(ADaptive Pulse Coded Modulation) |
AMR-WB | 自适应多速率-宽带(Adaptive Multi-Rate WideBand) |
CMSIS | 微控制器软件接口标准(Common Microcontroller Software Interface Standard) |
mSBC | 改良低复杂度子带编解码器(modified low complexity SubBand Codec) |
PCM | 脉冲编码调制(Pulse Coded Modulation) |
SBC | 低复杂度子带编解码器(low complexity SubBand Codec) |
TTS | 文本转语音(Text-To-Speech) |
术语 | 说明 |
---|---|
Opus | 一个完全开放、免版税、用途广泛的音频编解码器 |