第一章 准备
一、需要以下的三个库
1. IJL 动态链接库 (IJL15.DLL),
2. IJL 引入库 (IJL15.LIB),
3. IJL 产品推销头文件 (IJL.H).
二、建立IJL应用程序的步骤
1. 在每一个将调用IJL函数的模块中包含头文件IJL.H
2. 在项目中增加IJL15.LIB
3. 编译程序。
第二章 结构描述
现在最多的JPEG模式是基本基线模式和扩展基线模式的连续离散余弦变换。IJL1.5完全支持这两种模式的编码及解码,
一、IJL 的I/O数据结构体系
1. 内存中含有一个常规的象素buffer.
2. 一个标准的I/O文件包含JPEG bit stream.
3. 一个内存buffer包含一个JPEG bit stream.
二、支持的数据格式
1、 Top-down or bottom-up pixel buffers.
在Windows中, device-independent bitmaps (DIBs) 数据在内存中有两种排列方式 bottom-up and top-down。bottom-up DIB, buffer 是从最底行的最左象素开始, 接着是次底行. 而顶行的数据是在buffer 的最后。GDI 使用的Bottom-up DIB。top-down DIB的排列顺序是颠倒的. 最顶行最左侧的象素是buffer王文格的第一个字节,而最底行的象素在buffer的最后。DirectDraw使用top-down DIBs。RGB DIBs, 图象的排列方式由 "/en-us/library/ms779712.aspx"BITMAPINFOHEADER结构的成员变量 biHeight 来指示。如 biHeight 是正数, 图象是bottom-up. 如果 biHeight是负数, 图象是top-down。YUV 格式的DIBs 总是top-down, biHeight 的符号被忽略。
2如何调整生物钟、象素缓冲区与自定义行尾填充。
3、使用普通象素缓冲之内的一个矩形。
4、从一个大的JPEG 图象中指定矩形解码。
5、JPEG文件交换格式(JFIF) 的编码和解码
IJL 提供JFIF files 的解码,JFIF 规格版本是1.01 and 1.02。编码是JFIF version 1.01.。IJL 也支持解码嵌入式的未压缩的缩略图,使用1 or 3 bytes/pixel 适应JFIF versions 1.01 and 1.02. 压缩的缩略图未被支持。
数据精度必须是每颜色通道 8-bits。
三、JPEG属性和数据存贮
IJL 的 “JPEG 属性” 包括全局的和图象属性的JPEG 信息。控制结构确定I/O 特性的处理选项,象二次抽样和颜色转换需求。
IJL 使用 JPEG_CORE_PROPERTIES 结构存放 JPEG 属性数据。这个结构被描述为两个部分,第一部份由一组封包的共用库参数组成,另一部份由低级的嵌入的结构组成。Figure 3-2 与 附件B - Data Structure and Type Definitions).
用户必须尊循以下的两个JPEG_CORE_PROPERTIES规则:
1. 用户必须提供(allocate) JPEG_CORE_PROPERTIES 数据结构。
2. 同样的 JPEG_CORE_PROPERTIES 数据结构可能被一连串的JPEG encodings 和/或decodings 在初始化时和清理时再生。
JPEG_PROPERTIES 是低级的数据结构且它包含一个在JPEG_CORE_PROPERTIES 中每个高级数据结构的复本及一些附加字段。IJL内部使用JPEG_PROPERTIES, 而不是JPEG_CORE_PROPERTIES, 所以这个结构隔离了内部的变量。
对于高级用户醉驾撞死人JPEG_PROPERTIES 数据结构可能会使用一些扩充的接口性能。例如:用户可能要自定义的Huffman 表或 量化表(quantization tables) 直接至JPEG_PROPERTIES, 而越过默认表(Chapter 7, Advanced IJL Features 有更多的信息)。
JPEG_CORE_PROPERTIES and JPEG_PROPERTIES数据结构的默认值在头文件IJL.H中的注释中
四、多线程支持
JPEG_CORE_PROPERTIES 被设计在局部为单线程。是 “ 锁定 ” 的无参数将允许多个线程访问相同的 JPEG_CORE_PROPERTIES 结构。 但是,所有的实现细节,IJL 允许多个 JPEG_CORE_PROPERTIES 存储和代码访问由多个线程。
第三章 接口详述
IJL 提供标准C的函数,其模仿简单的读/写栈来建立JPEG_CORE_PROPERTIES雨后散步数据结构。
JPEG_CORE_PROPERTIES 的内部函数负责初始化、释放内存,及与IJL交换数据及参数。
IJL函数调用失败时返回一个错误码;调用成功返回的是正的(IJL_OK, IJL_INTERRUPT_OK, IJL_ROI_OK) 成功码。了解详情参看 Appendix B - Data Structure and Type Definitions。 转换错误码至一个文本描述,使用函数 ijlErrorStr()。
函数 ijlGetLibVersion() 返回IJL库的版本及其它相关信息。
注意,ijlErrorStr()和ijlGetLibVersion() 函数返回的是一个指向静态变量的指针,所以应用程序不需要释放这些指针。
The Intel® JPEG Library Application Programming Interface
/
/ 初始化 IJL.
IJLERR ijlInit (JPEG_CORE_PROPERTIES *jcprops);
// Clean up the IJL.
IJLERR ijlFree (JPEG_CORE_PROPERTIES *jcprops);
// U the IJL to read data from a buffer or a file.
IJLERR ijlRead (JPEG_CORE_PROPERTIES *jcprops, IJLIOTYPE iotype);
// U the IJL to write data into a buffer or a file.
IJLERR ijlWrite (JPEG_CORE_PROPERTIES *jcprops, IJLIOTYPE iotype);
// Return the version number of the IJL.
const IJLibVersion* ijlGetLibVersion( );
// Return a pointer to a string with error description.
const char* ijlErrorStr(IJLERR code);
此段描述设计及执行一些IJL的共用特性,及一些例子。
一、初始化
在使用之前,IJL必须初始化,使用ijlInit( )完成初始化。在每一个分配JPEG_CORE_PROPERTIES 斑马的英语怎么读数据结构的时候,只能进行一次初始化。
如果一个程序需要调用多个编、解码函数,应用程序需要在任一调用之前调用ijlInit( )更多的初始化需要在每个编、解码调用之间进行。
使用ijlFree( )释放 JPEG_CORE_PROPERTIES 且必须与初始化一一对应。
二、释放
用ijlFree( )释放内存及相关的系统资源。
严字成语
三、读数据
使用ijlRead(JPEG_CORE_PROPERTIES *jcprops, IJLIOTYPE iotype)函数访问JPEG的压缩数据。第二个参数用来指定在解码期间的JPEG的数据单元(如:一个文件或一个缓存区),访问模式(mode of access),及缩放比例。
有如下两种约定:XXXX 代表访问模式
1. IJL_JBUFF_XXXX (表示JPEG数据是一个缓存).
2. IJL_JFILE_XXXX(表示JPEG数据是一个标准文件).
读数据时,访问模式必须是: READPARAMS, READHEADER,READENTROPY, READWHOLEIMAGE,,READONEHALF, READONEQUARTER,READONEEIGHTH, READTHUMBNAIL。
IJLIOTYPE | 描述 |
IJL_JXXXX_READPARAMS | 表示读JPEG 参数 如:高,宽,通道数量,二次抽样等。, 例如如下的分析: SOI | [tables/misc] like APPn and DQT | SOF | [tables/misc] like DHT | stops at SOS Note: bit stream must start with SOI marker. |
IJL_JXXXX_READHEADER | 表示读一些特征数据,如:霍夫曼表,量化表,其它杂项。 例如: SOI | [tables/misc] | EOI (or stops at SOF or SOS) Note: bit stream must start with SOI marker. |
IJL_JXXXX_READENTROPY | 表示读压缩图片的格式。与 READWHOLEIMAGE相同,除了位流可能包含的特征表。. For example: SOI | [tables/misc] | SOF [tables/misc] like DHT | SOS | EOI Note: in this ca only (READENTROPY), APP0 gments are skipped over. 文化建设实施方案 |
IJL_JXXXX_READWHOLEIMAGE | 表示读压缩图片数据的交换格式,如:整个的JPEG位流。 例如: SOI | [tables/misc] like APPn and DQT | SOF [tables/misc] like DHT | SOS | EOI |
IJL_JXXXX_READONEHALF | 图象解码比例是½ (See READENTROPY). |
IJL_JXXXX_READONEQUARTER | 图象解码比例是¼. (See READENTROPY). |
IJL_JXXXX_READONEEIGHTH | 图象解码比例是1/8 (See READENTROPY). |
IJL_JXXXX_READTHUMBNAIL | 试图解码在数据流中嵌入的缩略图 (See READPARAMS). |
| |
| |
READPARAMS 被用来确定JPEG 的高和宽,用以分配输出的缓存或显示引擎。然后,读其余的数据使用 READWHOLEIMAGE or READENTROPY。