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

PSP开发教程06采用硬解码播放mp3声音的libcoolaudio

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

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

音频播放库采用下面的接口

uSzAxe-KkT本文来自:V电G玩S天K空Y

psp音频播放的库,mp3, aac,atrac3,atrac3plus,pcmwav,ogg,midi,mod采用下面的接口,实现相应的操作,这样各个解码器都能够协同工作.3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
mp3,aac,atrac3,atrac3plusc采用硬解

uSzAxe-KkT本文来自:V电G玩S天K空Y

这个项目主要由cooleyes完成psp部分,由newcreat完成windows部分.供给nge以及其他应用程序使用.目前是一个初始版本.

uSzAxe-KkT本文来自:V电G玩S天K空Y

项目计划详细本版找。

uSzAxe-KkT本文来自:V电G玩S天K空Y

uSzAxe-KkT本文来自:V电G玩S天K空Y

下面是nge使用libcoolaudio播放mp3.

uSzAxe-KkT本文来自:V电G玩S天K空Y

下载libcoolaudio v0.1按照里面的安装说明安装.如果不会安装请留言.

uSzAxe-KkT本文来自:V电G玩S天K空Y

http://code.google.com/p/topoc/downloads/list

uSzAxe-KkT本文来自:V电G玩S天K空Y

libnge 使用libcoolaudio,以下假设都是安装的topoc整合包,没安装整合包的请自己放在相应目录下。

uSzAxe-KkT本文来自:V电G玩S天K空Y

psp版3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
1 拷贝libSDLmain.a到pspdev\pspdev\psp\lib覆盖原来的libSDLmain.a。(主要是启用核心态)3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
2 设置demo makefile指定include和lib路径。编译即可。3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
如果不会设置makefile的请按下面傻瓜安装:3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
3 将include和lib下的文件加入到pspdev\libnge_psp\include 和pspdev\libnge_psp\lib。(或者你自己写makefile指定目录)3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
4 将demo/lesson5拷贝到pspdev\libnge_psp\demo,和那些lesson放一起。然后make即可。

uSzAxe-KkT本文来自:V电G玩S天K空Y

win版:3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
1 打开demo工程3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
2 加入libcoolaudio的include和lib。3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
3 拷贝SDL_mixer.dll到system32下,这个是支持mp3的dll。

uSzAxe-KkT本文来自:V电G玩S天K空Y

3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
运行请放test.mp3到demo\lesson5(win)和demo\lesson5\__SCE__lesson5(psp)下

uSzAxe-KkT本文来自:V电G玩S天K空Y

下面简述一下接口:

uSzAxe-KkT本文来自:V电G玩S天K空Y

各个函数说明:3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自: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

uSzAxe-KkT本文来自:V电G玩S天K空Y

 

uSzAxe-KkT本文来自:V电G玩S天K空Y

下面是基本调用方式:

uSzAxe-KkT本文来自:V电G玩S天K空Y

int main(int argc, char *argv[])3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
{3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
//init

uSzAxe-KkT本文来自:V电G玩S天K空Y

CoolAudioDefaultInit();

uSzAxe-KkT本文来自:V电G玩S天K空Y

MP3PlayInit(&ops);3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
//load and play3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
ops.load("test1.mp3");3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
ops.play();3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
printf("playing....\n");3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
do{3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
Menu();3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
}while( ops.eos()!=1);3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
//another3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
ops.load("test2.mp3");3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
ops.play();3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
printf("playing....\n");3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
do{3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
Menu();3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
}while( ops.eos()!=1);3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
//clean up3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
MP3PlayFini();3<;.lT3c3]:n~E4tg7:me3up`asCW'p!DU?C6>m>_VC15kWicS->jaL^q4[5;t<G`1本文来自:V电G玩S天K空Y
return 0;

uSzAxe-KkT本文来自:V电G玩S天K空Y

}

uSzAxe-KkT本文来自:V电G玩S天K空Y

测试时请将test.mp3放到相应目录.

uSzAxe-KkT本文来自:V电G玩S天K空Y

可以发现mp3采用硬解码对fps影响极小,在播放mp3的情况下旋转缩放512*512*32的图片nge能达到200+的fps,这对做游戏的人是一大好消息.(windows版由于不是硬解码所以fps会下降不少)

uSzAxe-KkT本文来自:V电G玩S天K空Y

【分类导航】

【热门游戏资讯】

更多

【推荐游戏资讯】

更多

【最新资讯更新】

更多

【赞助商链接】