📄 ijl.pas
字号:
{
INTeL CORPORATION PROPRIETARY INFORMATION
This software is supplied under the terms of a license agreement or
nondisclosure agreement with Intel Corporation and may not be copied
or disclosed except in accordance with the terms of that agreement.
Copyright (c) 1998 Intel Corporation. All Rights Reserved.
Created: Teu 15-Oct-1998 14:8 by Lee Step
}
unit IJL;
{$Z+,A+}
//Caution! It must be 8-byte alignment structures.
{
Description: This file contains: definitions for data types, data
structures, error codes, and function prototypes used
in the Intel(R) JPEG Library (IJLib).
Version: 1.51
}
interface
uses
Windows;
type
PShort = ^Short;
IJL_INT64 = TLargeInteger;
IJL_UINT64 = TULargeInteger;
{
Macros/Constants
}
const
IJL_NONE = 0;
IJL_OTHER = 255;
JBUFSIZE = 4096; // Size of file I/O buffer (4K).
////////////////////////////////////////////////////////////////////////////
// Name: IJLibVersion
//
// Purpose: Stores library version info.
//
// Context:
//
// Fields:
// major -
// minor -
// build -
// Name -
// Version -
// InternalVersion -
// BuildDate -
// CallConv -
//
////////////////////////////////////////////////////////////////////////////
type
PIJLibVersion = ^TIJLibVersion;
TIJLibVersion = record
Major : Integer;
Minor : Integer;
Build : Integer;
Name : PChar;
Version : PChar;
InternalVersion : PChar;
BuildDate : PChar;
CallConv : PChar;
end;
////////////////////////////////////////////////////////////////////////////
// Name: IJL_RECT
//
// Purpose: Keep coordinates for rectangle region of image
//
// Context: Used to specify roi
//
// Fields:
//
////////////////////////////////////////////////////////////////////////////
PIJL_RECT = ^TIJL_RECT;
TIJL_RECT = record
Left : Longint;
Top : Longint;
Right : Longint;
Bottom : Longint;
end;
////////////////////////////////////////////////////////////////////////////
// Name: IJL_HANDLE
//
// Purpose: file handle
//
// Context: used internally
//
// Fields:
//
////////////////////////////////////////////////////////////////////////////
TIJL_HANDLE = Pointer;
{
Name: IJLIOTYPE
Purpose: Possible types of data read/write/other operations to be
performed by the functions IJL_Read and IJL_Write.
See the Developer's Guide for details on appropriate usage.
Fields:
IJL_JFILE_XXXXXXX Indicates JPEG data in a stdio file.
IJL_JBUFF_XXXXXXX Indicates JPEG data in an addressable buffer.
}
const
IJL_SETUP = -1;
type
TIJLIOType = (
// Read JPEG parameters (i.e., height, width, channels, sampling, etc.)
// from a JPEG bit stream.
IJL_JFILE_READPARAMS, // = 0
IJL_JBUFF_READPARAMS, // = 1
// Read a JPEG Interchange Format image.
IJL_JFILE_READWHOLEIMAGE, // = 2
IJL_JBUFF_READWHOLEIMAGE, // = 3
// Read JPEG tables from a JPEG Abbreviated Format bit stream.
IJL_JFILE_READHEADER, // = 4,
IJL_JBUFF_READHEADER, // = 5,
// Read image info from a JPEG Abbreviated Format bit stream.
IJL_JFILE_READENTROPY, // = 6
IJL_JBUFF_READENTROPY, // = 7
// Write an entire JFIF bit stream.
IJL_JFILE_WRITEWHOLEIMAGE, // = 8
IJL_JBUFF_WRITEWHOLEIMAGE, // = 9
// Write a JPEG Abbreviated Format bit stream.
IJL_JFILE_WRITEHEADER, // = 10
IJL_JBUFF_WRITEHEADER, // = 11
// Write image info to a JPEG Abbreviated Format bit stream.
IJL_JFILE_WRITEENTROPY, // = 12
IJL_JBUFF_WRITEENTROPY, // = 13
// Scaled Decoding Options:
// Reads a JPEG image scaled to 1/2 size.
IJL_JFILE_READONEHALF, // = 14
IJL_JBUFF_READONEHALF, // = 15
// Reads a JPEG image scaled to 1/4 size.
IJL_JFILE_READONEQUARTER, // = 16
IJL_JBUFF_READONEQUARTER, // = 17
// Reads a JPEG image scaled to 1/8 size.
IJL_JFILE_READONEEIGHTH, // = 18
IJL_JBUFF_READONEEIGHTH, // = 19
// Reads an embedded thumbnail from a JFIF bit stream.
IJL_JFILE_READTHUMBNAIL, // = 20
IJL_JBUFF_READTHUMBNAIL // = 21
);
////////////////////////////////////////////////////////////////////////////
// Name: IJL_COLOR
//
// Purpose: Possible color space formats.
//
// Note these formats do *not* necessarily denote
// the number of channels in the color space.
// There exists separate "channel" fields in the
// JPEG_CORE_PROPERTIES data structure specifically
// for indicating the number of channels in the
// JPEG and/or DIB color spaces.
//
// See the Developer's Guide for details on appropriate usage.
//
////////////////////////////////////////////////////////////////////////////
TIJL_COLOR = (
IJL_PAD1, // = 0 // Stub for Delphi, enum type start with 0
IJL_RGB, // = 1 // Red-Green-Blue color space.
IJL_BGR, // = 2 // Reversed channel ordering from IJL_RGB.
IJL_YCBCR, // = 3 // Luminance-Chrominance color space as defined
// by CCIR Recommendation 601.
IJL_G, // = 4 // Grayscale color space.
IJL_RGBA_FPX, // = 5 // FlashPix RGB 4 channel color space that
// has pre-multiplied opacity.
IJL_YCBCRA_FPX // = 6 // FlashPix YCbCr 4 channel color space that
// has pre-multiplied opacity.
//IJL_OTHER = 255 // Some other color space not defined by the IJL.
// (This means no color space conversion will
// be done by the IJL.)
);
////////////////////////////////////////////////////////////////////////////
// Name: IJL_JPGSUBSAMPLING
//
// Purpose: Possible subsampling formats used in the JPEG.
//
// See the Developer's Guide for details on appropriate usage.
//
////////////////////////////////////////////////////////////////////////////
TIJL_JPGSUBSAMPLING = (
IJL_PAD2, // = 0 // Stub for Delphi, enum type start with 0
IJL_411, // = 1, // Valid on a JPEG w/ 3 channels.
IJL_422, // = 2, // Valid on a JPEG w/ 3 channels.
IJL_4114, // = 3, // Valid on a JPEG w/ 4 channels.
IJL_4224 // = 4 // Valid on a JPEG w/ 4 channels.
);
////////////////////////////////////////////////////////////////////////////
// Name: IJL_DIBSUBSAMPLING
//
// Purpose: Possible subsampling formats used in the DIB.
//
// See the Developer's Guide for details on appropriate usage.
//
////////////////////////////////////////////////////////////////////////////
TIJL_DIBSUBSAMPLING = TIJL_JPGSUBSAMPLING;
////////////////////////////////////////////////////////////////////////////
// Name: HUFFMAN_TABLE
//
// Purpose: Stores Huffman table information in a fast-to-use format.
//
// Context: Used by Huffman encoder/decoder to access Huffman table
// data. Raw Huffman tables are formatted to fit this
// structure prior to use.
//
// Fields:
// huff_class 0 == DC Huffman or lossless table, 1 == AC table.
// ident Huffman table identifier, 0-3 valid (Extended Baseline).
// huffelem Huffman elements for codes <= 8 bits long;
// contains both zero run-length and symbol length in bits.
// huffval Huffman values for codes 9-16 bits in length.
// mincode Smallest Huffman code of length n.
// maxcode Largest Huffman code of length n.
// valptr Starting index into huffval[] for symbols of length k.
//
////////////////////////////////////////////////////////////////////////////
PHUFFMAN_TABLE = ^THUFFMAN_TABLE;
THUFFMAN_TABLE = record
huff_class : Integer;
ident : Integer;
huffelem : array [0..255] of UINT;
huffval : array [0..255] of SHORT;
mincode : array [0..16] of SHORT;
maxcode : array [0..17] of SHORT;
valptr : array [0..16] of SHORT;
end;
////////////////////////////////////////////////////////////////////////////
// Name: JPEGHuffTable
//
// Purpose: Stores pointers to JPEG-binary spec compliant
// Huffman table information.
//
// Context: Used by interface and table methods to specify encoder
// tables to generate and store JPEG images.
//
// Fields:
// bits Points to number of codes of length i (<=16 supported).
// vals Value associated with each Huffman code.
// hclass 0 == DC table, 1 == AC table.
// ident Specifies the identifier for this table.
// 0-3 for extended JPEG compliance.
//
////////////////////////////////////////////////////////////////////////////
PJPEGHuffTable = ^TJPEGHuffTable;
TJPEGHuffTable = record
bits : PUCHAR;
vals : PUCHAR;
hclass : UCHAR;
ident : UCHAR;
end;
////////////////////////////////////////////////////////////////////////////
// Name: QUANT_TABLE
//
// Purpose: Stores quantization table information in a
// fast-to-use format.
//
// Context: Used by quantizer/dequantizer to store formatted
// quantization tables.
//
// Fields:
// precision 0 => elements contains 8-bit elements,
// 1 => elements contains 16-bit elements.
// ident Table identifier (0-3).
// elements Pointer to 64 table elements + 16 extra elements to catch
// input data errors that may cause malfunction of the
// Huffman decoder.
// elarray Space for elements (see above) plus 8 bytes to align
// to a quadword boundary.
//
////////////////////////////////////////////////////////////////////////////
PQUANT_TABLE = ^TQUANT_TABLE;
TQUANT_TABLE = record
precision : Integer;
ident : Integer;
elements : PSHORT;
elarray : array [0..83] of Short;
end;
////////////////////////////////////////////////////////////////////////////
// Name: JPEGQuantTable
//
// Purpose: Stores pointers to JPEG binary spec compliant
// quantization table information.
//
// Context: Used by interface and table methods to specify encoder
// tables to generate and store JPEG images.
//
// Fields:
// quantizer Zig-zag order elements specifying quantization factors.
// ident Specifies identifier for this table.
// 0-3 valid for Extended Baseline JPEG compliance.
//
////////////////////////////////////////////////////////////////////////////
PJPEGQuantTable = ^TJPEGQuantTable;
TJPEGQuantTable = record
quantizer : PUCHAR;
ident : UCHAR;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -