annotate src/libvorbis-1.3.3/lib/mdct.h @ 154:4664ac0c1032

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