]> icculus.org git repositories - icculus/iodoom3.git/blob - neo/sound/OggVorbis/vorbis/vorbisenc.h
hello world
[icculus/iodoom3.git] / neo / sound / OggVorbis / vorbis / vorbisenc.h
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,v 1.10 2002/07/01 11:20:10 xiphmont 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 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 #define OV_ECTL_RATEMANAGE_GET       0x10
63
64 #define OV_ECTL_RATEMANAGE_SET       0x11
65 #define OV_ECTL_RATEMANAGE_AVG       0x12
66 #define OV_ECTL_RATEMANAGE_HARD      0x13
67
68 #define OV_ECTL_LOWPASS_GET          0x20
69 #define OV_ECTL_LOWPASS_SET          0x21
70
71 #define OV_ECTL_IBLOCK_GET           0x30
72 #define OV_ECTL_IBLOCK_SET           0x31
73
74 struct ovectl_ratemanage_arg {
75   int    management_active;
76
77   long   bitrate_hard_min;
78   long   bitrate_hard_max;
79   double bitrate_hard_window;
80
81   long   bitrate_av_lo;
82   long   bitrate_av_hi;
83   double bitrate_av_window;
84   double bitrate_av_window_center;
85 };
86
87 #ifdef __cplusplus
88 }
89 #endif /* __cplusplus */
90
91 #endif
92
93