编码接口 ===================================== 各芯片支持的编码情况如下: ================= ========= ========= =========== ========== ========== 格式 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); ^^^^^^^^^^^^^^^^^^^^ 编码应用流程 ################################ 在启动录音前需要先调用函数 rec_phy_init,此函数实现对编码管理器进行初始化,会初始化编码控制器里面的一些变量资源。 在编码之前要确保已经完成了设备以及文件系统的初始化,以及在设备中创建好了录音文件,并获取到了相应的文件句柄,对于NOR_FS而言创建创建文件时能直接返回文件号: 1. 调用encoder_io实现对编码的启动,此函数会自动适应当前ADC工作的频率; 2. 当录音到一定时间后,需要关闭录音可以调用stop_encode实现停止录音; 注:录音只是支持一路录音,所以不需要获取管理编码句柄,这里会和解码有区别! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 编码功能控制接口函数 ################################# void encoder_io(u32(* fun)(void* ), void* pfile) ***************************************************************** 此函数可以启动f1a/b/c或a/b/e格式的编码: 1. u32(* fun)(void* ),传递不同的编码函数只恨可以实现编写不同格式的音频文件: a. a_encode_api,a/b/e格式的编码启动接口函数; #. mp3_encode_api,f1a/b/c格式的编码启动接口函数; 2. void* p_file,创建文件时,获取到的文件句柄。 void stop_encode(void* pfile, u32 dlen) *************************************************** 此函数可以启动停止编码: 1. void* p_file,创建文件时,获取到的文件句柄; 2. u32 dlen,停止解码时,抛弃文件结尾部分数据的长度;