这应该是libjpeg函数库中安装指导文件install.txt的中文简译版本,只给出了一个大致流程以及一些注意事项,更多详细内容可以参看原文件。
JPEG软件包安装
软件包配置
使用命令./configure
,生成文件jconfig.h
以及Makefile
一些配置选项:
configure将会编译静态和动态函数库,若只想编译其中之一,
./configure --diasble-shared
:只编译静态库./configure --diasble-static
:只编译动态库
configure将会默认使用gcc(GUN C compiler)作为编译器,如想用cc作为编译器,则需要
./configure CC='cc'
默认的CFLAGS设置对于非gcc类编译器位”-g”,对于gcc编译器为”-g -O2”,我们可以改写为
./configure CFLAGS='-O2'
:-O2表示采用的优化级别位2
指定特定的安装位置
./configure --prefix=PATH
软件包编译
使用命令make
软件包测试
使用命令make test
我们也可以通过手动运行程序djpeg和cjpeg来得到输出文件testimg*,然后利用二进制比较文件将我们获得的文件与软件包中已有的文件比较,若文件完全相同,说明程序编译没有问题。
若程序报错,则去install.txt中的本部分内容(TESTING THE SOFTWARE)下查找相关解决方法。
软件包安装
使用命令make install
在这里我们建议首先执行命令make -n install
查看配置文件中软件的安装位置,必要时需要修稿Makefile中软件的安装位置。
如果我们想将IJG Library库用于编译其他程序,我们需要将以下四个头文件放入我们的项目文件夹中:jpeglib.h
,jerror.h
,jconfig.h
,jmorecfg.h
,并且我们也需要将libjpeg.a
放在与library files一起的地方(翻译太蹩脚: put the library file libjpeg.a wherever library files go.)当然如果我们按照上述步骤走了下来,我们实际已经安装了所需的library,若只想安装library,我们可以运行make install-lib
。
Optional Stuff
9-12位大像素值支持
9-12位大像素值,对于每一个颜色通道来说,就是每一个颜色通道的数值可以扩展到2的9直至12次方。为了能够实现这种操作,我们需要按照如下操作:
- 在
jmorecfg.h
头文件中,定义BITS_IN_JSAMPLE
的值位9,10,11或12,而不是8 - 在
jconfig.h
头文件中,注释掉BMP_SUPPORTED
,RLE_SUPPORTED
,和TARGA_SUPPORTED
,因为这些格式的代码不会处理超过8位的数据,甚至不能通过编译。(PPM和GIF的代码在超过8位的情况下仍能正常运行) - 编译,不要运行
make test
,因为相应的源文件是8位的
注意:标准的Huffman表只支持8位的数据,如果我们的数据超过8位,cjpeg将会默认采用算术编码。而Huffman解码器将会使用熵优化来计算出高数据位的可用解码表,否则,我们就得提供不同的默认Huffman编码表。另外有一点要说明的是目前大像素值压缩计算在16-bit-int的机器上是不支持的,简言之,就是不支持16位的机器。
优化措施
建议:在做出优化改动前,首先要保证以上基本安装正确且能通过自测。以下的各种优化改进后都需要进行自测以确保未对程序的其他部分造成破坏。(具体优化方法参阅原文)
- DCT乘法运算优化:修改jdct.h中的MULTIPLYxxx宏定义(文件中已给出)
- DCT浮点数计算优化:若处理器计算浮点数能力较强,则可能DCT浮点计算要快鱼DCT整数计算,因此我们可以将DCT的浮点数计算作为我们的默认计算方式,修改方式:增加
#define JDCT_DEFAULT JDCT_FLOAT
到jconfig.h 头文件中 - 内联函数:若编译器支持内联函数,确保jmorecfg.h中的INLINE宏已定义
参考资料:install.txt