cannam@86: /******************************************************************** cannam@86: * * cannam@86: * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * cannam@86: * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * cannam@86: * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * cannam@86: * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * cannam@86: * * cannam@86: * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 * cannam@86: * by the Xiph.Org Foundation http://www.xiph.org/ * cannam@86: * * cannam@86: ******************************************************************** cannam@86: cannam@86: function: modified discrete cosine transform prototypes cannam@86: last mod: $Id: mdct.h 16227 2009-07-08 06:58:46Z xiphmont $ cannam@86: cannam@86: ********************************************************************/ cannam@86: cannam@86: #ifndef _OGG_mdct_H_ cannam@86: #define _OGG_mdct_H_ cannam@86: cannam@86: #include "vorbis/codec.h" cannam@86: cannam@86: cannam@86: cannam@86: cannam@86: cannam@86: /*#define MDCT_INTEGERIZED <- be warned there could be some hurt left here*/ cannam@86: #ifdef MDCT_INTEGERIZED cannam@86: cannam@86: #define DATA_TYPE int cannam@86: #define REG_TYPE register int cannam@86: #define TRIGBITS 14 cannam@86: #define cPI3_8 6270 cannam@86: #define cPI2_8 11585 cannam@86: #define cPI1_8 15137 cannam@86: cannam@86: #define FLOAT_CONV(x) ((int)((x)*(1<>TRIGBITS) cannam@86: #define HALVE(x) ((x)>>1) cannam@86: cannam@86: #else cannam@86: cannam@86: #define DATA_TYPE float cannam@86: #define REG_TYPE float cannam@86: #define cPI3_8 .38268343236508977175F cannam@86: #define cPI2_8 .70710678118654752441F cannam@86: #define cPI1_8 .92387953251128675613F cannam@86: cannam@86: #define FLOAT_CONV(x) (x) cannam@86: #define MULT_NORM(x) (x) cannam@86: #define HALVE(x) ((x)*.5f) cannam@86: cannam@86: #endif cannam@86: cannam@86: cannam@86: typedef struct { cannam@86: int n; cannam@86: int log2n; cannam@86: cannam@86: DATA_TYPE *trig; cannam@86: int *bitrev; cannam@86: cannam@86: DATA_TYPE scale; cannam@86: } mdct_lookup; cannam@86: cannam@86: extern void mdct_init(mdct_lookup *lookup,int n); cannam@86: extern void mdct_clear(mdct_lookup *l); cannam@86: extern void mdct_forward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out); cannam@86: extern void mdct_backward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out); cannam@86: cannam@86: #endif