misc/libtremor/tremor/codec_internal.h
changeset 9431 0f5961910e27
parent 9357 a501f5ec7b34
parent 9429 7a97a554ac80
child 9433 f0a8ac191839
equal deleted inserted replaced
9357:a501f5ec7b34 9431:0f5961910e27
     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