mp3,aac,atrac3,atrac3plusc采用硬解.nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
| 类别 | psp支援 | windows支援 |
| mp3 | cooleyes | newcreat |
| aac | cooleyes | |
| atrac3 | cooleyes | |
| atrac3plus | cooleyes | |
| pcmwav | cooleyes | newcreat |
| ogg | newcreat | newcreat |
| libmikmod(xm,mod,midi..) | ||
| 其他 | 待定 |
T=c>o'CH7lq@,FQ=O/SA+)Yk4/-$u`hRw3)r^}fSn32O=Xi{^>_-}T~c(c((nw51W@Cy本文来自:V电G玩S天K空Y
| #ifndef _INTERFACE_H_nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y #define _INTERFACE_H_nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y // load file and do file initnQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y typedef int (*fd_load) (const char *);nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y // play musicnQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y typedef int (*fd_play) (void);nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y // pause music and use resume to resume musicnQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y typedef void (*fd_pause) (void);nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y // stop music and free CURRENT FILE resource,USE XXXFINI to do free all resourcenQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y typedef int (*fd_stop) (void);nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y // resume a pause musicnQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y typedef void (*fd_resume)(void);nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y // seek position (options)nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y typedef void (*fd_seek) (int);nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y // return time tick (options)nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y typedef int (*fd_time) (void);nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y // return 1 if music is end nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y typedef int (*fd_eos) (void);nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y // set volume (1-128)nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y typedef int (*fd_volume) (int);nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y typedef struct {nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y fd_load load;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y fd_play play;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y fd_pause pause;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y fd_stop stop;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y fd_resume resume;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y fd_seek seek;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y fd_time time;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y fd_eos eos;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y fd_volume volume;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y char extension[256]; nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y } play_ops;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y #endif |
各个函数说明:
T=c>o'CH7lq@,FQ=O/SA+)Yk4/-$u`hRw3)r^}fSn32O=Xi{^>_-}T~c(c((nw51W@Cy本文来自:V电G玩S天K空Y| 函数名 | 功能 | 备注 |
| int load(const char* filename) | 加载文件,并做相应的初始化工作 | |
| int play(void) | 播放声音 | |
| void pause(void) | 暂停声音.但不释放资源,可以用resume再次从暂停地方播放. | |
| stop | 停止声音,并释放当前加载资源.但是不是所有资源. | |
| resume | 再次从暂停地方播放. | |
| seek | 从流的某一位置播放 | 可选 |
| time | 音频的时间信息 | 可选 |
| eos | 播放是否结束(end of stream),结束返回1 | |
| volume | 音量设置0-128 |
T=c>o'CH7lq@,FQ=O/SA+)Yk4/-$u`hRw3)r^}fSn32O=Xi{^>_-}T~c(c((nw51W@Cy本文来自:V电G玩S天K空Y
例如: mp3nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
//对外只暴露这个接口,暂时没有实现的接口用null.nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
externnQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
void MP3CodecInit(codec_ops* ops)nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
{nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
ops->load = MP3_Load;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
ops->play = MP3_Play;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
ops->pause = MP3_Pause;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
ops->stop = MP3_Stop;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
ops->time = MP3_GetTimeString;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
ops->seek = NULL;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
ops->eos = MP3_EndOfStream;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
strncpy(ops->extension,"mp3",4);nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
}nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
//以下实现各个MP3函数,(私有)nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
static void MP3_Load(const char* filename)nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
{nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
//.....nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
}nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
....nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
例如:AACnQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
//对外接口nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
externnQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
void AACCodecInit(codec_ops* ops)nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
{nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
ops->load = AAC_Load;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
ops->play = AAC_Play;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
ops->pause = AAC_Pause;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
ops->stop = AAC_Stop;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
ops->time = AAC_GetTimeString;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
ops->seek = NULL;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
ops->eos = AAC_EndOfStream;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
strncpy(ops->extension,"aac",4);nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
}nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
//以下实现各个AAC函数,(私有,对外不暴露)nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
static void AAC_Load(const char* filename)nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
{nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
//.....nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
}nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
....nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
--------------外部调用方式---------------------nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
int main(int argc, char *argv[])nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
{nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
//init nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
OGGPlayInit(&ops);nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
//load and playnQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
ops.load("test1.ogg");nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
ops.play();nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
printf("playing....\n");nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
do{nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
Menu();nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
}while( ops.eos()!=1);nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
//anothernQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
ops.load("test2.ogg");nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
ops.play();nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
printf("playing....\n");nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
do{nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
Menu();nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
}while( ops.eos()!=1);nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
//clean upnQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
OGGPlayFini();nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
return 0;nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
}nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
0.1版下载 libcoolaudionQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
http://code.google.com/p/topoc/downloads/list


