1 /********************************************************************
2  *                                                                  *
3  * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE.   *
4  *                                                                  *
5  * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
6  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
7  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
8  *                                                                  *
9  * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002    *
10  * BY THE Xiph.Org FOUNDATION http://www.xiph.org/                  *
11  *                                                                  *
12  ********************************************************************
13 
14  function: libvorbis codec headers
15 
16  ********************************************************************/
17 
18 #ifndef _V_CODECI_H_
19 #define _V_CODECI_H_
20 
21 #include "codebook.h"
22 
23 typedef void vorbis_look_mapping;
24 typedef void vorbis_look_floor;
25 typedef void vorbis_look_residue;
26 typedef void vorbis_look_transform;
27 
28 /* mode ************************************************************/
29 typedef struct {
30   int blockflag;
31   int windowtype;
32   int transformtype;
33   int mapping;
34 } vorbis_info_mode;
35 
36 typedef void vorbis_info_floor;
37 typedef void vorbis_info_residue;
38 typedef void vorbis_info_mapping;
39 
40 typedef struct private_state {
41   /* local lookup storage */
42   const void             *window[2];
43 
44   /* backend lookups are tied to the mode, not the backend or naked mapping */
45   int                     modebits;
46   vorbis_look_mapping   **mode;
47 
48   ogg_int64_t sample_count;
49 
50 } private_state;
51 
52 /* codec_setup_info contains all the setup information specific to the
53    specific compression/decompression mode in progress (eg,
54    psychoacoustic settings, channel setup, options, codebook
55    etc).
56 *********************************************************************/
57 
58 typedef struct codec_setup_info {
59 
60   /* Vorbis supports only short and long blocks, but allows the
61      encoder to choose the sizes */
62 
63   long blocksizes[2];
64 
65   /* modes are the primary means of supporting on-the-fly different
66      blocksizes, different channel mappings (LR or M/A),
67      different residue backends, etc.  Each mode consists of a
68      blocksize flag and a mapping (along with the mapping setup */
69 
70   int        modes;
71   int        maps;
72   int        times;
73   int        floors;
74   int        residues;
75   int        books;
76 
77   vorbis_info_mode       *mode_param[64];
78   int                     map_type[64];
79   vorbis_info_mapping    *map_param[64];
80   int                     time_type[64];
81   int                     floor_type[64];
82   vorbis_info_floor      *floor_param[64];
83   int                     residue_type[64];
84   vorbis_info_residue    *residue_param[64];
85   static_codebook        *book_param[256];
86   codebook               *fullbooks;
87 
88   int    passlimit[32];     /* iteration limit per couple/quant pass */
89   int    coupling_passes;
90 } codec_setup_info;
91 
92 #endif
93