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 }