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而言创建创建文件时能直接返回文件号:

  1. 调用encoder_io实现对编码的启动,此函数会自动适应当前ADC工作的频率;

  2. 当录音到一定时间后,需要关闭录音可以调用stop_encode实现停止录音;

注:录音只是支持一路录音,所以不需要获取管理编码句柄,这里会和解码有区别!


5.2. 编码功能控制接口函数

5.2.1. void encoder_io(u32(* fun)(void* ), void* pfile)

此函数可以启动f1a/b/c或a/b/e格式的编码:

  1. u32(* fun)(void* ),传递不同的编码函数只恨可以实现编写不同格式的音频文件:

    1. a_encode_api,a/b/e格式的编码启动接口函数;

    2. mp3_encode_api,f1a/b/c格式的编码启动接口函数;

  2. void* p_file,创建文件时,获取到的文件句柄。

5.2.2. void stop_encode(void* pfile, u32 dlen)

此函数可以启动停止编码:

  1. void* p_file,创建文件时,获取到的文件句柄;

  2. u32 dlen,停止解码时,抛弃文件结尾部分数据的长度;