dev about cedarx encoder config - XradioTech/xradiotech-wiki GitHub Wiki
中文 | EN
主页 | 产品 | 下载 | 开发指南 | FAQ | 联系我们 | 购买样品
开发指南 > CedarX
目录
概述
cedarx支持版本:1.2.11及以上。 目前xr871支持多种音频存放地址和音频格式的录制,支持情况如下:
- 音频地址:目前支持File(TF/SD卡)、自定义存放地址
- 音频格式:目前支持AMR、PCM
用户可自由选择上述一种或多种录音功能。
接口说明
录音功能的选择由下述接口实现。目前这些接口在开发板启动阶段由函数platform_init()调用,用户可自行选择是否调用相应的接口,来获取对应的录音功能。 一共分为音频地址、音频格式、编码器三类接口。 注:下述接口只能被调用一次,不可重复多次调用。
音频地址
function | detail |
---|---|
CedarxWriterListInit; | 声明:int CedarxWriterListInit(void);目的:初始化音频地址支持列表。该函数必须被调用,且必须在注册file、customer等音频目的地址前被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxWriterRegisterFile; | 声明:int CedarxWriterRegisterFile(void);目的:注册file音频地址。当存放录制的音频到sd/tf卡时该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxWriterRegisterCallback; | 声明:int CedarxWriterRegisterCallback(void);目的:注册callback音频地址。callback音频地址是自定义存放地址的一种实现方式,用户需实现自定义存放的函数实现 参数: 无返回值:返回状态 (0: 成功) |
CedarxWriterRegisterCustomer; | 声明:int CedarxWriterRegisterCustomer(void);目的:注册customer音频地址。customer音频地址是自定义存放地址的另外一种实现方式,用户需实现自定义的writer。推荐使用该方式实现自定义存放地址 参数: 无返回值:返回状态 (0: 成功) |
音频格式
function | detail |
---|---|
CedarxMuxerListInit; | 声明:int CedarxMuxerListInit(void);目的:初始化音频格式支持列表。该函数必须被调用,且必须在注册pcm、amr等音频格式前被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxMuxerRegisterAmr; | 声明:int CedarxMuxerRegisterAmr(void);目的:注册amr音频格式。录制amr音频时该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxMuxerRegisterPcm; | 声明:int CedarxMuxerRegisterPcm(void);目的:注册pcm音频格式。录制pcm音频时该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
编码器
function | detail |
---|---|
CedarxEncoderListInit; | 声明:int CedarxEncoderListInit(void);目的:初始化编码器支持列表。该函数必须被调用,且必须在注册AMR、PCM等编码器前被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxEncoderRegisterAmr; | 声明:int CedarxEncoderRegisterAmr(void);目的:注册AMR编码器。录制amr音频时,该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxEncoderRegisterPcm; | 声明:int CedarxEncoderRegisterPcm(void);目的:注册PCM编码器。录制pcm音频时该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
实现说明
目前在platform_init.c里实现了弱函数platform_cedarx_init,该函数列出了所有的录音功能的选择接口,且通过注释代码的方式默认只选择了部分播放功能。 开发板初始化函数platform_init会调用到platform_cedarx_init,而因为platform_init.c里的platform_cedarx_init函数被定义为一个弱函数,即如果外部没有定义实现函数platform_cedarx_init,platform_init会调用到platform_init.c里的弱函数platform_cedarx_init;如果外部定义实现了函数platform_cedarx_init,platform_init就会去调用外部的platform_cedarx_init。 因此用户可在外部模块实现自己的platform_cedarx_init。例如,可以在main.c中定义platform_cedarx_init()如下:
#include “cedarx/cedarx.h”
void platform_cedarx_init(void)
{
/* for media recorder */
CedarxWriterListInit();
CedarxWriterRegisterFile();
// CedarxWriterRegisterCallback();
// CedarxWriterRegisterCustomer();
CedarxMuxerListInit();
CedarxMuxerRegisterAmr();
// CedarxMuxerRegisterPcm();
CedarxEncoderListInit();
CedarxEncoderRegisterAmr();
// CedarxEncoderRegisterPcm();
}
int main(void)
{
platform_init();
return 0;
}
上述例子选择的功能是只支持录制amr音频到sd/tf卡里(即file amr音频)。