Audio Recorder Function Select Guide - XradioTech/XR871-OLD GitHub Wiki


Content


概述

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音频)。