|
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 |