18e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/******************************************************************** 28e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * * 38e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * 48e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 58e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 68e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 78e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * * 88e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * 98e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * by the Xiph.Org Foundation http://www.xiph.org/ * 108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * * 118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ******************************************************************** 128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels function: vorbis encode-engine setup 148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels last mod: $Id: vorbisenc.h 17021 2010-03-24 09:29:41Z xiphmont $ 158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ********************************************************************/ 178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** \file 198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Libvorbisenc is a convenient API for setting up an encoding 208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * environment using libvorbis. Libvorbisenc encapsulates the 218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * actions needed to set up the encoder properly. 228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels */ 238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifndef _OV_ENC_H_ 258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define _OV_ENC_H_ 268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifdef __cplusplus 288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsextern "C" 298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif /* __cplusplus */ 318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include "codec.h" 338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * This is the primary function within libvorbisenc for setting up managed 368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * bitrate modes. 378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Before this function is called, the \ref vorbis_info 398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * struct should be initialized by using vorbis_info_init() from the libvorbis 408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * API. After encoding, vorbis_info_clear() should be called. 418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set 438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * constraints for the encoded file. This function uses these settings to 448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * select the appropriate encoding mode and set it up. 458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param vi Pointer to an initialized \ref vorbis_info struct. 478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param channels The number of channels to be encoded. 488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param rate The sampling rate of the source audio. 498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param max_bitrate Desired maximum bitrate (limit). -1 indicates unset. 508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param nominal_bitrate Desired average, or central, bitrate. -1 indicates unset. 518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param min_bitrate Desired minimum bitrate. -1 indicates unset. 528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \return Zero for success, and negative values for failure. 548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval 0 Success. 568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. 578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval OV_EINVAL Invalid setup request, eg, out of range argument. 588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval OV_EIMPL Unimplemented mode; unable to comply with bitrate request. 598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels */ 608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsextern int vorbis_encode_init(vorbis_info *vi, 618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long channels, 628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long rate, 638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long max_bitrate, 658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long nominal_bitrate, 668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long min_bitrate); 678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * This function performs step-one of a three-step bitrate-managed encode 708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * setup. It functions similarly to the one-step setup performed by \ref 718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * vorbis_encode_init but allows an application to make further encode setup 728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * tweaks using \ref vorbis_encode_ctl before finally calling \ref 738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * vorbis_encode_setup_init to complete the setup process. 748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Before this function is called, the \ref vorbis_info struct should be 768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * initialized by using vorbis_info_init() from the libvorbis API. After 778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * encoding, vorbis_info_clear() should be called. 788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set 808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * constraints for the encoded file. This function uses these settings to 818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * select the appropriate encoding mode and set it up. 828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param vi Pointer to an initialized vorbis_info struct. 848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param channels The number of channels to be encoded. 858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param rate The sampling rate of the source audio. 868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param max_bitrate Desired maximum bitrate (limit). -1 indicates unset. 878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param nominal_bitrate Desired average, or central, bitrate. -1 indicates unset. 888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param min_bitrate Desired minimum bitrate. -1 indicates unset. 898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \return Zero for success, and negative for failure. 918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval 0 Success 938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. 948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval OV_EINVAL Invalid setup request, eg, out of range argument. 958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval OV_EIMPL Unimplemented mode; unable to comply with bitrate request. 968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels */ 978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsextern int vorbis_encode_setup_managed(vorbis_info *vi, 988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long channels, 998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long rate, 1008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long max_bitrate, 1028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long nominal_bitrate, 1038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long min_bitrate); 1048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 1068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * This function performs step-one of a three-step variable bitrate 1078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * (quality-based) encode setup. It functions similarly to the one-step setup 1088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * performed by \ref vorbis_encode_init_vbr() but allows an application to 1098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * make further encode setup tweaks using \ref vorbis_encode_ctl() before 1108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * finally calling \ref vorbis_encode_setup_init to complete the setup 1118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * process. 1128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 1138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Before this function is called, the \ref vorbis_info struct should be 1148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * initialized by using \ref vorbis_info_init() from the libvorbis API. After 1158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * encoding, vorbis_info_clear() should be called. 1168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 1178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param vi Pointer to an initialized vorbis_info struct. 1188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param channels The number of channels to be encoded. 1198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param rate The sampling rate of the source audio. 1208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param quality Desired quality level, currently from -0.1 to 1.0 (lo to hi). 1218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 1228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \return Zero for success, and negative values for failure. 1238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 1248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval 0 Success 1258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. 1268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval OV_EINVAL Invalid setup request, eg, out of range argument. 1278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval OV_EIMPL Unimplemented mode; unable to comply with quality level request. 1288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels */ 1298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsextern int vorbis_encode_setup_vbr(vorbis_info *vi, 1308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long channels, 1318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long rate, 1328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels float quality 1348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ); 1358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 1378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * This is the primary function within libvorbisenc for setting up variable 1388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * bitrate ("quality" based) modes. 1398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 1408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 1418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Before this function is called, the vorbis_info struct should be 1428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * initialized by using vorbis_info_init() from the libvorbis API. After 1438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * encoding, vorbis_info_clear() should be called. 1448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 1458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param vi Pointer to an initialized vorbis_info struct. 1468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param channels The number of channels to be encoded. 1478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param rate The sampling rate of the source audio. 1488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param base_quality Desired quality level, currently from -0.1 to 1.0 (lo to hi). 1498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 1508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 1518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \return Zero for success, or a negative number for failure. 1528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 1538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval 0 Success 1548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. 1558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval OV_EINVAL Invalid setup request, eg, out of range argument. 1568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval OV_EIMPL Unimplemented mode; unable to comply with quality level request. 1578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels */ 1588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsextern int vorbis_encode_init_vbr(vorbis_info *vi, 1598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long channels, 1608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long rate, 1618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels float base_quality 1638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ); 1648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 1668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * This function performs the last stage of three-step encoding setup, as 1678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * described in the API overview under managed bitrate modes. 1688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 1698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Before this function is called, the \ref vorbis_info struct should be 1708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * initialized by using vorbis_info_init() from the libvorbis API, one of 1718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \ref vorbis_encode_setup_managed() or \ref vorbis_encode_setup_vbr() called to 1728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * initialize the high-level encoding setup, and \ref vorbis_encode_ctl() 1738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * called if necessary to make encoding setup changes. 1748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * vorbis_encode_setup_init() finalizes the highlevel encoding structure into 1758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * a complete encoding setup after which the application may make no further 1768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * setup changes. 1778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 1788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * After encoding, vorbis_info_clear() should be called. 1798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 1808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param vi Pointer to an initialized \ref vorbis_info struct. 1818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 1828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \return Zero for success, and negative values for failure. 1838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 1848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval 0 Success. 1858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. 1868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 1878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval OV_EINVAL Attempt to use vorbis_encode_setup_init() without first 1888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * calling one of vorbis_encode_setup_managed() or vorbis_encode_setup_vbr() to 1898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * initialize the high-level encoding setup 1908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 1918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels */ 1928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsextern int vorbis_encode_setup_init(vorbis_info *vi); 1938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 1958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * This function implements a generic interface to miscellaneous encoder 1968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * settings similar to the classic UNIX 'ioctl()' system call. Applications 1978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * may use vorbis_encode_ctl() to query or set bitrate management or quality 1988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * mode details by using one of several \e request arguments detailed below. 1998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * vorbis_encode_ctl() must be called after one of 2008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * vorbis_encode_setup_managed() or vorbis_encode_setup_vbr(). When used 2018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * to modify settings, \ref vorbis_encode_ctl() must be called before \ref 2028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * vorbis_encode_setup_init(). 2038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 2048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param vi Pointer to an initialized vorbis_info struct. 2058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 2068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param number Specifies the desired action; See \ref encctlcodes "the list 2078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * of available requests". 2088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 2098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \param arg void * pointing to a data structure matching the request 2108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * argument. 2118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 2128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval 0 Success. Any further return information (such as the result of a 2138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * query) is placed into the storage pointed to by *arg. 2148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 2158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval OV_EINVAL Invalid argument, or an attempt to modify a setting after 2168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * calling vorbis_encode_setup_init(). 2178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 2188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \retval OV_EIMPL Unimplemented or unknown request 2198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels */ 2208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsextern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg); 2218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 2228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 2238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \deprecated This is a deprecated interface. Please use vorbis_encode_ctl() 2248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * with the \ref ovectl_ratemanage2_arg struct and \ref 2258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * OV_ECTL_RATEMANAGE2_GET and \ref OV_ECTL_RATEMANAGE2_SET calls in new code. 2268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 2278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * The \ref ovectl_ratemanage_arg structure is used with vorbis_encode_ctl() 2288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * and the \ref OV_ECTL_RATEMANAGE_GET, \ref OV_ECTL_RATEMANAGE_SET, \ref 2298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * OV_ECTL_RATEMANAGE_AVG, \ref OV_ECTL_RATEMANAGE_HARD calls in order to 2308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * query and modify specifics of the encoder's bitrate management 2318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * configuration. 2328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels*/ 2338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstruct ovectl_ratemanage_arg { 2348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels int management_active; /**< nonzero if bitrate management is active*/ 2358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** hard lower limit (in kilobits per second) below which the stream bitrate 2368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels will never be allowed for any given bitrate_hard_window seconds of time.*/ 2378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long bitrate_hard_min; 2388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** hard upper limit (in kilobits per second) above which the stream bitrate 2398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels will never be allowed for any given bitrate_hard_window seconds of time.*/ 2408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long bitrate_hard_max; 2418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** the window period (in seconds) used to regulate the hard bitrate minimum 2428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels and maximum*/ 2438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels double bitrate_hard_window; 2448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** soft lower limit (in kilobits per second) below which the average bitrate 2458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tracker will start nudging the bitrate higher.*/ 2468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long bitrate_av_lo; 2478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** soft upper limit (in kilobits per second) above which the average bitrate 2488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tracker will start nudging the bitrate lower.*/ 2498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long bitrate_av_hi; 2508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** the window period (in seconds) used to regulate the average bitrate 2518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels minimum and maximum.*/ 2528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels double bitrate_av_window; 2538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** Regulates the relative centering of the average and hard windows; in 2548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libvorbis 1.0 and 1.0.1, the hard window regulation overlapped but 2558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels followed the average window regulation. In libvorbis 1.1 a bit-reservoir 2568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels interface replaces the old windowing interface; the older windowing 2578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels interface is simulated and this field has no effect.*/ 2588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels double bitrate_av_window_center; 2598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}; 2608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 2618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 2628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \name struct ovectl_ratemanage2_arg 2638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 2648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * The ovectl_ratemanage2_arg structure is used with vorbis_encode_ctl() and 2658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * the OV_ECTL_RATEMANAGE2_GET and OV_ECTL_RATEMANAGE2_SET calls in order to 2668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * query and modify specifics of the encoder's bitrate management 2678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * configuration. 2688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 2698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels*/ 2708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstruct ovectl_ratemanage2_arg { 2718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels int management_active; /**< nonzero if bitrate management is active */ 2728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** Lower allowed bitrate limit in kilobits per second */ 2738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long bitrate_limit_min_kbps; 2748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** Upper allowed bitrate limit in kilobits per second */ 2758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long bitrate_limit_max_kbps; 2768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long bitrate_limit_reservoir_bits; /**<Size of the bitrate reservoir in bits */ 2778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** Regulates the bitrate reservoir's preferred fill level in a range from 0.0 2788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * to 1.0; 0.0 tries to bank bits to buffer against future bitrate spikes, 1.0 2798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * buffers against future sudden drops in instantaneous bitrate. Default is 2808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 0.1 2818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels */ 2828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels double bitrate_limit_reservoir_bias; 2838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** Average bitrate setting in kilobits per second */ 2848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels long bitrate_average_kbps; 2858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** Slew rate limit setting for average bitrate adjustment; sets the minimum 2868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * time in seconds the bitrate tracker may swing from one extreme to the 2878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * other when boosting or damping average bitrate. 2888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels */ 2898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels double bitrate_average_damping; 2908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}; 2918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 2928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 2938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 2948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \name vorbis_encode_ctl() codes 2958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 2968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \anchor encctlcodes 2978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 2988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * These values are passed as the \c number parameter of vorbis_encode_ctl(). 2998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * The type of the referent of that function's \c arg pointer depends on these 3008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * codes. 3018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels */ 3028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/*@{*/ 3038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 3058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Query the current encoder bitrate management setting. 3068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 3078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *Argument: <tt>struct ovectl_ratemanage2_arg *</tt> 3088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 3098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Used to query the current encoder bitrate management setting. Also used to 3108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * initialize fields of an ovectl_ratemanage2_arg structure for use with 3118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \ref OV_ECTL_RATEMANAGE2_SET. 3128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels */ 3138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define OV_ECTL_RATEMANAGE2_GET 0x14 3148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 3168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Set the current encoder bitrate management settings. 3178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 3188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Argument: <tt>struct ovectl_ratemanage2_arg *</tt> 3198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 3208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Used to set the current encoder bitrate management settings to the values 3218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * listed in the ovectl_ratemanage2_arg. Passing a NULL pointer will disable 3228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * bitrate management. 3238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels*/ 3248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define OV_ECTL_RATEMANAGE2_SET 0x15 3258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 3278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Returns the current encoder hard-lowpass setting (kHz) in the double 3288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * pointed to by arg. 3298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 3308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Argument: <tt>double *</tt> 3318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels*/ 3328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define OV_ECTL_LOWPASS_GET 0x20 3338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 3358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Sets the encoder hard-lowpass to the value (kHz) pointed to by arg. Valid 3368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * lowpass settings range from 2 to 99. 3378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 3388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Argument: <tt>double *</tt> 3398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels*/ 3408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define OV_ECTL_LOWPASS_SET 0x21 3418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 3438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Returns the current encoder impulse block setting in the double pointed 3448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * to by arg. 3458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 3468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Argument: <tt>double *</tt> 3478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels*/ 3488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define OV_ECTL_IBLOCK_GET 0x30 3498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 3518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Sets the impulse block bias to the the value pointed to by arg. 3528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 3538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Argument: <tt>double *</tt> 3548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 3558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Valid range is -15.0 to 0.0 [default]. A negative impulse block bias will 3568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * direct to encoder to use more bits when incoding short blocks that contain 3578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * strong impulses, thus improving the accuracy of impulse encoding. 3588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels */ 3598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define OV_ECTL_IBLOCK_SET 0x31 3608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 3628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Returns the current encoder coupling setting in the int pointed 3638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * to by arg. 3648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 3658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Argument: <tt>int *</tt> 3668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels*/ 3678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define OV_ECTL_COUPLING_GET 0x40 3688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 3708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Enables/disables channel coupling in multichannel encoding according to arg. 3718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 3728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Argument: <tt>int *</tt> 3738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 3748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Zero disables channel coupling for multichannel inputs, nonzer enables 3758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * channel coupling. Setting has no effect on monophonic encoding or 3768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * multichannel counts that do not offer coupling. At present, coupling is 3778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * available for stereo and 5.1 encoding. 3788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels */ 3798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define OV_ECTL_COUPLING_SET 0x41 3808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* deprecated rate management supported only for compatibility */ 3828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 3848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Old interface to querying bitrate management settings. 3858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 3868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Deprecated after move to bit-reservoir style management in 1.1 rendered 3878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * this interface partially obsolete. 3888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_GET instead. 3908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 3918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Argument: <tt>struct ovectl_ratemanage_arg *</tt> 3928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels */ 3938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define OV_ECTL_RATEMANAGE_GET 0x10 3948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 3958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Old interface to modifying bitrate management settings. 3968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 3978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * deprecated after move to bit-reservoir style management in 1.1 rendered 3988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * this interface partially obsolete. 3998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 4008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead. 4018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 4028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Argument: <tt>struct ovectl_ratemanage_arg *</tt> 4038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels */ 4048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define OV_ECTL_RATEMANAGE_SET 0x11 4058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 4068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Old interface to setting average-bitrate encoding mode. 4078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 4088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Deprecated after move to bit-reservoir style management in 1.1 rendered 4098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * this interface partially obsolete. 4108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 4118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead. 4128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 4138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Argument: <tt>struct ovectl_ratemanage_arg *</tt> 4148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels */ 4158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define OV_ECTL_RATEMANAGE_AVG 0x12 4168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/** 4178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Old interface to setting bounded-bitrate encoding modes. 4188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 4198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * deprecated after move to bit-reservoir style management in 1.1 rendered 4208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * this interface partially obsolete. 4218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 4228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead. 4238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * 4248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * Argument: <tt>struct ovectl_ratemanage_arg *</tt> 4258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels */ 4268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define OV_ECTL_RATEMANAGE_HARD 0x13 4278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/*@}*/ 4298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifdef __cplusplus 4338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 4348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif /* __cplusplus */ 4358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif 437