libjpeg-turbo是對libjpeg的擴(kuò)展,支持SIMD指令,如X86架構(gòu)的MMX、SSE、SSE2、3DNOW,ARM架構(gòu)的NEON,在對jpeg進(jìn)行編碼和解碼的過程中能提高速度。
MMX:多媒體擴(kuò)展的縮寫,第六代CPU芯片重要特點(diǎn),57條指令。
SSE2:SIMD流技術(shù)擴(kuò)展2,144個新增指令,被MMX優(yōu)化過的程序很容易被SSE2進(jìn)行更深層次的優(yōu)化。
NEON:可加速多媒體和信號處理算法,它是ARM系列處理器的128位SIMD架構(gòu)擴(kuò)展。
在速度上,libjpeg-turbo一般是libjpeg的2-4倍。它既能調(diào)用libjpegAPI,又可調(diào)用TurboJPEG API??梢允褂胠ibjpeg-turbo替代libjpeg。
編譯libjpeg-turbo:
1、 從https://sourceforge.net/projects/libjpeg-turbo/通過TortoiseSVN下載libjpeg-turbo最新源代碼,將其保存到D:\soft\libjpeg-turbo文件夾下;
2、 從http://www.cmake.org/下載最新版的CMake,并安裝;
3、 在D:\soft\libjpeg-turbo文件夾下手動創(chuàng)建一個vs2010文件夾;
4、 打開CMake,其中where isthe source code選項,選擇D:/soft/libjpeg-turbo/libjpeg-turbo;where to build thebinaries選項,選擇D:/soft/libjpeg-turbo/vs2010;
5、 點(diǎn)擊Configure,在彈出的對話框中選擇VisualStudio 10,其它默認(rèn),點(diǎn)擊Finish;
6、 如果有紅色框顯示,繼續(xù)點(diǎn)擊Configure(將CMAKE_INSTALL_PREFIX中的value改為D:\libjpeg-turbo);
7、 點(diǎn)擊Generate,此時會在vs2010文件夾中看到libjpeg-turbo.sln文件;
8、 從https://sourceforge.net/projects/nasm/下載最新版的nasm;
9、 將nasm安裝到D:\ProgramFiles\NASM文件夾下,并將其中的nasm.exe和ndisasm.exe兩個文件拷貝到C:\ProgramFiles\Microsoft Visual Studio 10.0\VC\bin下(如果是64位,則拷貝到C:\ProgramFiles (x86)\Microsoft Visual Studio 10.0\VC\bin),將其D:\ProgramFiles\NASM添加到系統(tǒng)環(huán)境變量中;
10、 打開libjpeg-turbo.sln,分別在Debug和Release下,選擇Solution Explorer里的Solution libjpeg-turbo,點(diǎn)擊右鍵,運(yùn)行”Rebuild Solution”,然后選中INSTALL, build;
11、 全部完成后會在D:\libjpeg-turbo文件夾下生成bin、doc、lib、include四個文件夾,編譯成功(說明:默認(rèn)的Debgu和Release下生成的所有文件夾都相同,注意區(qū)分);
12、 打開vs2010,新建一個控制臺應(yīng)用程序,為vs2010配置libjpeg-turbo環(huán)境:選擇View--> Properties Manager-->分別選中Debug和Release上的Microsoft.Cpp.Win32.user,點(diǎn)擊右鍵-->Properties:VC++ Directories,Include Directories:D:\libjpeg-turbo\include;Library Directories:D:\libjpeg-turbo\lib;
13、 選中工程-->Properties-->Configuration Properties-->Linker-->Input-->AdditionalDependencies:Debug和Release,添加相應(yīng)的.lib庫;
14、 將D:\libjpeg-turbo\bin加入到windows系統(tǒng)環(huán)境變量Path中,重啟。
參考文獻(xiàn):
1、 http://libjpeg-turbo.virtualgl.org/
2、 http://www.linuxsir.org/bbs/thread374093.html
3、 http://blog.sina.com.cn/s/blog_a5b979d30101af56.html
4、 http://blog.csdn.net/jwzhangjie/article/details/8807409
5、 http://blog.csdn.net/hongwazi_2010/article/details/9153087