由小白到大大的涅盘,从vgsky.com开始!

项目计划:采用硬解码播放mp3声音的libcoolaudio

Update:2007/10/6,Click:0 本文如有下载 请从下面附件中下载

举手之劳 是您对我们最大的支持 感谢您!

psp音频播放的库,mp3, aac,atrac3,atrac3plus,pcmwav,ogg,midi,mod采用下面的接口,实现相应的操作,这样各个解码器都能够协同工作.nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
mp3,aac,atrac3,atrac3plusc采用硬解.nQ2Vy`E:'JT,+a~a2{a@F({=本文来自:V电G玩S天K空Y
类别psp支援windows支援
mp3cooleyesnewcreat
aac cooleyes 
atrac3 cooleyes 
atrac3plus cooleyes 
pcmwav cooleyesnewcreat
ogg newcreatnewcreat
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

 

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

各个函数说明:

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

 

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

【分类导航】

【热门游戏资讯】

更多

【推荐游戏资讯】

更多

【最新资讯更新】

更多

【赞助商链接】