4. 编码接口

AD16N目前支持的编码格式有:UMP3、A、和标准MP3三种格式,所有编码格式被统一管理。编码前需要配置编码采样率以及码率,各编码格式支持的采样率以及码率如下:

标准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

ump3编码 采样率(sr)/ 压缩比(cr)对应关系

采样率(SR)

8000

12000

16000

22050

24000

32000

44100

48000

压缩比(CR)

3

4

5

6

7

8

注: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

编码功能控制函数:

void encoder_io(u32(*fun)(void *), void *pfile);
void stop_encode(void *pfile, u32 dlen);

各个格式的编码接口函数:

u32 mp3_encode_api(void *p_file);
u32 ump3_encode_api(void *p_file);
u32 a_encode_api(void *p_file);

4.1. 编码使用一般流程

在开始编码前需要调用函数u32 audio_adc_init_api(u32 sr, AUDIO_ADC_MODE mode, u32 ch)配置AUDIO_ADC采样率;

在编码之前要确保已经打开存放编码文件的设备,并创建新的文件进行编码,指定需要编码的格式,即可以按照预先设定的采样率以及码率进行编码流程:

调用encoder_io实现对编码器的控制,此函数的传参可以控制:

a.初始化指定编码格式;
b.将编码数据,写入新创建的文件中;

经过上面的一步已经完成了对编码的启动,此时可以调用stop_encoder实现停止编码的功能;


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

4.2.1. 函数void encoder_io(u32(*fun)(void *), void *pfile)

此函数实现初始化编码器并启动编码,其中参数:

1、(*fun)(void *):编码器初始化回调,传入指定解码器格式并进行初始化;
2、void *pfile,需要写入编码数据的文件句柄;

4.2.2. 函数void stop_encode(void *pfile, u32 dlen)

此函数实现停止编码器,其中参数:

1、void *pfile,需要写入编码数据的文件句柄;
2、dlen:对于nor_fs文件系统编码,该参数指定编码文件末尾舍弃的字节数;