1<html>
2
3<head>
4<title>libvorbisenc - function - vorbis_encode_ctl</title>
5<link rel=stylesheet href="style.css" type="text/css">
6</head>
7
8<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
9<table border=0 width=100%>
10<tr>
11<td><p class=tiny>libvorbisenc documentation</p></td>
12<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
13</tr>
14</table>
15
16<h1>vorbis_encode_ctl</h1>
17
18<p><i>declared in "vorbis/vorbisenc.h";</i></p>
19
20<p>This function implements a generic interface to miscellaneous
21encoder settings similar to the clasasic UNIX 'ioctl()' system call.
22Applications may use vorbis_encode_ctl() to query or set bitrate
23management or quality mode details by using one of several
24<i>request</i> arguments detailed below.  Vorbis_encode_ctl() must be
25called after one of <a
26href="vorbis_encode_setup_managed.html">vorbis_encode_setup_managed()</a>
27or <a
28href="vorbis_encode_setup_vbr.html">vorbis_encode_setup_vbr()</a>.
29When used to modify settings, vorbis_encode_ctl() must be called
30before <a
31href="vorbis_encode_setup_init.html">vorbis_encode_setup_init()</a>.
32
33<p>
34<br><br>
35<table border=0 color=black cellspacing=0 cellpadding=7>
36<tr bgcolor=#cccccc>
37	<td>
38<pre><b>
39extern int vorbis_encode_ctl(vorbis_info *vi,int request,void *arg);
40
41</b></pre>
42	</td>
43</tr>
44</table>
45
46<h3>Parameters</h3>
47<dl>
48<dt><i>vi</i></dt>
49<dd>Pointer to an initialized <a href="vorbis_info.html">vorbis_info</a> struct.</dd><p>
50<dt><i>request</i></dt>
51<dd>Specifies the desired action; possible request fields are detailed below.</dd><p>
52<dt><i>arg</i></dt>
53<dd>void * pointing to a data structure matching the request argument.</dd><p>
54</dl><p>
55
56<h3>Requests</h3>
57<dl>
58
59<dt><i>OV_ECTL_RATEMANAGE2_GET</i></dt>
60
61<dd><b>Argument: <a href="ovectl_ratemanage2_arg.html">struct
62ovectl_ratemanage2_arg *</a></b><br> Used to query the current
63encoder bitrate management setting.  Also used to initialize fields of
64an ovectl_ratemanage2_arg structure for use with
65OV_ECTL_RATEMANAGE2_SET.</dd><p>
66
67<dt><i>OV_ECTL_RATEMANAGE2_SET</i></dt>
68<dd><b>Argument: <a href="ovectl_ratemanage2_arg.html">struct
69ovectl_ratemanage2_arg *</a></b><br> Used to set the current
70encoder bitrate management settings to the values listed in the
71ovectl_ratemanage2_arg.  Passing a NULL pointer will disable bitrate
72management.
73</dd><p>
74
75<dt><i>OV_ECTL_LOWPASS_GET</i></dt>
76<dd><b>Argument: double *</b><br> Returns the current encoder hard-lowpass
77setting (kHz) in the double pointed to by arg.
78</dd><p>
79
80<dt><i>OV_ECTL_LOWPASS_SET</i></dt>
81<dd><b>Argument: double *</b><br> Sets the encoder hard-lowpass to the value
82(kHz) pointed to by arg. Valid lowpass settings range from 2 to 99.
83</dd><p>
84
85<dt><i>OV_ECTL_IBLOCK_GET</i></dt>
86<dd><b>Argument: double *</b><br> Returns the current encoder impulse
87block setting in the double pointed to by arg.</dd><p>
88
89<dt><i>OV_ECTL_IBLOCK_SET</i></dt> <dd><b>Argument: double *</b><br> Sets
90the impulse block bias to the the value pointed to by arg; valid range
91is -15.0 to 0.0 [default].  A negative impulse block bias will direct
92to encoder to use more bits when incoding short blocks that contain
93strong impulses, thus improving the accuracy of impulse encoding.</dd><p>
94
95<dt><i>OV_ECTL_COUPLING_GET</i></dt>
96<dd><b>Argument: int *</b><br>
97Returns the current encoder coupling enabled/disabled 
98setting in the int pointed to by arg.
99</dd><p>
100
101<dt><i>OV_ECTL_COUPLING_SET</i></dt> 
102<dd><b>Argument: int *</b><br>
103Enables/disables channel coupling in multichannel encoding according to arg.
104*arg of zero disables all channel coupling, nonzero allows the encoder to use
105coupling if a coupled mode is available for the input.  At present, coupling 
106is available for stereo and 5.1 input modes.
107</dd><p>
108
109<dt><i>OV_ECTL_RATEMANAGE_GET [deprecated]</i></dt>
110<dd>
111
112<b>Argument: <a href="ovectl_ratemanage_arg.html">struct
113ovectl_ratemanage_arg *</a></b><br> Old interface to querying bitrate
114management settings; deprecated after move to bit-reservoir style
115management in 1.1 rendered this interface partially obsolete.  Please
116use OV_ECTL_RATEMANGE2_GET instead.
117
118</dd><p>
119
120<dt><i>OV_ECTL_RATEMANAGE_SET [deprecated]</i></dt>
121<dd>
122<b>Argument: <a href="ovectl_ratemanage_arg.html">struct
123ovectl_ratemanage_arg *</a></b><br> Old interface to modifying bitrate
124management settings; deprecated after move to bit-reservoir style
125management in 1.1 rendered this interface partially obsolete.  Please
126use OV_ECTL_RATEMANGE2_SET instead.
127</dd><p>
128
129<dt><i>OV_ECTL_RATEMANAGE_AVG [deprecated]</i></dt>
130<dd>
131<b>Argument: <a href="ovectl_ratemanage_arg.html">struct
132ovectl_ratemanage_arg *</a></b><br> Old interface to setting
133average-bitrate encoding mode; deprecated after move to bit-reservoir
134style management in 1.1 rendered this interface partially obsolete.
135Please use OV_ECTL_RATEMANGE2_SET instead.  
136</dd><p>
137
138<dt><i>OV_ECTL_RATEMANAGE_HARD [deprecated]</i></dt>
139<dd>
140<b>Argument: <a href="ovectl_ratemanage_arg.html">struct
141ovectl_ratemanage_arg *</a></b><br> Old interface to setting
142bounded-bitrate encoding modes; deprecated after move to bit-reservoir
143style management in 1.1 rendered this interface partially obsolete.
144Please use OV_ECTL_RATEMANGE2_SET instead.  
145</dd><p>
146
147
148</dl>
149
150
151<h3>Return Values</h3> vorbis_encode_ctl() returns zero on success,
152placing any further return information (such as the result of a query)
153into the storage pointed to by <i>*arg</i>.  On error,
154vorbis_encode_ctl() may return one of the following error codes:
155
156<dl>
157
158<dt>OV_EINVAL</dt><dd>Invalid argument, or an attempt to modify a
159setting after calling <a
160href="vorbis_encode_setup_init.html">vorbis_encode_setup_init()</a>.</dd><p>
161
162<dt>OV_EIMPL</dt><dd>Unimplemented or unknown request</dd><p>
163
164</dl>
165
166<p>
167
168<br><br>
169<hr noshade>
170<table border=0 width=100%>
171<tr valign=top>
172<td><p class=tiny>copyright &copy; 2004 xiph.org</p></td>
173<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
174</tr><tr>
175<td><p class=tiny>libvorbisenc documentation</p></td>
176<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
177</tr>
178</table>
179
180
181</body>
182
183</html>
184