Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /********************************************************************
  2.  *                                                                  *
  3.  * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
  4.  * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
  5.  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  6.  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  7.  *                                                                  *
  8.  * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
  9.  * by the Xiph.Org Foundation https://xiph.org/                     *
  10.  *                                                                  *
  11.  ********************************************************************
  12.  
  13.  function: modified discrete cosine transform prototypes
  14.  
  15.  ********************************************************************/
  16.  
  17. #ifndef _OGG_mdct_H_
  18. #define _OGG_mdct_H_
  19.  
  20. #include "vorbis/codec.h"
  21.  
  22.  
  23.  
  24.  
  25.  
  26. /*#define MDCT_INTEGERIZED  <- be warned there could be some hurt left here*/
  27. #ifdef MDCT_INTEGERIZED
  28.  
  29. #define DATA_TYPE int
  30. #define REG_TYPE  register int
  31. #define TRIGBITS 14
  32. #define cPI3_8 6270
  33. #define cPI2_8 11585
  34. #define cPI1_8 15137
  35.  
  36. #define FLOAT_CONV(x) ((int)((x)*(1<<TRIGBITS)+.5))
  37. #define MULT_NORM(x) ((x)>>TRIGBITS)
  38. #define HALVE(x) ((x)>>1)
  39.  
  40. #else
  41.  
  42. #define DATA_TYPE float
  43. #define REG_TYPE  float
  44. #define cPI3_8 .38268343236508977175F
  45. #define cPI2_8 .70710678118654752441F
  46. #define cPI1_8 .92387953251128675613F
  47.  
  48. #define FLOAT_CONV(x) (x)
  49. #define MULT_NORM(x) (x)
  50. #define HALVE(x) ((x)*.5f)
  51.  
  52. #endif
  53.  
  54.  
  55. typedef struct {
  56.   int n;
  57.   int log2n;
  58.  
  59.   DATA_TYPE *trig;
  60.   int       *bitrev;
  61.  
  62.   DATA_TYPE scale;
  63. } mdct_lookup;
  64.  
  65. extern void mdct_init(mdct_lookup *lookup,int n);
  66. extern void mdct_clear(mdct_lookup *l);
  67. extern void mdct_forward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out);
  68. extern void mdct_backward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out);
  69.  
  70. #endif
  71.