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


Content


概述

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