1/******************************************************************** 2 * * 3 * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * 4 * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 5 * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 6 * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 7 * * 8 * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * 9 * by the Xiph.Org Foundation http://www.xiph.org/ * 10 * * 11 ******************************************************************** 12 13 function: vorbis encode-engine setup 14 last mod: $Id: vorbisenc.h 16037 2009-05-26 21:10:58Z xiphmont $ 15 16 ********************************************************************/ 17 18#ifndef _OV_ENC_H_ 19#define _OV_ENC_H_ 20 21#ifdef __cplusplus 22extern "C" 23{ 24#endif /* __cplusplus */ 25 26#include "codec.h" 27 28extern int vorbis_encode_init(vorbis_info *vi, 29 long channels, 30 long rate, 31 32 long max_bitrate, 33 long nominal_bitrate, 34 long min_bitrate); 35 36extern int vorbis_encode_setup_managed(vorbis_info *vi, 37 long channels, 38 long rate, 39 40 long max_bitrate, 41 long nominal_bitrate, 42 long min_bitrate); 43 44extern int vorbis_encode_setup_vbr(vorbis_info *vi, 45 long channels, 46 long rate, 47 48 float quality /* quality level from 0. (lo) to 1. (hi) */ 49 ); 50 51extern int vorbis_encode_init_vbr(vorbis_info *vi, 52 long channels, 53 long rate, 54 55 float base_quality /* quality level from 0. (lo) to 1. (hi) */ 56 ); 57 58extern int vorbis_encode_setup_init(vorbis_info *vi); 59 60extern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg); 61 62 /* deprecated rate management supported only for compatability */ 63#define OV_ECTL_RATEMANAGE_GET 0x10 64#define OV_ECTL_RATEMANAGE_SET 0x11 65#define OV_ECTL_RATEMANAGE_AVG 0x12 66#define OV_ECTL_RATEMANAGE_HARD 0x13 67 68struct ovectl_ratemanage_arg { 69 int management_active; 70 71 long bitrate_hard_min; 72 long bitrate_hard_max; 73 double bitrate_hard_window; 74 75 long bitrate_av_lo; 76 long bitrate_av_hi; 77 double bitrate_av_window; 78 double bitrate_av_window_center; 79}; 80 81 82 /* new rate setup */ 83#define OV_ECTL_RATEMANAGE2_GET 0x14 84#define OV_ECTL_RATEMANAGE2_SET 0x15 85 86struct ovectl_ratemanage2_arg { 87 int management_active; 88 89 long bitrate_limit_min_kbps; 90 long bitrate_limit_max_kbps; 91 long bitrate_limit_reservoir_bits; 92 double bitrate_limit_reservoir_bias; 93 94 long bitrate_average_kbps; 95 double bitrate_average_damping; 96}; 97 98 99 100#define OV_ECTL_LOWPASS_GET 0x20 101#define OV_ECTL_LOWPASS_SET 0x21 102 103#define OV_ECTL_IBLOCK_GET 0x30 104#define OV_ECTL_IBLOCK_SET 0x31 105 106#ifdef __cplusplus 107} 108#endif /* __cplusplus */ 109 110#endif 111 112 113