WEB开发网
开发学院手机开发Symbian 开发 symbian之libmad移植 阅读

symbian之libmad移植

 2010-05-19 18:28:00 来源:WEB开发网   
核心提示:今天老大过来跟我说,让我把之前研究的dll解析加载技术去申请公司的创新奖项,symbian之libmad移植,我看了下其他人申报的项目,心想这三等奖是保底定了,基本上根据名字都可以猜的出是做什么用的,可谓封装的相当傻瓜式啊,能搞个一等奖那就完全发大了啊,等下个月再把最近研究的J2ME启动申报上去…..啊哈哈言归正传

今天老大过来跟我说,让我把之前研究的dll解析加载技术去申请公司的创新奖项,我看了下其他人申报的项目,心想这三等奖是保底定了,能搞个一等奖那就完全发大了啊。等下个月再把最近研究的J2ME启动申报上去…..啊哈哈

言归正传,晚上一直在研究libmad的移植。其实3rd本身也提供了硬解MP3的API,就是CMMFCodec。但据说兼容性不怎么好,因为只有高版本的SDK才有,加上我一直不喜欢用系统自带的东东,那么libmad还是首选啦~从网上下了源代码,但是完全不知道怎么编译。照着google出来的一些方法改,发现完全不得要领。正一筹莫展之际,发现了一个叫MP3DecodeDLL的好东东。MP3DecodeDLL对libmad进行了二次封装,已经有现成的工程了,赶紧下了下来。

WINSCW可以直编译通过。而因为MP3DecodeDLL是2nd的工程,想要在3rd下GCCE编译通过,你需要做这么几件事:

1、删除dll.cpp和imdct_l_arm.S这两个文件。

2、删除mmp文件中的这一段:

#if !defined (WINS)

SOURCE imdct_l_arm.S

#endif

3、将layer3.c中关于III_imdct_l函数的定义实现替换掉,可以参考这个帖子里Mark哥的代码。

4、在mmp中添加不小于你的exe文件中的capability。否则调用dll的时候会出错。

5、我下载的版本 CMP3DecodeEngine::CloseFile函数的实现中是没有内容的,需要添加iMP3Decode->Close(),否则会有内存泄露。

这四步做完后,GCCE 和WINSCW均可编译通过生成dll文件。而ARMV5无法编译通过,会有很多expected an expression错误。

据Mark哥说 ARMV5也可编译,我估计这个就需要改很多地方的代码了,既然GCCE能用那就先这么着好了。

大致看了下 CMP3DecodeEngine类的Export函数,基本上根据名字都可以猜的出是做什么用的,可谓封装的相当傻瓜式啊。这个周末就研究怎么使用这个引擎吧。

Tags:symbian libmad 移植

编辑录入:coldstar [复制链接] [打 印]
赞助商链接