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 XIPHOPHORUS Company http://www.xiph.org/                  *
10  *                                                                  *
11  ********************************************************************
12 
13  function: vorbis encode-engine setup
14  last mod: $Id: vorbisenc.h 7485 2004-08-05 14:54:23Z thomasvs $
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