1 采样率转换
1.1 重新采样
Android 中的采样转化率也称为“重新采样”是每个系统常用的操作和功能。需求和数据源总是有不匹配的地方,比方说录音设置了16K采样率,而HAL层上来的数据默认是32K的,那就需要降采样。
采样率转换是将具有某一采样率的离散样本流更改为具有另一采样率的流的过程。采样率转换器(即重采样器)是执行采样率转换的模块。对于重采样器,原始流称为源信号,而重新采样的流称为设备信号。
在 Android 中有多处需要用到重采样器。例如,MP3 文件可能以 44.1kHz 的采样率编码,但需要在内部支持 48kHz 音频的 Android 设备上进行播放。在这种情况下,会使用重采样器将 MP3 输出音频从 44.1kHz 源采样率升采样到 Android 设备中使用的 48kHz 设备采样率。
重采样器的特性可以使用指标来表示,包括:
信号整体幅度的保存程度
信号频率带宽的保存程度(受设备采样率的限制)
通过重新采样器的整体延迟时间
有关频率的一致相位和群组延迟
计算复杂度(以 CPU 周期或功耗表示)
允许的源采样率和设备采样率的比率
动态更改采样率比率的能力
支持的数字音频采样格式
理想的重采样器具有如下特点:精确保留源信号的幅度和频率带宽(受接收器采样率的限制)、具有最短且一致的延迟时间、计算复杂度极低、允许任意动态转换比率,并且支持所有常见的数字音频采样格式。实际上,理想的重采样器并不存在,因为实际