5. 编码接口
各芯片支持的编码情况如下:
格式
AD14N
AC104N
AD15N
AD17N
AD18N
支持最高ADC采样率
24000
24000
不支持ADC
不支持ADC
不支持ADC
标准MP2编码
不支持
支持
ump2编码
支持
支持
a编码
支持
支持
编码前需要配置编码采样率以及码率,各编码格式支持的采样率以及码率如下:
标准MP2编码 码率(BR)/ 采样率(SR)对应关系
采样率(sr)
8000
12000
16000
22050
24000
32000
44100
48000
码率(BR)
+8kbps
32kbps
16kbps
48kbps
24kbps
56kbps
32kbps
64kbps
40kbps
80kbps
48kbps
96kbps
56kbps
112kbps
64kbps
128kbps
80kbps
160kbps
88kbps
160kbps
96kbps
224kbps
112kbps
256kbps
128kbps
320kbps
160kbps
384kbps
ump2编码 采样率(sr)/ 压缩比(cr)对应关系
采样率(SR)
8000
12000
16000
22050
24000
32000
44100
48000
压缩比(CR)
3
4
5
6
7
8
注:ump2码率(br)的范围为:采样率(sr) * 16 / 压缩比(CR) , 其中压缩比的范围为3 ~ 8; 例如SR = 24K,那么BR的范围为:(24 * 16 / 8) ~ (24 * 16 / 3)
A格式编码 码率(BR) / 采样率(SR)对应关系
采样率(SR)
8000
12000
16000
24000
32000
码率(BR)
32kbps
48kbps
64kbps
96kbps
128kbps
所有编码被统一管理。ADC能工作在8K、12K、16K、24K这几种采样率。
编码用到的接口函数:
void encoder_io(u32(* fun)(void* ), void* pfile); void stop_encode(void* pfile, u32 dlen); u32 a_encode_api(void* p_file); u32 mp3_encode_api(void* p_file);
5.1. 编码应用流程
在启动录音前需要先调用函数 rec_phy_init,此函数实现对编码管理器进行初始化,会初始化编码控制器里面的一些变量资源。
在编码之前要确保已经完成了设备以及文件系统的初始化,以及在设备中创建好了录音文件,并获取到了相应的文件句柄,对于NOR_FS而言创建创建文件时能直接返回文件号:
调用encoder_io实现对编码的启动,此函数会自动适应当前ADC工作的频率;
当录音到一定时间后,需要关闭录音可以调用stop_encode实现停止录音;
注:录音只是支持一路录音,所以不需要获取管理编码句柄,这里会和解码有区别!
5.2. 编码功能控制接口函数
5.2.1. void encoder_io(u32(* fun)(void* ), void* pfile)
此函数可以启动f1a/b/c或a/b/e格式的编码:
u32(* fun)(void* ),传递不同的编码函数只恨可以实现编写不同格式的音频文件:
a_encode_api,a/b/e格式的编码启动接口函数;
mp3_encode_api,f1a/b/c格式的编码启动接口函数;
void* p_file,创建文件时,获取到的文件句柄。
5.2.2. void stop_encode(void* pfile, u32 dlen)
此函数可以启动停止编码:
void* p_file,创建文件时,获取到的文件句柄;
u32 dlen,停止解码时,抛弃文件结尾部分数据的长度;