rev |
line source |
nuclear@0
|
1 /********************************************************************
|
nuclear@0
|
2 * *
|
nuclear@0
|
3 * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
|
nuclear@0
|
4 * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
|
nuclear@0
|
5 * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
|
nuclear@0
|
6 * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
|
nuclear@0
|
7 * *
|
nuclear@0
|
8 * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
|
nuclear@0
|
9 * by the Xiph.Org Foundation http://www.xiph.org/ *
|
nuclear@0
|
10 * *
|
nuclear@0
|
11 ********************************************************************
|
nuclear@0
|
12
|
nuclear@0
|
13 function: vorbis encode-engine setup
|
nuclear@0
|
14 last mod: $Id: vorbisenc.h 17021 2010-03-24 09:29:41Z xiphmont $
|
nuclear@0
|
15
|
nuclear@0
|
16 ********************************************************************/
|
nuclear@0
|
17
|
nuclear@0
|
18 /** \file
|
nuclear@0
|
19 * Libvorbisenc is a convenient API for setting up an encoding
|
nuclear@0
|
20 * environment using libvorbis. Libvorbisenc encapsulates the
|
nuclear@0
|
21 * actions needed to set up the encoder properly.
|
nuclear@0
|
22 */
|
nuclear@0
|
23
|
nuclear@0
|
24 #ifndef _OV_ENC_H_
|
nuclear@0
|
25 #define _OV_ENC_H_
|
nuclear@0
|
26
|
nuclear@0
|
27 #ifdef __cplusplus
|
nuclear@0
|
28 extern "C"
|
nuclear@0
|
29 {
|
nuclear@0
|
30 #endif /* __cplusplus */
|
nuclear@0
|
31
|
nuclear@0
|
32 #include "codec.h"
|
nuclear@0
|
33
|
nuclear@0
|
34 /**
|
nuclear@0
|
35 * This is the primary function within libvorbisenc for setting up managed
|
nuclear@0
|
36 * bitrate modes.
|
nuclear@0
|
37 *
|
nuclear@0
|
38 * Before this function is called, the \ref vorbis_info
|
nuclear@0
|
39 * struct should be initialized by using vorbis_info_init() from the libvorbis
|
nuclear@0
|
40 * API. After encoding, vorbis_info_clear() should be called.
|
nuclear@0
|
41 *
|
nuclear@0
|
42 * The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set
|
nuclear@0
|
43 * constraints for the encoded file. This function uses these settings to
|
nuclear@0
|
44 * select the appropriate encoding mode and set it up.
|
nuclear@0
|
45 *
|
nuclear@0
|
46 * \param vi Pointer to an initialized \ref vorbis_info struct.
|
nuclear@0
|
47 * \param channels The number of channels to be encoded.
|
nuclear@0
|
48 * \param rate The sampling rate of the source audio.
|
nuclear@0
|
49 * \param max_bitrate Desired maximum bitrate (limit). -1 indicates unset.
|
nuclear@0
|
50 * \param nominal_bitrate Desired average, or central, bitrate. -1 indicates unset.
|
nuclear@0
|
51 * \param min_bitrate Desired minimum bitrate. -1 indicates unset.
|
nuclear@0
|
52 *
|
nuclear@0
|
53 * \return Zero for success, and negative values for failure.
|
nuclear@0
|
54 *
|
nuclear@0
|
55 * \retval 0 Success.
|
nuclear@0
|
56 * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption.
|
nuclear@0
|
57 * \retval OV_EINVAL Invalid setup request, eg, out of range argument.
|
nuclear@0
|
58 * \retval OV_EIMPL Unimplemented mode; unable to comply with bitrate request.
|
nuclear@0
|
59 */
|
nuclear@0
|
60 extern int vorbis_encode_init(vorbis_info *vi,
|
nuclear@0
|
61 long channels,
|
nuclear@0
|
62 long rate,
|
nuclear@0
|
63
|
nuclear@0
|
64 long max_bitrate,
|
nuclear@0
|
65 long nominal_bitrate,
|
nuclear@0
|
66 long min_bitrate);
|
nuclear@0
|
67
|
nuclear@0
|
68 /**
|
nuclear@0
|
69 * This function performs step-one of a three-step bitrate-managed encode
|
nuclear@0
|
70 * setup. It functions similarly to the one-step setup performed by \ref
|
nuclear@0
|
71 * vorbis_encode_init but allows an application to make further encode setup
|
nuclear@0
|
72 * tweaks using \ref vorbis_encode_ctl before finally calling \ref
|
nuclear@0
|
73 * vorbis_encode_setup_init to complete the setup process.
|
nuclear@0
|
74 *
|
nuclear@0
|
75 * Before this function is called, the \ref vorbis_info struct should be
|
nuclear@0
|
76 * initialized by using vorbis_info_init() from the libvorbis API. After
|
nuclear@0
|
77 * encoding, vorbis_info_clear() should be called.
|
nuclear@0
|
78 *
|
nuclear@0
|
79 * The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set
|
nuclear@0
|
80 * constraints for the encoded file. This function uses these settings to
|
nuclear@0
|
81 * select the appropriate encoding mode and set it up.
|
nuclear@0
|
82 *
|
nuclear@0
|
83 * \param vi Pointer to an initialized vorbis_info struct.
|
nuclear@0
|
84 * \param channels The number of channels to be encoded.
|
nuclear@0
|
85 * \param rate The sampling rate of the source audio.
|
nuclear@0
|
86 * \param max_bitrate Desired maximum bitrate (limit). -1 indicates unset.
|
nuclear@0
|
87 * \param nominal_bitrate Desired average, or central, bitrate. -1 indicates unset.
|
nuclear@0
|
88 * \param min_bitrate Desired minimum bitrate. -1 indicates unset.
|
nuclear@0
|
89 *
|
nuclear@0
|
90 * \return Zero for success, and negative for failure.
|
nuclear@0
|
91 *
|
nuclear@0
|
92 * \retval 0 Success
|
nuclear@0
|
93 * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption.
|
nuclear@0
|
94 * \retval OV_EINVAL Invalid setup request, eg, out of range argument.
|
nuclear@0
|
95 * \retval OV_EIMPL Unimplemented mode; unable to comply with bitrate request.
|
nuclear@0
|
96 */
|
nuclear@0
|
97 extern int vorbis_encode_setup_managed(vorbis_info *vi,
|
nuclear@0
|
98 long channels,
|
nuclear@0
|
99 long rate,
|
nuclear@0
|
100
|
nuclear@0
|
101 long max_bitrate,
|
nuclear@0
|
102 long nominal_bitrate,
|
nuclear@0
|
103 long min_bitrate);
|
nuclear@0
|
104
|
nuclear@0
|
105 /**
|
nuclear@0
|
106 * This function performs step-one of a three-step variable bitrate
|
nuclear@0
|
107 * (quality-based) encode setup. It functions similarly to the one-step setup
|
nuclear@0
|
108 * performed by \ref vorbis_encode_init_vbr() but allows an application to
|
nuclear@0
|
109 * make further encode setup tweaks using \ref vorbis_encode_ctl() before
|
nuclear@0
|
110 * finally calling \ref vorbis_encode_setup_init to complete the setup
|
nuclear@0
|
111 * process.
|
nuclear@0
|
112 *
|
nuclear@0
|
113 * Before this function is called, the \ref vorbis_info struct should be
|
nuclear@0
|
114 * initialized by using \ref vorbis_info_init() from the libvorbis API. After
|
nuclear@0
|
115 * encoding, vorbis_info_clear() should be called.
|
nuclear@0
|
116 *
|
nuclear@0
|
117 * \param vi Pointer to an initialized vorbis_info struct.
|
nuclear@0
|
118 * \param channels The number of channels to be encoded.
|
nuclear@0
|
119 * \param rate The sampling rate of the source audio.
|
nuclear@0
|
120 * \param quality Desired quality level, currently from -0.1 to 1.0 (lo to hi).
|
nuclear@0
|
121 *
|
nuclear@0
|
122 * \return Zero for success, and negative values for failure.
|
nuclear@0
|
123 *
|
nuclear@0
|
124 * \retval 0 Success
|
nuclear@0
|
125 * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption.
|
nuclear@0
|
126 * \retval OV_EINVAL Invalid setup request, eg, out of range argument.
|
nuclear@0
|
127 * \retval OV_EIMPL Unimplemented mode; unable to comply with quality level request.
|
nuclear@0
|
128 */
|
nuclear@0
|
129 extern int vorbis_encode_setup_vbr(vorbis_info *vi,
|
nuclear@0
|
130 long channels,
|
nuclear@0
|
131 long rate,
|
nuclear@0
|
132
|
nuclear@0
|
133 float quality
|
nuclear@0
|
134 );
|
nuclear@0
|
135
|
nuclear@0
|
136 /**
|
nuclear@0
|
137 * This is the primary function within libvorbisenc for setting up variable
|
nuclear@0
|
138 * bitrate ("quality" based) modes.
|
nuclear@0
|
139 *
|
nuclear@0
|
140 *
|
nuclear@0
|
141 * Before this function is called, the vorbis_info struct should be
|
nuclear@0
|
142 * initialized by using vorbis_info_init() from the libvorbis API. After
|
nuclear@0
|
143 * encoding, vorbis_info_clear() should be called.
|
nuclear@0
|
144 *
|
nuclear@0
|
145 * \param vi Pointer to an initialized vorbis_info struct.
|
nuclear@0
|
146 * \param channels The number of channels to be encoded.
|
nuclear@0
|
147 * \param rate The sampling rate of the source audio.
|
nuclear@0
|
148 * \param base_quality Desired quality level, currently from -0.1 to 1.0 (lo to hi).
|
nuclear@0
|
149 *
|
nuclear@0
|
150 *
|
nuclear@0
|
151 * \return Zero for success, or a negative number for failure.
|
nuclear@0
|
152 *
|
nuclear@0
|
153 * \retval 0 Success
|
nuclear@0
|
154 * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption.
|
nuclear@0
|
155 * \retval OV_EINVAL Invalid setup request, eg, out of range argument.
|
nuclear@0
|
156 * \retval OV_EIMPL Unimplemented mode; unable to comply with quality level request.
|
nuclear@0
|
157 */
|
nuclear@0
|
158 extern int vorbis_encode_init_vbr(vorbis_info *vi,
|
nuclear@0
|
159 long channels,
|
nuclear@0
|
160 long rate,
|
nuclear@0
|
161
|
nuclear@0
|
162 float base_quality
|
nuclear@0
|
163 );
|
nuclear@0
|
164
|
nuclear@0
|
165 /**
|
nuclear@0
|
166 * This function performs the last stage of three-step encoding setup, as
|
nuclear@0
|
167 * described in the API overview under managed bitrate modes.
|
nuclear@0
|
168 *
|
nuclear@0
|
169 * Before this function is called, the \ref vorbis_info struct should be
|
nuclear@0
|
170 * initialized by using vorbis_info_init() from the libvorbis API, one of
|
nuclear@0
|
171 * \ref vorbis_encode_setup_managed() or \ref vorbis_encode_setup_vbr() called to
|
nuclear@0
|
172 * initialize the high-level encoding setup, and \ref vorbis_encode_ctl()
|
nuclear@0
|
173 * called if necessary to make encoding setup changes.
|
nuclear@0
|
174 * vorbis_encode_setup_init() finalizes the highlevel encoding structure into
|
nuclear@0
|
175 * a complete encoding setup after which the application may make no further
|
nuclear@0
|
176 * setup changes.
|
nuclear@0
|
177 *
|
nuclear@0
|
178 * After encoding, vorbis_info_clear() should be called.
|
nuclear@0
|
179 *
|
nuclear@0
|
180 * \param vi Pointer to an initialized \ref vorbis_info struct.
|
nuclear@0
|
181 *
|
nuclear@0
|
182 * \return Zero for success, and negative values for failure.
|
nuclear@0
|
183 *
|
nuclear@0
|
184 * \retval 0 Success.
|
nuclear@0
|
185 * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption.
|
nuclear@0
|
186 *
|
nuclear@0
|
187 * \retval OV_EINVAL Attempt to use vorbis_encode_setup_init() without first
|
nuclear@0
|
188 * calling one of vorbis_encode_setup_managed() or vorbis_encode_setup_vbr() to
|
nuclear@0
|
189 * initialize the high-level encoding setup
|
nuclear@0
|
190 *
|
nuclear@0
|
191 */
|
nuclear@0
|
192 extern int vorbis_encode_setup_init(vorbis_info *vi);
|
nuclear@0
|
193
|
nuclear@0
|
194 /**
|
nuclear@0
|
195 * This function implements a generic interface to miscellaneous encoder
|
nuclear@0
|
196 * settings similar to the classic UNIX 'ioctl()' system call. Applications
|
nuclear@0
|
197 * may use vorbis_encode_ctl() to query or set bitrate management or quality
|
nuclear@0
|
198 * mode details by using one of several \e request arguments detailed below.
|
nuclear@0
|
199 * vorbis_encode_ctl() must be called after one of
|
nuclear@0
|
200 * vorbis_encode_setup_managed() or vorbis_encode_setup_vbr(). When used
|
nuclear@0
|
201 * to modify settings, \ref vorbis_encode_ctl() must be called before \ref
|
nuclear@0
|
202 * vorbis_encode_setup_init().
|
nuclear@0
|
203 *
|
nuclear@0
|
204 * \param vi Pointer to an initialized vorbis_info struct.
|
nuclear@0
|
205 *
|
nuclear@0
|
206 * \param number Specifies the desired action; See \ref encctlcodes "the list
|
nuclear@0
|
207 * of available requests".
|
nuclear@0
|
208 *
|
nuclear@0
|
209 * \param arg void * pointing to a data structure matching the request
|
nuclear@0
|
210 * argument.
|
nuclear@0
|
211 *
|
nuclear@0
|
212 * \retval 0 Success. Any further return information (such as the result of a
|
nuclear@0
|
213 * query) is placed into the storage pointed to by *arg.
|
nuclear@0
|
214 *
|
nuclear@0
|
215 * \retval OV_EINVAL Invalid argument, or an attempt to modify a setting after
|
nuclear@0
|
216 * calling vorbis_encode_setup_init().
|
nuclear@0
|
217 *
|
nuclear@0
|
218 * \retval OV_EIMPL Unimplemented or unknown request
|
nuclear@0
|
219 */
|
nuclear@0
|
220 extern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg);
|
nuclear@0
|
221
|
nuclear@0
|
222 /**
|
nuclear@0
|
223 * \deprecated This is a deprecated interface. Please use vorbis_encode_ctl()
|
nuclear@0
|
224 * with the \ref ovectl_ratemanage2_arg struct and \ref
|
nuclear@0
|
225 * OV_ECTL_RATEMANAGE2_GET and \ref OV_ECTL_RATEMANAGE2_SET calls in new code.
|
nuclear@0
|
226 *
|
nuclear@0
|
227 * The \ref ovectl_ratemanage_arg structure is used with vorbis_encode_ctl()
|
nuclear@0
|
228 * and the \ref OV_ECTL_RATEMANAGE_GET, \ref OV_ECTL_RATEMANAGE_SET, \ref
|
nuclear@0
|
229 * OV_ECTL_RATEMANAGE_AVG, \ref OV_ECTL_RATEMANAGE_HARD calls in order to
|
nuclear@0
|
230 * query and modify specifics of the encoder's bitrate management
|
nuclear@0
|
231 * configuration.
|
nuclear@0
|
232 */
|
nuclear@0
|
233 struct ovectl_ratemanage_arg {
|
nuclear@0
|
234 int management_active; /**< nonzero if bitrate management is active*/
|
nuclear@0
|
235 /** hard lower limit (in kilobits per second) below which the stream bitrate
|
nuclear@0
|
236 will never be allowed for any given bitrate_hard_window seconds of time.*/
|
nuclear@0
|
237 long bitrate_hard_min;
|
nuclear@0
|
238 /** hard upper limit (in kilobits per second) above which the stream bitrate
|
nuclear@0
|
239 will never be allowed for any given bitrate_hard_window seconds of time.*/
|
nuclear@0
|
240 long bitrate_hard_max;
|
nuclear@0
|
241 /** the window period (in seconds) used to regulate the hard bitrate minimum
|
nuclear@0
|
242 and maximum*/
|
nuclear@0
|
243 double bitrate_hard_window;
|
nuclear@0
|
244 /** soft lower limit (in kilobits per second) below which the average bitrate
|
nuclear@0
|
245 tracker will start nudging the bitrate higher.*/
|
nuclear@0
|
246 long bitrate_av_lo;
|
nuclear@0
|
247 /** soft upper limit (in kilobits per second) above which the average bitrate
|
nuclear@0
|
248 tracker will start nudging the bitrate lower.*/
|
nuclear@0
|
249 long bitrate_av_hi;
|
nuclear@0
|
250 /** the window period (in seconds) used to regulate the average bitrate
|
nuclear@0
|
251 minimum and maximum.*/
|
nuclear@0
|
252 double bitrate_av_window;
|
nuclear@0
|
253 /** Regulates the relative centering of the average and hard windows; in
|
nuclear@0
|
254 libvorbis 1.0 and 1.0.1, the hard window regulation overlapped but
|
nuclear@0
|
255 followed the average window regulation. In libvorbis 1.1 a bit-reservoir
|
nuclear@0
|
256 interface replaces the old windowing interface; the older windowing
|
nuclear@0
|
257 interface is simulated and this field has no effect.*/
|
nuclear@0
|
258 double bitrate_av_window_center;
|
nuclear@0
|
259 };
|
nuclear@0
|
260
|
nuclear@0
|
261 /**
|
nuclear@0
|
262 * \name struct ovectl_ratemanage2_arg
|
nuclear@0
|
263 *
|
nuclear@0
|
264 * The ovectl_ratemanage2_arg structure is used with vorbis_encode_ctl() and
|
nuclear@0
|
265 * the OV_ECTL_RATEMANAGE2_GET and OV_ECTL_RATEMANAGE2_SET calls in order to
|
nuclear@0
|
266 * query and modify specifics of the encoder's bitrate management
|
nuclear@0
|
267 * configuration.
|
nuclear@0
|
268 *
|
nuclear@0
|
269 */
|
nuclear@0
|
270 struct ovectl_ratemanage2_arg {
|
nuclear@0
|
271 int management_active; /**< nonzero if bitrate management is active */
|
nuclear@0
|
272 /** Lower allowed bitrate limit in kilobits per second */
|
nuclear@0
|
273 long bitrate_limit_min_kbps;
|
nuclear@0
|
274 /** Upper allowed bitrate limit in kilobits per second */
|
nuclear@0
|
275 long bitrate_limit_max_kbps;
|
nuclear@0
|
276 long bitrate_limit_reservoir_bits; /**<Size of the bitrate reservoir in bits */
|
nuclear@0
|
277 /** Regulates the bitrate reservoir's preferred fill level in a range from 0.0
|
nuclear@0
|
278 * to 1.0; 0.0 tries to bank bits to buffer against future bitrate spikes, 1.0
|
nuclear@0
|
279 * buffers against future sudden drops in instantaneous bitrate. Default is
|
nuclear@0
|
280 * 0.1
|
nuclear@0
|
281 */
|
nuclear@0
|
282 double bitrate_limit_reservoir_bias;
|
nuclear@0
|
283 /** Average bitrate setting in kilobits per second */
|
nuclear@0
|
284 long bitrate_average_kbps;
|
nuclear@0
|
285 /** Slew rate limit setting for average bitrate adjustment; sets the minimum
|
nuclear@0
|
286 * time in seconds the bitrate tracker may swing from one extreme to the
|
nuclear@0
|
287 * other when boosting or damping average bitrate.
|
nuclear@0
|
288 */
|
nuclear@0
|
289 double bitrate_average_damping;
|
nuclear@0
|
290 };
|
nuclear@0
|
291
|
nuclear@0
|
292
|
nuclear@0
|
293 /**
|
nuclear@0
|
294 * \name vorbis_encode_ctl() codes
|
nuclear@0
|
295 *
|
nuclear@0
|
296 * \anchor encctlcodes
|
nuclear@0
|
297 *
|
nuclear@0
|
298 * These values are passed as the \c number parameter of vorbis_encode_ctl().
|
nuclear@0
|
299 * The type of the referent of that function's \c arg pointer depends on these
|
nuclear@0
|
300 * codes.
|
nuclear@0
|
301 */
|
nuclear@0
|
302 /*@{*/
|
nuclear@0
|
303
|
nuclear@0
|
304 /**
|
nuclear@0
|
305 * Query the current encoder bitrate management setting.
|
nuclear@0
|
306 *
|
nuclear@0
|
307 *Argument: <tt>struct ovectl_ratemanage2_arg *</tt>
|
nuclear@0
|
308 *
|
nuclear@0
|
309 * Used to query the current encoder bitrate management setting. Also used to
|
nuclear@0
|
310 * initialize fields of an ovectl_ratemanage2_arg structure for use with
|
nuclear@0
|
311 * \ref OV_ECTL_RATEMANAGE2_SET.
|
nuclear@0
|
312 */
|
nuclear@0
|
313 #define OV_ECTL_RATEMANAGE2_GET 0x14
|
nuclear@0
|
314
|
nuclear@0
|
315 /**
|
nuclear@0
|
316 * Set the current encoder bitrate management settings.
|
nuclear@0
|
317 *
|
nuclear@0
|
318 * Argument: <tt>struct ovectl_ratemanage2_arg *</tt>
|
nuclear@0
|
319 *
|
nuclear@0
|
320 * Used to set the current encoder bitrate management settings to the values
|
nuclear@0
|
321 * listed in the ovectl_ratemanage2_arg. Passing a NULL pointer will disable
|
nuclear@0
|
322 * bitrate management.
|
nuclear@0
|
323 */
|
nuclear@0
|
324 #define OV_ECTL_RATEMANAGE2_SET 0x15
|
nuclear@0
|
325
|
nuclear@0
|
326 /**
|
nuclear@0
|
327 * Returns the current encoder hard-lowpass setting (kHz) in the double
|
nuclear@0
|
328 * pointed to by arg.
|
nuclear@0
|
329 *
|
nuclear@0
|
330 * Argument: <tt>double *</tt>
|
nuclear@0
|
331 */
|
nuclear@0
|
332 #define OV_ECTL_LOWPASS_GET 0x20
|
nuclear@0
|
333
|
nuclear@0
|
334 /**
|
nuclear@0
|
335 * Sets the encoder hard-lowpass to the value (kHz) pointed to by arg. Valid
|
nuclear@0
|
336 * lowpass settings range from 2 to 99.
|
nuclear@0
|
337 *
|
nuclear@0
|
338 * Argument: <tt>double *</tt>
|
nuclear@0
|
339 */
|
nuclear@0
|
340 #define OV_ECTL_LOWPASS_SET 0x21
|
nuclear@0
|
341
|
nuclear@0
|
342 /**
|
nuclear@0
|
343 * Returns the current encoder impulse block setting in the double pointed
|
nuclear@0
|
344 * to by arg.
|
nuclear@0
|
345 *
|
nuclear@0
|
346 * Argument: <tt>double *</tt>
|
nuclear@0
|
347 */
|
nuclear@0
|
348 #define OV_ECTL_IBLOCK_GET 0x30
|
nuclear@0
|
349
|
nuclear@0
|
350 /**
|
nuclear@0
|
351 * Sets the impulse block bias to the the value pointed to by arg.
|
nuclear@0
|
352 *
|
nuclear@0
|
353 * Argument: <tt>double *</tt>
|
nuclear@0
|
354 *
|
nuclear@0
|
355 * Valid range is -15.0 to 0.0 [default]. A negative impulse block bias will
|
nuclear@0
|
356 * direct to encoder to use more bits when incoding short blocks that contain
|
nuclear@0
|
357 * strong impulses, thus improving the accuracy of impulse encoding.
|
nuclear@0
|
358 */
|
nuclear@0
|
359 #define OV_ECTL_IBLOCK_SET 0x31
|
nuclear@0
|
360
|
nuclear@0
|
361 /**
|
nuclear@0
|
362 * Returns the current encoder coupling setting in the int pointed
|
nuclear@0
|
363 * to by arg.
|
nuclear@0
|
364 *
|
nuclear@0
|
365 * Argument: <tt>int *</tt>
|
nuclear@0
|
366 */
|
nuclear@0
|
367 #define OV_ECTL_COUPLING_GET 0x40
|
nuclear@0
|
368
|
nuclear@0
|
369 /**
|
nuclear@0
|
370 * Enables/disables channel coupling in multichannel encoding according to arg.
|
nuclear@0
|
371 *
|
nuclear@0
|
372 * Argument: <tt>int *</tt>
|
nuclear@0
|
373 *
|
nuclear@0
|
374 * Zero disables channel coupling for multichannel inputs, nonzer enables
|
nuclear@0
|
375 * channel coupling. Setting has no effect on monophonic encoding or
|
nuclear@0
|
376 * multichannel counts that do not offer coupling. At present, coupling is
|
nuclear@0
|
377 * available for stereo and 5.1 encoding.
|
nuclear@0
|
378 */
|
nuclear@0
|
379 #define OV_ECTL_COUPLING_SET 0x41
|
nuclear@0
|
380
|
nuclear@0
|
381 /* deprecated rate management supported only for compatibility */
|
nuclear@0
|
382
|
nuclear@0
|
383 /**
|
nuclear@0
|
384 * Old interface to querying bitrate management settings.
|
nuclear@0
|
385 *
|
nuclear@0
|
386 * Deprecated after move to bit-reservoir style management in 1.1 rendered
|
nuclear@0
|
387 * this interface partially obsolete.
|
nuclear@0
|
388
|
nuclear@0
|
389 * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_GET instead.
|
nuclear@0
|
390 *
|
nuclear@0
|
391 * Argument: <tt>struct ovectl_ratemanage_arg *</tt>
|
nuclear@0
|
392 */
|
nuclear@0
|
393 #define OV_ECTL_RATEMANAGE_GET 0x10
|
nuclear@0
|
394 /**
|
nuclear@0
|
395 * Old interface to modifying bitrate management settings.
|
nuclear@0
|
396 *
|
nuclear@0
|
397 * deprecated after move to bit-reservoir style management in 1.1 rendered
|
nuclear@0
|
398 * this interface partially obsolete.
|
nuclear@0
|
399 *
|
nuclear@0
|
400 * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead.
|
nuclear@0
|
401 *
|
nuclear@0
|
402 * Argument: <tt>struct ovectl_ratemanage_arg *</tt>
|
nuclear@0
|
403 */
|
nuclear@0
|
404 #define OV_ECTL_RATEMANAGE_SET 0x11
|
nuclear@0
|
405 /**
|
nuclear@0
|
406 * Old interface to setting average-bitrate encoding mode.
|
nuclear@0
|
407 *
|
nuclear@0
|
408 * Deprecated after move to bit-reservoir style management in 1.1 rendered
|
nuclear@0
|
409 * this interface partially obsolete.
|
nuclear@0
|
410 *
|
nuclear@0
|
411 * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead.
|
nuclear@0
|
412 *
|
nuclear@0
|
413 * Argument: <tt>struct ovectl_ratemanage_arg *</tt>
|
nuclear@0
|
414 */
|
nuclear@0
|
415 #define OV_ECTL_RATEMANAGE_AVG 0x12
|
nuclear@0
|
416 /**
|
nuclear@0
|
417 * Old interface to setting bounded-bitrate encoding modes.
|
nuclear@0
|
418 *
|
nuclear@0
|
419 * deprecated after move to bit-reservoir style management in 1.1 rendered
|
nuclear@0
|
420 * this interface partially obsolete.
|
nuclear@0
|
421 *
|
nuclear@0
|
422 * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead.
|
nuclear@0
|
423 *
|
nuclear@0
|
424 * Argument: <tt>struct ovectl_ratemanage_arg *</tt>
|
nuclear@0
|
425 */
|
nuclear@0
|
426 #define OV_ECTL_RATEMANAGE_HARD 0x13
|
nuclear@0
|
427
|
nuclear@0
|
428 /*@}*/
|
nuclear@0
|
429
|
nuclear@0
|
430
|
nuclear@0
|
431
|
nuclear@0
|
432 #ifdef __cplusplus
|
nuclear@0
|
433 }
|
nuclear@0
|
434 #endif /* __cplusplus */
|
nuclear@0
|
435
|
nuclear@0
|
436 #endif
|