在多媒体codec方面,IPP库公认是高性能的库,而且价格也不贵,对发布也没什么限制。我们的客户强烈需要G729的codec,最近我尝试使用IPP库,效果确实不错。
不过最新IPP(v7.1)的全部运行时动态库多达85个,225M,如果每次发布都要带这么多dll,就算带来所谓的自动识别CPU并进行优化的好处,也太麻烦了。
静态方式连接后的程序只是多了不到2M,是比较好的发布方式。可要顺利配置并编译并不容易,我为此查了不少资料,下面把关键点写出来,希望大家少走些弯路。
注意,我使用的编译器是VC++2008,其他版本的vc++应该大同小异。
步骤:
1、下载并安装IPP环境,这个简单,不描述了。
2、下载Intel IPP的Samples包。
手工打开ipp-samples\speech-codecs\codec\speech下的vs项目(设置IPPROOT环境变量并运行build_ia32.bat也能编译, 但要修改makefile有点麻烦)
设置ipp包含文件的路径
设置ipp库的路径
设置C++/代码生成/运行时库 为 “多线程/MT”,这个很关键,否则应用程序在使用这个Speech.lib时会出现一堆链接错。
在配置的C++/命令行/附加选项 增加
/D_IPP_SEQUENTIAL_STATIC
然后生成Release版本的speech.lib
3、自己的应用程序
步骤和2差不多,如果是静态链接,除了"usc.h",还要包含:
#include "ippcore.h"
在程序初始化的地方,增加一行:
ippStaticInit();
在程序的最后增加下面的链接指示:
#pragma comment(lib, "ippi_l.lib")
#pragma comment(lib, "ipps_l.lib")
#pragma comment(lib, "ippcore_l.lib")
#pragma comment(lib, "speech.lib")
做完上述步骤再编译你的程序就大功告成了。