deflateInit2_ -- initialize compression system


#include <zlib.h>

int deflateInit2_ (z_streamp strm, int level, int method, int windowBits, int memLevel, int strategy, char * version, int stream_size);


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 NULL a default free function will be used.


If alloc_func is not NULL, opaque is a user supplied pointer to data that will be passed to the alloc_func and free_func functions.

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 Z_VERSION_ERROR.

The level supplied shall be a value between 0 and 9, or the value Z_DEFAULT_COMPRESSION. A level of 1 requests the highest speed, while a level of 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 Z_DEFLATED method, 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 8 and 15. 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 1 and 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. Z_DEFAULT_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 Z_DEFAULT_STRATEGY.


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.

Return Value

On success, the deflateInit2_() function shall return Z_OK. Otherwise, deflateInit2_() shall return a value as described below to indicate the error.


On error, deflateInit2_() shall return one of the following error indicators:


Invalid parameter.


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.