/*********************************************************** Copyrights : ksWaves Ltd. 1998. Provided to Microsoft under contract between ksWaves and Microsoft. ************************************************************/ /**************************************************************************** Const defines : *****************************************************************************/ #define FPU_DENORM_OFFS (float)1.0E-30 #define BASE_REV_DELAY 0x4000 #define BASE_DSPS_DELAY 0x800 #define DSPS_MASK 0x7ff #define REV_MASK 0x3fff /**************************************************************************** Coefs Struct : *****************************************************************************/ typedef struct { long mySize; long myVersion; float SampleRate; float directGain; long l_directGain; float revGain; long l_revGain; long lDelay1; long lDelay2; long lDelay3; long lDelay4; long lDDly1; long lDDly2; float dDsps; long l_dDsps; float dDG1; long l_dDG1; float dDG2; long l_dDG2; float dFB11; long l_dFB11; float dFB12; long l_dFB12; float dFB21; long l_dFB21; float dFB22; long l_dFB22; float dFB31; long l_dFB31; float dFB32; long l_dFB32; float dFB41; long l_dFB41; float dFB42; long l_dFB42; float dDamp; long l_dDamp; } sCoefsStruct; /**************************************************************************** Initialization and control functions : *****************************************************************************/ #ifdef __cplusplus extern "C" { #endif #define MAX_16 (float)((unsigned long)0x00008000) void InitSVerbStates( long *pStates ); long DToF32( float dbl ); void ConvertCoefsToFix( void *pC ); void InitSVerb( float SampleRate, void *pCoefs); void SetSVerb( float InGain, float dRevMix, float dRevTime, float dHighFreqRTRatio, void *pCoefs ); long GetCoefsSize(void); long GetStatesSize(void); long GetSVerbVersion(void); float VerifySampleRate(void *pCoefs); long VerifyVersion(void *pCoefs); long VerifySize(void *pCoefs); #define CLIP_SHORT_TO_SHORT(x)\ if (x>32767)\ x = 32767;\ else if (x<-32768)\ x = -32768; /**************************************************************************** //Process Functions : *****************************************************************************/ __inline void dsps( float *pDly, long ref, long delay, float dDG1, float dDsps, float *inL, float *inR ); __inline void dspsL( long *pDly, long ref, long delay, long dDG1, long dDsps, long *inL, long *inR ); void SVerbMonoToMonoShort(long NumInFrames, short *pInShort, short *pOutShort, void *pCoefs, long *pStates); void SVerbMonoToStereoShort(long NumInFrames, short *pInShort, short *pOutShort, void *pCoefs, long *pStates); void SVerbStereoToStereoShort(long NumInFrames, short *pInShort, short *pOutShort, void *pCoefs, long *pStates); void SVerbMonoToMonoFloat(long NumInFrames, float *pInFloat, float *pOutFloat, void *pCoefs, float *pStates); void SVerbMonoToStereoFloat(long NumInFrames, float *pInFloat, float *pOutFloat, void *pCoefs, float *pStates); void SVerbStereoToStereoFloat(long NumInFrames, float *pInFloat, float *pOutFloat, void *pCoefs, float *pStates); #ifdef __cplusplus } #endif