Main Page | Modules | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

FEAPIExamplePluginZeroCrossings/zplVecLibDispatch.cpp

Go to the documentation of this file.
00001 
00002 //     /*! \file zplVecLibDispatch.cpp: \brief implementation of the zplVecLibDispatcher. */
00003 //
00004 //        Copyright (c) 2004-2007  
00005 //        zplane.development
00006 //        Flohrer Lerch Schwerdtfeger GbR
00007 //        All rights reserved.
00008 //
00009 //        Redistribution and use in source and binary forms, with or without 
00010 //        modification, are permitted provided that the following conditions 
00011 //        are met:
00012 //
00013 //        *   Redistributions of source code must retain the above copyright 
00014 //            notice, this list of conditions and the following disclaimer. 
00015 //        *   Redistributions in binary form must reproduce the above 
00016 //            copyright notice, this list of conditions and the following 
00017 //            disclaimer in the documentation and/or other materials 
00018 //            provided with the distribution. 
00019 //        *   Neither the name of the FEAPI development team nor the names 
00020 //            of its contributors may be used to endorse or promote products 
00021 //            derived from this software without specific prior written 
00022 //            permission. 
00023 //
00024 //        THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
00025 //        "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
00026 //        LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
00027 //        FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
00028 //        COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
00029 //        INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
00030 //        BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
00031 //        LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
00032 //        CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
00033 //        LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
00034 //        ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
00035 //        POSSIBILITY OF SUCH DAMAGE.
00036 //
00038 
00039 #include "zplVecLib.h"
00040 
00041 static bool bzplVecLibDispatcherInitialized = false;
00042 
00043 // function pointers
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 // function declarations
00067 // generic function declarations
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     // init function pointers to generic functions
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 }

Generated on Fri Mar 23 10:28:54 2007 for FEAPI Plugin Documentation by  doxygen 1.3.9.1