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