00001 /******************************************************************** 00002 * * 00003 * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * 00004 * * 00005 * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 00006 * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 00007 * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 00008 * * 00009 * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * 00010 * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * 00011 * * 00012 ******************************************************************** 00013 00014 function: libvorbis codec headers 00015 00016 ********************************************************************/ 00017 00018 #ifndef _V_CODECI_H_ 00019 #define _V_CODECI_H_ 00020 00021 #include "codebook.h" 00022 00023 typedef void vorbis_look_mapping; 00024 typedef void vorbis_look_floor; 00025 typedef void vorbis_look_residue; 00026 typedef void vorbis_look_transform; 00027 00028 /* mode ************************************************************/ 00029 typedef struct { 00030 int blockflag; 00031 int windowtype; 00032 int transformtype; 00033 int mapping; 00034 } vorbis_info_mode; 00035 00036 typedef void vorbis_info_floor; 00037 typedef void vorbis_info_residue; 00038 typedef void vorbis_info_mapping; 00039 00040 typedef struct private_state { 00041 /* local lookup storage */ 00042 const void *window[2]; 00043 00044 /* backend lookups are tied to the mode, not the backend or naked mapping */ 00045 int modebits; 00046 vorbis_look_mapping **mode; 00047 00048 ogg_int64_t sample_count; 00049 00050 } private_state; 00051 00052 /* codec_setup_info contains all the setup information specific to the 00053 specific compression/decompression mode in progress (eg, 00054 psychoacoustic settings, channel setup, options, codebook 00055 etc). 00056 *********************************************************************/ 00057 00058 typedef struct codec_setup_info { 00059 00060 /* Vorbis supports only short and long blocks, but allows the 00061 encoder to choose the sizes */ 00062 00063 long blocksizes[2]; 00064 00065 /* modes are the primary means of supporting on-the-fly different 00066 blocksizes, different channel mappings (LR or M/A), 00067 different residue backends, etc. Each mode consists of a 00068 blocksize flag and a mapping (along with the mapping setup */ 00069 00070 int modes; 00071 int maps; 00072 int times; 00073 int floors; 00074 int residues; 00075 int books; 00076 00077 vorbis_info_mode *mode_param[64]; 00078 int map_type[64]; 00079 vorbis_info_mapping *map_param[64]; 00080 int time_type[64]; 00081 int floor_type[64]; 00082 vorbis_info_floor *floor_param[64]; 00083 int residue_type[64]; 00084 vorbis_info_residue *residue_param[64]; 00085 static_codebook *book_param[256]; 00086 codebook *fullbooks; 00087 00088 int passlimit[32]; /* iteration limit per couple/quant pass */ 00089 int coupling_passes; 00090 } codec_setup_info; 00091 00092 #endif
1.4.2