00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024
00025 #include "zplVecLib.h"
00026
00027 static bool bzplVecLibDispatcherInitialized = false;
00028
00029
00030 float* (ZCDECL *zplfMalloc) (int iNumOfFloats);
00031 void (ZCDECL *zplfFree) (float *&ppfBuffer);
00032 void (ZCDECL *zplfSetZero) (float *pfBuffer, int iLengthAsPowOf4);
00033 void (ZCDECL *zplfRealFindMax) (float *pfSrc, float *pfMax, int *piIdx, int iLengthAsPowOf4);
00034 void (ZCDECL *zplfRealAdd_I) (float *pfSrcDest, float *pfSrc, int iLengthAsPowOf4);
00035 void (ZCDECL *zplfRealAddC_I) (float *pfSrcDest, float fValue, int iLengthAsPowOf4);
00036 void (ZCDECL *zplfRealSub_I) (float *pfSrcDest, float *pfSrc, int iLengthAsPowOf4);
00037 void (ZCDECL *zplfRealMul_I) (float *pfSrcDest, float *pfSrc, int iLengthAsPowOf4);
00038 void (ZCDECL *zplfRealMulC_I) (float *pfSrcDest, float fScaleFactor, int iLengthAsPowOf4);
00039 void (ZCDECL *zplfRealDiv_I) (float *pfNomSrcDest,float *pfDenomSrc, int iLengthAsPowOf4);
00040 void (ZCDECL *zplfRealMac_I) (float *pfSrcDest, float *pfSrc1, float *pfSrc2, int iLengthAsPowOf4);
00041 void (ZCDECL *zplfRealAbs_I) (float *pfSrcDest, int iLengthAsPowOf4);
00042 float (ZCDECL *zplfRealSum) (float *pfSrc, int iLengthAsPowOf4);
00043 void (ZCDECL *zplfCompAdd_I) (zCOMPLEX *pfSrcDest, zCOMPLEX *pfSrc, int iRealLengthAsPowOf4);
00044 void (ZCDECL *zplfCompMul_I) (zCOMPLEX *pfSrcDest, zCOMPLEX *pfSrc, int iRealLengthAsPowOf4);
00045 void (ZCDECL *zplfCompDiv_I) (zCOMPLEX *pfNomSrcDest,zCOMPLEX *pfDenomSrc, int iRealLengthAsPowOf4);
00046 void (ZCDECL *zplfCompMac_I) (zCOMPLEX *pfSrcDest, zCOMPLEX *pfSrc1, float *pfSrc2, int iRealLengthAsPowOf4);
00047 void (ZCDECL *zplfCompAbs) (float *pfDest, zCOMPLEX *pfSrc1, int iRealLengthAsPowOf4);
00048 int (ZCDECL *zplfZeroCrossings) (float *pfSrc, int iRealLengthAsPowOf4);
00049 int (ZCDECL *zplfFFTCreateInstance) (CzplfFFT_If*& pCFFT, int iBlockLength, int iZeroPadFactor, CzplfFFT_If::_Fft_Windows_ eWindowType);
00050 int (ZCDECL *zplfFFTDestroyInstance) (CzplfFFT_If*& pCFFT);
00051
00052
00053
00054 float* zplfMalloc_Gen (int iNumOfFloats);
00055 void zplfFree_Gen (float *&ppfBuffer);
00056 void zplfSetZero_Gen (float *pfBuffer, int iLengthAsPowOf4);
00057 void zplfRealFindMax_Gen (float *pfSrc, float *pfMax, int *piIdx, int iLengthAsPowOf4);
00058 void zplfRealAdd_I_Gen (float *pfSrcDest, float *pfSrc, int iLengthAsPowOf4);
00059 void zplfRealAddC_I_Gen (float *pfSrcDest, float fValue, int iLengthAsPowOf4);
00060 void zplfRealSub_I_Gen (float *pfSrcDest, float *pfSrc, int iLengthAsPowOf4);
00061 void zplfRealMul_I_Gen (float *pfSrcDest, float *pfSrc, int iLengthAsPowOf4);
00062 void zplfRealMulC_I_Gen (float *pfSrcDest, float fScaleFactor, int iLengthAsPowOf4);
00063 void zplfRealDiv_I_Gen (float *pfNomSrcDest, float *pfDenomSrc, int iLengthAsPowOf4);
00064 void zplfRealMac_I_Gen (float *pfSrcDest, float *pfSrc1, float *pfSrc2, int iLengthAsPowOf4);
00065 void zplfRealAbs_I_Gen (float *pfSrcDest, int iLengthAsPowOf4);
00066 float zplfRealSum_Gen (float *pfSrc, int iLengthAsPowOf4);
00067 void zplfCompAdd_I_Gen (zCOMPLEX *pfSrcDest, zCOMPLEX *pfSrc, int iRealLengthAsPowOf4);
00068 void zplfCompMul_I_Gen (zCOMPLEX *pfSrcDest, zCOMPLEX *pfSrc, int iRealLengthAsPowOf4);
00069 void zplfCompDiv_I_Gen (zCOMPLEX *pfNomSrcDest, zCOMPLEX *pfDenomSrc, int iRealLengthAsPowOf4);
00070 void zplfCompMac_I_Gen (zCOMPLEX *pfSrcDest, zCOMPLEX *pfSrc1, float *pfSrc2, int iRealLengthAsPowOf4);
00071 void zplfCompAbs_Gen (float *pfDest, zCOMPLEX *pfSrc1, int iRealLengthAsPowOf4);
00072 void zplfRealFindMax_Gen (float *pfSrc, float *pfMax, int *piIdx, int iLengthAsPowOf4);
00073 int zplfZeroCrossings_Gen (float *pfSrc, int iLengthAsPowOf4);
00074 int zplfFFTCreateInstance_Gen (CzplfFFT_If*& pCFFT, int iBlockLength, int iZeroPadFactor, CzplfFFT_If::_Fft_Windows_ eWindowType);
00075 int zplfFFTDestroyInstance_Gen (CzplfFFT_If*& pCFFT);
00076
00077 void zplVecLibDispatcher ()
00078 {
00079 int iCPUID = 0;
00080
00081 if (bzplVecLibDispatcherInitialized)
00082 return;
00083
00084 bzplVecLibDispatcherInitialized = true;
00085
00086
00087 zplfMalloc = zplfMalloc_Gen;
00088 zplfFree = zplfFree_Gen;
00089 zplfSetZero = zplfSetZero_Gen;
00090 zplfRealFindMax = zplfRealFindMax_Gen;
00091 zplfRealAdd_I = zplfRealAdd_I_Gen;
00092 zplfRealAddC_I = zplfRealAddC_I_Gen;
00093 zplfRealSub_I = zplfRealSub_I_Gen;
00094 zplfRealMul_I = zplfRealMul_I_Gen;
00095 zplfRealMulC_I = zplfRealMulC_I_Gen;
00096 zplfRealDiv_I = zplfRealDiv_I_Gen;
00097 zplfRealMac_I = zplfRealMac_I_Gen;
00098 zplfRealAbs_I = zplfRealAbs_I_Gen;
00099 zplfRealSum = zplfRealSum_Gen;
00100 zplfCompAdd_I = zplfCompAdd_I_Gen;
00101 zplfCompMul_I = zplfCompMul_I_Gen;
00102 zplfCompDiv_I = zplfCompDiv_I_Gen;
00103 zplfCompMac_I = zplfCompMac_I_Gen;
00104 zplfCompAbs = zplfCompAbs_Gen;
00105 zplfZeroCrossings = zplfZeroCrossings_Gen;
00106 zplfFFTCreateInstance = zplfFFTCreateInstance_Gen;
00107 zplfFFTDestroyInstance = zplfFFTDestroyInstance_Gen;
00108
00109 }