summary refs log tree commit diff
path: root/doc/zlib/deflateParams.3
blob: 8e770d4e417228c513400f3e5e882c82bab4d211 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
.Dd January 15, 2017
.Dt DEFLATEPARAMS 3
.Os
.
.Sh NAME
.Nm deflateParams
.Nd update compression level and strategy
.
.Sh LIBRARY
.Lb libz
.
.Sh SYNOPSIS
.In zlib.h
.Ft int
.Fn deflateParams "z_streamp strm" "int level" "int strategy"
.
.Sh DESCRIPTION
Dynamically update the compression level
and compression strategy.
The interpretation of
.Fa level
and
.Fa strategy
is as in
.Xr deflateInit2 3 .
This can be used to switch between compression
and straight copy of the input data,
or to switch to a different kind of input data
requiring a different strategy.
If the compression approach
(which is a function of the level)
or the strategy is changed,
and if any input has been consumed
in a previous
.Xr deflate 3
call,
then the input available so far is compressed
with the old level and strategy using
.Fn deflate strm Z_BLOCK .
There are three approaches
for the compression levels
0, 1..3, and 4..9 respectively.
The new level and strategy
will take effect at the next call of
.Xr deflate 3 .
.
.Pp
If a
.Fn deflate strm Z_BLOCK
is performed by
.Fn deflateParams ,
and it does not have enough output space to complete,
then the parameter change will not take effect.
In this case,
.Fn deflateParams
can be called again
with the same parameters
and more output space
to try again.
.
.Pp
In order to assure a change in the parameters
on the first try,
the deflate stream should be flushed using
.Xr deflate 3
with
.Dv Z_BLOCK
or other flush request until
.Fa strm.avail_out
is not zero,
before calling
.Fn deflateParams .
Then no more input data
should be provided before the
.Fn deflateParams
call.
If this is done,
the old level and strategy
will be applied
to the data compressed before
.Fn deflateParams ,
and the new level and strategy
will be applied
to the data compressed after
.Fn deflateParams .
.
.Sh RETURN VALUES
.Fn deflateParams
returns
.Dv Z_OK
on success,
.Dv Z_STREAM_ERROR
if the source stream state was inconsistent
or if a parameter was invalid,
or
.Dv Z_BUF_ERROR
if there was not enough output space
to complete the compression
of the available input data
before a change in the strategy or approach.
Note that in the case of a
.Dv Z_BUF_ERROR ,
the parameters are not changed.
A return value of
.Dv Z_BUF_ERROR
is not fatal,
in which case
.Fn deflateParams
can be retried
with more output space.
.
.Sh SEE ALSO
.Xr deflateInit2 3
.
.Sh HISTORY
This manual page was converted from
.In zlib.h
to mdoc format by
.An C. McEnroe Aq Mt june@causal.agency .
.
.Sh AUTHORS
.An Jean-loup Gailly Aq Mt jloup@gzip.org
.An Mark Adler Aq Mt madler@alumni.caltech.edu
lines in git-commentJune McEnroe 2021-09-08Document and install git-commentJune McEnroe 2021-09-08Add repeat and all options to git-commentJune McEnroe 2021-09-08Add group threshold to git-commentJune McEnroe