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