EVC编译TCPMP的过程

EVC编译TCPMP的过程[@more@]

1.tcpmp下载网址:http://picard.exceed.hu/tcpmp/test/
下载的压缩包tcpmp.src.0.72RC1.tar.bz2

2.编译环境:
Microsoft eMbedded C++ 4.0 (sp4) -- win32(wce armv4i) debug -- wince5.0 SDK
只编译了debug版。Arm汇编器是EVC安装目录下Microsoft eMbedded C++ 4.0/EVC/wce500/bin中的。

3.编译过程:
1)编译common工程

出现以下链接错误:
error LNK2019: unresolved external symbol CPUSpeedClk referenced in function CPUSpeed
在几个asm汇编文件上加上编译选项以告诉编译器编译规则:
armasm -32 -cpu xscale "$(InputPath)" "$(IntDir)/$(InputName).obj" -list "$(IntDir)/$(InputName).lst"
输出增加:$(IntDir)/$(InputName).obj
需要Common工程的宏定义中加上ZLIB_DLL,以便导出zlib库的相关接口,供其它库使用。链接库加上ole32.lib。
这样就可编译连接通过。


2)编译amr工程:
可以从下面2个网址下载amr的解码器的源代码:
http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-610.zip
http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-600.zip
并且分别拷贝到amr目录下的26104和26204中。


3) ac3工程可以顺利编译通过
4) asap工程:
需要加上ASAP宏定义,还要加上头文件目录
“./,./asap,./atari800/src” 这样也可以顺利编译通过了。

5)ati3200 carmera intel2700g interface matroska network splitter template wavpack
工程可以顺利编译通过


6) libmad工程:
增加个FPM_DEFAULT宏定义即可顺利编译通过.


7) mpc工程
增加宏定义:MPC_FIXED_POINT,MPC_LITTLE_ENDIAN增加头文件路径“./libmusepack/include”
就编译通过了。


8) speex工程:
增加头文件路径“./speex/include/speex,./speex/include”
增加宏定义inline=__inline。 编译完成。


9) vorbishq工程:
增加宏定义BIG_ENDIAN=0,BYTE_ORDER=1,LITTLE_ENDIAN=1编译通过


10) vorbislq工程:
增加宏定义BIG_ENDIAN=0,BYTE_ORDER=1,LITTLE_ENDIAN=1,编译通过


11) flac工程:
增加宏定义:FLAC_API_EXPORTS
增加头文件路径:./,./flac/include,./flac/src/libFLAC/include


12) ffmpeg工程:
增加宏定义:EMULATE_INTTYPES,CONFIG_H264_DECODER,TCPMP,inline=__inline,FFMPEG_EXPORTS
增加头文件路径:./,./libavcodec,./libavutil
下载msinttypes-r24.zip,解压出inttypes.h stdint.h到ffmpeg根目录下
并在libavutil目录中common.h的124行 保证有# include "stdint.h"。
将工程libavcodec目录下dsputil_arm.c 文件“exclude file from build”。编译通过,测试发现还是能够播放mpg视频文件的。


13) aac工程:
tcpmp.src.0.72RC1中的aac工程根本无法编译通过。
原因是ic_stream结构体定义有问题。最后只好在sourceforge上下载faac库faad2。
为了尽量使版本一致,下的是faad2-2.5版。将其中的libfaad源码内容拷贝到aac/faad2/libfaad目录下。
其实aac工程所做的是把faad2整理为一个符合tcpmp的插件。
在faad2-2.5的工程里可以看到faad2已经为多个播放器如(QCD mpeg4ip)整理好插件,
但是没有tcmp的。完成上述工作后,发现编译有点问题,是faad2版本的问题。
aac工程外围代码faad.c 87行有个FAAD_FMT_INTERNAL宏,在faad2-2.5版本中没有被定义了,所以将改FAAD_FMT_FIXED。不知道这样修改AAC的播放有没有问题了。


14)player_ce3工程
这是最后的工程了。直接编译完成最后的工作。

总之,做了上述修改后,所有的工程都能编译通过了。

后记:

发现acc插件编译后并不能正常使用,看来上述改faad2acc插件的方法是行不通的,最方便的方法是到网上下载个tcpmp_aac_plugin.windows_mobile.0.66.zip。解压后提取aac.ARM.CAB,拷贝到wince5.0安装。安装之后会生成aac.plg。将其拷贝出来,我们就可以使用了。经测试,这个插件在wince5.0 wince6.0上都可以使用。其实我们编译TCPMP时,使用EVC + wince5.0 SDK 编译出来的库在5.06.0的机器都可以使用的。这一点测试通过。 不过在播放asf文件时,估计是WMV WMA编码的,微软自己的格式,需要OS提供WMA WMV解码库(WMVDMOD.dll WMADMOD.dll WMSDMOD.DLL),至于5.0 6.0的版本,大家可以到网上淘找一下。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23410886/viewspace-1031515/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23410886/viewspace-1031515/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值