www.pudn.com > Tremor.rar > backends.h


/******************************************************************** 
 *                                                                  * 
 * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE.   * 
 *                                                                  * 
 * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     * 
 * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 
 * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       * 
 *                                                                  * 
 * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002    * 
 * BY THE Xiph.Org FOUNDATION http://www.xiph.org/                  * 
 *                                                                  * 
 ******************************************************************** 
 
 function: backend and mapping structures 
 
 ********************************************************************/ 
 
/* this is exposed up here because we need it for static modes. 
   Lookups for each backend aren't exposed because there's no reason 
   to do so */ 
 
#ifndef _vorbis_backend_h_ 
#define _vorbis_backend_h_ 
 
#include "codec_internal.h" 
 
/* this would all be simpler/shorter with templates, but.... */ 
/* Transform backend generic *************************************/ 
 
/* only mdct right now.  Flesh it out more if we ever transcend mdct 
   in the transform domain */ 
 
/* Floor backend generic *****************************************/ 
typedef struct{ 
  vorbis_info_floor     *(*unpack)(vorbis_info *,oggpack_buffer *); 
  vorbis_look_floor     *(*look)  (vorbis_dsp_state *,vorbis_info_mode *, 
				   vorbis_info_floor *); 
  void (*free_info) (vorbis_info_floor *); 
  void (*free_look) (vorbis_look_floor *); 
  void *(*inverse1)  (struct vorbis_block *,vorbis_look_floor *); 
  int   (*inverse2)  (struct vorbis_block *,vorbis_look_floor *, 
		     void *buffer,ogg_int32_t *); 
} vorbis_func_floor; 
 
typedef struct{ 
  int   order; 
  long  rate; 
  long  barkmap; 
 
  int   ampbits; 
  int   ampdB; 
 
  int   numbooks; /* <= 16 */ 
  int   books[16]; 
 
} vorbis_info_floor0; 
 
#define VIF_POSIT 63 
#define VIF_CLASS 16 
#define VIF_PARTS 31 
typedef struct{ 
  int   partitions;                /* 0 to 31 */ 
  int   partitionclass[VIF_PARTS]; /* 0 to 15 */ 
 
  int   class_dim[VIF_CLASS];        /* 1 to 8 */ 
  int   class_subs[VIF_CLASS];       /* 0,1,2,3 (bits: 1<