"L. Spiro Engine"
|
00001 /******************************************************************** 00002 * * 00003 * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * 00004 * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 00005 * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 00006 * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 00007 * * 00008 * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * 00009 * by the Xiph.Org Foundation http://www.xiph.org/ * 00010 * * 00011 ******************************************************************** 00012 00013 function: fft transform 00014 last mod: $Id: smallft.h 13293 2007-07-24 00:09:47Z xiphmont $ 00015 00016 ********************************************************************/ 00017 00018 00019 #ifndef __LSS_VORBISSMALLFT_H__ 00020 #define __LSS_VORBISSMALLFT_H__ 00021 00022 #include "../LSSSoundLib.h" 00023 00024 namespace lss { 00025 00032 class CVorbisSmallFt { 00033 public : 00034 // == Types. 00038 typedef struct drft_lookup { 00039 LSINT32 n; 00040 LSFLOAT * trigcache; 00041 LSINT32 * splitcache; 00042 } * LPdrft_lookup, * const LPCdrft_lookup; 00043 00044 00045 // == Functions. 00052 static LSVOID drft_forward( drft_lookup * _plLookup, LSFLOAT * _pfData ); 00053 00060 static LSVOID drft_backward( drft_lookup * _plLookup, LSFLOAT * _pfData ); 00061 00068 static LSVOID drft_init( drft_lookup * _plLookup, LSINT32 _i32N ); 00069 00075 static LSVOID drft_clear( drft_lookup * _plLookup ); 00076 00077 00078 protected : 00079 // == Functions. 00089 static LSVOID drftf1( LSINT32 _i32N, LSFLOAT * _pfC, LSFLOAT * _pfCh, LSFLOAT * _pfWa, LSINT32 * _pi32Fac ); 00090 00100 static LSVOID drftb1( LSINT32 _i32N, LSFLOAT * _pfC, LSFLOAT * _pfCh, LSFLOAT * _pfWa, LSINT32 * _pi32Fac ); 00101 00109 static LSVOID fdrffti( LSINT32 _i32N, LSFLOAT * _pfWSave, LSINT32 * _pi32Fac ); 00110 00122 static LSVOID dradf4( LSINT32 _i32Ido, LSINT32 _i32L1, LSFLOAT * _pfCc, LSFLOAT * _pfCh, LSFLOAT * _pfWa1, 00123 LSFLOAT * _pfWa2, LSFLOAT * _pfWa3 ); 00124 00134 static LSVOID dradf2( LSINT32 _i32Ido, LSINT32 _i32L1, LSFLOAT * _pfCc, LSFLOAT * _pfCh, LSFLOAT * _pfWa1 ); 00135 00150 static LSVOID dradfg( LSINT32 _i32Ido, LSINT32 _i32Ip, LSINT32 _i32L1, LSINT32 idl1, LSFLOAT * _pfCc, LSFLOAT * _pfC1, 00151 LSFLOAT * _pfC2, LSFLOAT * _pfCh, LSFLOAT * _pfCh2, LSFLOAT * _pfWa ); 00152 00164 static LSVOID dradb4( LSINT32 _i32Ido, LSINT32 _i32L1, LSFLOAT * _pfCc, LSFLOAT * _pfCh, LSFLOAT * _pfWa1, 00165 LSFLOAT * _pfWa2, LSFLOAT * _pfWa3 ); 00166 00176 static LSVOID dradb2( LSINT32 _i32Ido, LSINT32 _i32L1, LSFLOAT * _pfCc, LSFLOAT * _pfCh, LSFLOAT * _pfWa1 ); 00177 00188 static LSVOID dradb3( LSINT32 _i32Ido, LSINT32 _i32L1, LSFLOAT * _pfCc, LSFLOAT * _pfCh, LSFLOAT * _pfWa1, 00189 LSFLOAT * _pfWa2 ); 00190 00205 static LSVOID dradbg( LSINT32 _i32Ido, LSINT32 _i32Ip, LSINT32 _i32L1, LSINT32 idl1, LSFLOAT * _pfCc, LSFLOAT * _pfC1, 00206 LSFLOAT * _pfC2, LSFLOAT * _pfCh, LSFLOAT * _pfCh2, LSFLOAT * _pfWa ); 00207 00215 static LSVOID drfti1( LSINT32 _i32N, LSFLOAT * _pfWa, LSINT32 * _pi32Fac ); 00216 }; 00217 00218 } // namespace lss 00219 00220 #endif // __LSS_VORBISSMALLFT_H__ 00221