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

FEAPIExamplePluginLoudness/zplVecLibDispatch.cpp

Go to the documentation of this file.
00001 
00002 //     /*! \file zplVecLibDispatch.cpp: \brief implementation of the zplVecLibDispatcher. */
00003 //
00004 //        Copyright (c) 2004-2006  
00005 //        zplane.development
00006 //        Flohrer Lerch Schwerdtfeger GbR
00007 //        All rights reserved.
00008 //
00009 //    This program is free software; you can redistribute it and/or modify
00010 //    it under the terms of the GNU General Public License as published by
00011 //    the Free Software Foundation; either version 2 of the License, or
00012 //    (at your option) any later version.
00013 //
00014 //    This program is distributed in the hope that it will be useful,
00015 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017 //    GNU General Public License for more details.
00018 //
00019 //    You should have received a copy of the GNU General Public License
00020 //    along with this program; if not, write to the Free Software
00021 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00024 
00025 #include "zplVecLib.h"
00026 
00027 static bool bzplVecLibDispatcherInitialized = false;
00028 
00029 // function pointers
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 // function declarations
00053 // generic function declarations
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     // init function pointers to generic functions
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 }

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