The deflateInit2_() function shall initialize the compression system. On entry, strm shall refer to a user supplied z_stream object (a z_stream_s structure). The following fields shall be set on entry:
a pointer to an alloc_func function, used to allocate state information.
If this is
NULL, a default allocation function will be used.
a pointer to a free_func function, used to free memory allocated by the
zalloc function. If this is
a default free function will be used.
alloc_func is not
opaque is a user supplied pointer to data that will be passed to the
If the version requested is not compatible with the version
implemented, or if the size of the z_stream_s structure
provided in stream_size does not match the size in the library
implementation, deflateInit2_() shall fail, and return
The level supplied shall be a value between
9, or the value
Z_DEFAULT_COMPRESSION. A level
1 requests the highest speed, while a level
9 requests the highest compression.
A level of
0 indicates that no
compression should be used, and the output shall be the same as the input.
The method selects the compression algorithm to use. LSB
conforming implementation shall support the
and may support other implementation defined methods.
The windowBits parameter shall be a base 2 logarithm of the window
size to use, and shall be a value between
A smaller value will use less memory, but will result in a poorer compression ratio,
while a higher value will
give better compression but utilize more memory.
The memLevel parameter specifies how much memory to use for the
internal state. The value of memLevel shall be between
MAX_MEM_LEVEL. Smaller values
use less memory but are slower, while higher values use more memory to gain compression speed.
The strategy parameter selects the compression strategy to use:
use the system default compression strategy.
is particularly appropriate for text data.
use a compression strategy tuned for data consisting largely of small values with a
fairly random distribution.
Z_FILTERED uses more Huffman encoding
and less string matching than
force Huffman encoding only, with no string match.
The deflateInit2_() function is not in the source standard; it is only in the binary standard. Source applications should use the deflateInit2() macro.
On success, the deflateInit2_() function shall return
Otherwise, deflateInit2_() shall return
a value as described below to indicate the error.
On error, deflateInit2_() shall return one of the following error indicators:
Insufficient memory available.
The version requested is not compatible with the library version, or the z_stream size differs from that used by the library.
In addition, the
msg field of the strm
may be set to an error message.