dev about cedarx decoder config - XradioTech/xradiotech-wiki GitHub Wiki
中文 | EN
主页 | 产品 | 下载 | 开发指南 | FAQ | 联系我们 | 购买样品
开发指南 > CedarX
目录
概述
cedarx支持版本:1.2.2及以上。 目前xr871支持多种音频来源和音频格式的播放,支持情况如下:
- 音频来源:目前支持HTTP、HTTPS、File(TF/SD卡)、Flash、音频数据流、自定义音频源
- 音频格式:目前支持MP3、AMR、AAC、M4A、M3U8、WAV
用户可自由选择上述一种或多种播放功能。
接口说明
播放功能的选择由下述接口实现。目前这些接口在开发板启动阶段由函数platform_init()调用,用户可自行选择是否调用相应的接口,来获取对应的播放功能。 一共分为音频来源、音频格式、解码器三类接口。 注:下述接口只能被调用一次,不可重复多次调用。
音频来源
function | detail |
---|---|
CedarxStreamListInit; | 声明:int CedarxStreamListInit(void);目的:初始化音频来源支持列表。该函数必须被调用,且必须在注册https、http等音频源前被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxStreamRegisterHttps; | 声明:int CedarxStreamRegisterHttps(void);目的:注册https音频源。播放https音频时该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxStreamRegisterSsl; | 声明:int CedarxStreamRegisterSsl(void);目的:注册ssl音频源。ssl是https的辅助音频源,播放https音频时该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxStreamRegisterFlash; | 声明:int CedarxStreamRegisterFlash(void);目的:注册flash音频源。播放flash音频时该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxStreamRegisterFile; | 声明:int CedarxStreamRegisterFile(void);目的:注册file音频源。播放sd/tf卡里的音频(即file音频)时该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxStreamRegisterFifo; | 声明:int CedarxStreamRegisterFifo(void);目的:注册fifo音频源。播放音频数据流的音频时该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxStreamRegisterHttp; | 声明:int CedarxStreamRegisterHttp(void);目的:注册http音频源。播放http音频时该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxStreamRegisterTcp; | 声明:int CedarxStreamRegisterTcp(void);目的:注册tcp音频源。tcp是http的辅助音频源,播放http音频时该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxStreamRegisterCustomer; | 声明:int CedarxStreamRegisterCustomer(void);目的:注册customer音频源。customer是用户自定义音频来源,用户需要定制音频来源时该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
音频格式
function | detail |
---|---|
CedarxParserListInit; | 声明:int CedarxParserListInit(void);目的:初始化音频格式支持列表。该函数必须被调用,且必须在注册mp3、amr等播放格式前被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxParserRegisterM3U; | 声明:int CedarxParserRegisterM3U(void);目的:注册m3u8音频格式。播放m3u8音频时该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxParserRegisterM4A; | 声明:int CedarxParserRegisterM4A(void);目的:注册m4a音频格式。播放m4a音频时该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxParserRegisterAAC; | 声明:int CedarxParserRegisterAAC(void);目的:注册aac音频格式。播放aac音频时该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxParserRegisterAMR; | 声明:int CedarxParserRegisterAMR(void);目的:注册amr音频格式。播放amr音频时该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxParserRegisterMP3; | 声明:int CedarxParserRegisterMP3(void);目的:注册mp3音频格式。播放mp3音频时该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxParserRegisterWAV; | 声明:int CedarxParserRegisterWAV(void);目的:注册wav音频格式。播放wav音频时该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
解码器
function | detail |
---|---|
CedarxDecoderListInit; | 声明:int CedarxDecoderListInit(void);目的:初始化解码器支持列表。该函数必须被调用,且必须在注册AAC、MP3等解码器前被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxDecoderRegisterAAC; | 声明:int CedarxDecoderRegisterAAC(void);目的:注册AAC解码器。播放m4a和aac音频时,该函数需要被调用。当m3u8里的播放列表存在m4a或aac时,该函数也需要被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxDecoderRegisterAMR; | 声明:int CedarxDecoderRegisterAMR(void);目的:注册AMR解码器。播放amr音频时该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxDecoderRegisterMP3; | 声明:int CedarxDecoderRegisterMP3(void);目的:注册MP3解码器。播放mp3音频时该函数需要被调用 参数: 无返回值:返回状态 (0: 成功) |
CedarxDecoderRegisterWAV; | 声明:int CedarxDecoderRegisterWAV(void);目的:注册WAV解码器。播放wav音频时该函数需要被调用 参数: 无返回值:返回状态 (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)
{
CedarxStreamListInit();
// CedarxStreamRegisterHttps();
// CedarxStreamRegisterSsl();
// CedarxStreamRegisterHttp();
// CedarxStreamRegisterTcp();
// CedarxStreamRegisterFlash();
CedarxStreamRegisterFile();
// CedarxStreamRegisterFifo();
// CedarxStreamRegisterCustomer();
CedarxParserListInit();
// CedarxParserRegisterM3U();
// CedarxParserRegisterM4A();
// CedarxParserRegisterAAC();
// CedarxParserRegisterAMR();
CedarxParserRegisterMP3();
// CedarxParserRegisterWAV();
CedarxDecoderListInit();
// CedarxDecoderRegisterAAC();
// CedarxDecoderRegisterAMR();
CedarxDecoderRegisterMP3();
// CedarxDecoderRegisterWAV();
}
int main(void)
{
platform_init();
return 0;
}
上述例子选择的功能是只支持播放sd/tf卡里的mp3音频(即file mp3音频)。