编码接口 ===================================== 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); ^^^^^^^^^^^^^^^^^^^^ 编码使用一般流程 ################################ 在开始编码前需要调用函数u32 audio_adc_init_api(u32 sr, AUDIO_ADC_MODE mode, u32 ch)配置AUDIO_ADC采样率; 在编码之前要确保已经打开存放编码文件的设备,并创建新的文件进行编码,指定需要编码的格式,即可以按照预先设定的采样率以及码率进行编码流程: 调用encoder_io实现对编码器的控制,此函数的传参可以控制: :: a.初始化指定编码格式; b.将编码数据,写入新创建的文件中; 经过上面的一步已经完成了对编码的启动,此时可以调用stop_encoder实现停止编码的功能; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 编码功能控制接口函数 ################################# 函数void encoder_io(u32(\*fun)(void \*), void \*pfile) ***************************************************************** 此函数实现初始化编码器并启动编码,其中参数: :: 1、(*fun)(void *):编码器初始化回调,传入指定解码器格式并进行初始化; 2、void *pfile,需要写入编码数据的文件句柄; 函数void stop_encode(void \*pfile, u32 dlen) ***************************************************************** 此函数实现停止编码器,其中参数: :: 1、void *pfile,需要写入编码数据的文件句柄; 2、dlen:对于nor_fs文件系统编码,该参数指定编码文件末尾舍弃的字节数;