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,v 1.2 2008-12-02 18:04:43 jeanlf Exp $ 15 16 ********************************************************************/ 17 18 #ifndef _OV_ENC_H_ 19 #define _OV_ENC_H_ 20 21 #ifdef __cplusplus 22 extern "C" 23 { 24 #endif /* __cplusplus */ 25 26 #include "codec.h" 27 28 extern 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 36 extern 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 44 extern 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 51 extern 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 58 extern int vorbis_encode_setup_init(vorbis_info *vi); 59 60 extern 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 68 struct 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 86 struct 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