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

FEAPIEntryPoints.h

Go to the documentation of this file.
00001 
00002 //     /*! \file FEAPIEntryPoints.h: \brief wrapped C interface of C++-plugin API */
00003 //
00004 //        Copyright (c) 2004-2007, Alexander Lerch, zplane.development GbR
00005 //        All rights reserved.
00006 //
00007 //        Redistribution and use in source and binary forms, with or without 
00008 //        modification, are permitted provided that the following conditions 
00009 //        are met:
00010 //
00011 //        *   Redistributions of source code must retain the above copyright 
00012 //            notice, this list of conditions and the following disclaimer. 
00013 //        *   Redistributions in binary form must reproduce the above 
00014 //            copyright notice, this list of conditions and the following 
00015 //            disclaimer in the documentation and/or other materials 
00016 //            provided with the distribution. 
00017 //        *   Neither the name of the FEAPI development team nor the names 
00018 //            of its contributors may be used to endorse or promote products 
00019 //            derived from this software without specific prior written 
00020 //            permission. 
00021 //
00022 //        THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
00023 //        "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
00024 //        LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
00025 //        FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
00026 //        COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
00027 //        INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
00028 //        BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
00029 //        LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
00030 //        CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
00031 //        LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
00032 //        ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
00033 //        POSSIBILITY OF SUCH DAMAGE.
00034 //
00036 
00037 #ifdef WIN32
00038 #define FEAPI_API __declspec(dllexport)                             
00039 #else                                                               
00040 #define FEAPI_API extern                                            
00041 #endif                                                              
00042 
00043 #define FEAPI_ENTRY_POINTS(theFEAPIPluginClass)                     \
00044                                                                     \
00045                                                                     \
00046 FEAPI_API unsigned int     FEAPI_GetPluginAPIVersion (FEAPI_VersionInfo_t iApiMajorMinorOrSubVersion)        \
00047 {                                                                   \
00048     return theFEAPIPluginClass::GetPluginAPIVersion (iApiMajorMinorOrSubVersion);                   \
00049 }                                                                   \
00050                                                                     \
00051                                                                     \
00052 FEAPI_API FEAPI_Error_t  FEAPI_GetPluginName (  FEAPI_PluginInstance_t hInstanceHandle,             \
00053                                                 char *pcPluginName) \
00054 {                                                                   \
00055     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00056                                                                     \
00057     if (hInstanceHandle == 0)                                       \
00058         return FEAPI_kUnspecifiedError;                             \
00059                                                                     \
00060     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00061                                                                     \
00062     return pCPluginInstance->GetPluginName ( pcPluginName );        \
00063                                                                     \
00064 }                                                                   \
00065                                                                     \
00066                                                                     \
00067 FEAPI_API FEAPI_Error_t  FEAPI_GetPluginVendor (FEAPI_PluginInstance_t hInstanceHandle,             \
00068                                                 char *pcPluginVendor)                               \
00069 {                                                                   \
00070     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00071                                                                     \
00072     if (hInstanceHandle == 0)                                       \
00073         return FEAPI_kUnspecifiedError;                             \
00074                                                                     \
00075     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00076                                                                     \
00077     return pCPluginInstance->GetPluginVendor ( pcPluginVendor );    \
00078                                                                     \
00079 }                                                                   \
00080                                                                     \
00081                                                                     \
00082 FEAPI_API FEAPI_Error_t  FEAPI_GetPluginId (    FEAPI_PluginInstance_t hInstanceHandle,             \
00083                                                 char *pcPluginId)   \
00084 {                                                                   \
00085     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00086                                                                     \
00087     if (hInstanceHandle == 0)                                       \
00088         return FEAPI_kUnspecifiedError;                             \
00089                                                                     \
00090     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00091                                                                     \
00092     return pCPluginInstance->GetPluginId ( pcPluginId );            \
00093                                                                     \
00094 }                                                                   \
00095                                                                     \
00096                                                                     \
00097 FEAPI_API unsigned int     FEAPI_GetPluginVendorVersion (FEAPI_PluginInstance_t hInstanceHandle,             \
00098                                                 FEAPI_VersionInfo_t iApiMajorMinorOrSubVersion)     \
00099 {                                                                   \
00100     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00101                                                                     \
00102     /* check for invalid structure pointer*/                        \
00103     if (hInstanceHandle == 0)                                       \
00104         return FEAPI_kUnspecifiedError;                             \
00105                                                                     \
00106     /* set handle to instance */                                    \
00107     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00108                                                                     \
00109     return pCPluginInstance->GetPluginVendorVersion (iApiMajorMinorOrSubVersion);                   \
00110                                                                     \
00111 }                                                                   \
00112                                                                     \
00113                                                                     \
00114 FEAPI_API FEAPI_Error_t  FEAPI_GetPluginDescription (   FEAPI_PluginInstance_t hInstanceHandle,     \
00115                                                         char *pcPluginDescription)                  \
00116 {                                                                   \
00117     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00118                                                                     \
00119     /* check for invalid structure pointer */                       \
00120     if (hInstanceHandle == 0)                                       \
00121         return FEAPI_kUnspecifiedError;                             \
00122                                                                     \
00123     /* set handle to instance */                                    \
00124     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00125                                                                     \
00126     return pCPluginInstance->GetPluginDescription ( pcPluginDescription );                          \
00127                                                                     \
00128 }                                                                   \
00129                                                                     \
00130                                                                     \
00131 FEAPI_API FEAPI_Error_t  FEAPI_GetPluginCopyright ( FEAPI_PluginInstance_t hInstanceHandle,         \
00132                                                     char *pcPluginCopyright)                        \
00133 {                                                                   \
00134     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00135                                                                     \
00136     /* check for invalid structure pointer */                       \
00137     if (hInstanceHandle == 0)                                       \
00138         return FEAPI_kUnspecifiedError;                             \
00139                                                                     \
00140     /* set handle to instance */                                    \
00141     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00142                                                                     \
00143     return pCPluginInstance->GetPluginCopyright ( pcPluginCopyright );                              \
00144                                                                     \
00145 }                                                                   \
00146                                                                     \
00147                                                                     \
00148 FEAPI_API unsigned int     FEAPI_GetPluginNumOfResults (FEAPI_PluginInstance_t hInstanceHandle)              \
00149 {                                                                   \
00150     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00151                                                                     \
00152     /* check for invalid structure pointer */                       \
00153     if (hInstanceHandle == 0)                                       \
00154         return FEAPI_kUnspecifiedError;                             \
00155                                                                     \
00156     /* set handle to instance */                                    \
00157     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00158                                                                     \
00159     return pCPluginInstance->GetPluginNumOfResults ( );             \
00160                                                                     \
00161 }                                                                   \
00162                                                                     \
00163                                                                     \
00164 FEAPI_API FEAPI_Error_t  FEAPI_GetPluginResultDescription ( FEAPI_PluginInstance_t hInstanceHandle, \
00165                                                             int iResultIndex,                       \
00166                                                             FEAPI_SignalDescription_t *pstResultDescription)\
00167 {                                                                   \
00168     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00169                                                                     \
00170     /* check for invalid structure pointer  */                      \
00171     if (hInstanceHandle == 0)                                       \
00172         return FEAPI_kUnspecifiedError;                             \
00173                                                                     \
00174     /* set handle to instance       */                              \
00175     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00176                                                                     \
00177     return pCPluginInstance->GetPluginResultDescription (   iResultIndex,                           \
00178                                                     pstResultDescription);                          \
00179                                                                     \
00180 }                                                                   \
00181                                                                     \
00182                                                                     \
00183 FEAPI_API unsigned int     FEAPI_GetPluginNumOfInputs (FEAPI_PluginInstance_t hInstanceHandle)               \
00184 {                                                                   \
00185     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00186                                                                     \
00187     /* check for invalid structure pointer*/                        \
00188     if (hInstanceHandle == 0)                                       \
00189         return FEAPI_kUnspecifiedError;                             \
00190                                                                     \
00191     /* set handle to instance   */                                  \
00192     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00193                                                                     \
00194     return pCPluginInstance->GetPluginNumOfInputs ();               \
00195                                                                     \
00196 }                                                                   \
00197                                                                     \
00198                                                                     \
00199 FEAPI_API FEAPI_Error_t  FEAPI_GetPluginInputDescription (  FEAPI_PluginInstance_t hInstanceHandle, \
00200                                                             int iInputIndex,                        \
00201                                                             FEAPI_SignalDescription_t *pstInputDescription)\
00202 {                                                                   \
00203     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00204                                                                     \
00205     if (hInstanceHandle == 0)                                       \
00206         return FEAPI_kUnspecifiedError;                             \
00207                                                                     \
00208     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00209                                                                     \
00210     return pCPluginInstance->GetPluginInputDescription (    iInputIndex,                            \
00211                                                     pstInputDescription);                           \
00212                                                                     \
00213 }                                                                   \
00214                                                                     \
00215                                                                     \
00216 FEAPI_API unsigned int     FEAPI_GetPluginNumOfParameters (FEAPI_PluginInstance_t hInstanceHandle)           \
00217 {                                                                   \
00218     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00219                                                                     \
00220     if (hInstanceHandle == 0)                                       \
00221         return FEAPI_kUnspecifiedError;                             \
00222                                                                     \
00223     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00224                                                                     \
00225     return pCPluginInstance->GetPluginNumOfParameters ( );          \
00226                                                                     \
00227 }                                                                   \
00228                                                                     \
00229                                                                     \
00230 FEAPI_API FEAPI_Error_t  FEAPI_GetPluginParameterDescription (  FEAPI_PluginInstance_t hInstanceHandle,\
00231                                                                 int iParameterIndex,                \
00232                                                                 FEAPI_ParameterDescription_t *pstParameterDescription)\
00233 {                                                                   \
00234     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00235                                                                     \
00236     if (hInstanceHandle == 0)                                       \
00237         return FEAPI_kUnspecifiedError;                             \
00238                                                                     \
00239     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00240                                                                     \
00241     return pCPluginInstance->GetPluginParameterDescription (    iParameterIndex,                    \
00242                                                                 pstParameterDescription);           \
00243                                                                     \
00244 }                                                                   \
00245                                                                     \
00246                                                                     \
00247 FEAPI_API FEAPI_Error_t  FEAPI_SetPluginParameter ( FEAPI_PluginInstance_t hInstanceHandle,         \
00248                                                     int iParameterIndex,                            \
00249                                                     float fValue)   \
00250 {                                                                   \
00251     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00252                                                                     \
00253     if (hInstanceHandle == 0)                                       \
00254         return FEAPI_kUnspecifiedError;                             \
00255                                                                     \
00256     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00257                                                                     \
00258     return pCPluginInstance->SetPluginParameter (   iParameterIndex,\
00259                                                     fValue);        \
00260                                                                     \
00261 }                                                                   \
00262                                                                     \
00263                                                                     \
00264 FEAPI_API float   FEAPI_GetPluginParameter (    FEAPI_PluginInstance_t hInstanceHandle,             \
00265                                                 int iParameterIndex)\
00266 {                                                                   \
00267     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00268                                                                     \
00269     if (hInstanceHandle == 0)                                       \
00270         return 1e38F;                                               \
00271                                                                     \
00272     pCPluginInstance      = ( theFEAPIPluginClass*)hInstanceHandle; \
00273                                                                     \
00274     return pCPluginInstance->GetPluginParameter ( iParameterIndex );\
00275                                                                     \
00276 }                                                                   \
00277                                                                     \
00278                                                                     \
00279                                                                     \
00280 FEAPI_API int FEAPI_GetPluginResultLatency (    FEAPI_PluginInstance_t hInstanceHandle,             \
00281                                                 int iResultIndex)   \
00282 {                                                                   \
00283     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00284                                                                     \
00285     if (hInstanceHandle == 0)                                       \
00286         return 0;                                                   \
00287                                                                     \
00288     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00289                                                                     \
00290     return pCPluginInstance->GetPluginResultLatency (iResultIndex); \
00291                                                                     \
00292 }                                                                   \
00293                                                                     \
00294                                                                     \
00295 FEAPI_API FEAPI_Error_t  FEAPI_ProcessPlugin (  FEAPI_PluginInstance_t hInstanceHandle,             \
00296                                                 const float **ppfInputBuffer,                       \
00297                                                 const FEAPI_TimeStamp_t *pfTimeStamps,              \
00298                                                 int iNumberOfFrames)\
00299 {                                                                   \
00300     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00301                                                                     \
00302     if (hInstanceHandle == 0)                                       \
00303         return FEAPI_kUnspecifiedError;                             \
00304                                                                     \
00305     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00306                                                                     \
00307     return pCPluginInstance->ProcessPlugin (    ppfInputBuffer,     \
00308                                         pfTimeStamps,               \
00309                                         iNumberOfFrames);           \
00310                                                                     \
00311 }                                                                   \
00312                                                                     \
00313                                                                     \
00314 FEAPI_API FEAPI_Error_t  FEAPI_ProcessPluginDone (FEAPI_PluginInstance_t hInstanceHandle)           \
00315 {                                                                   \
00316     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00317                                                                     \
00318     if (hInstanceHandle == 0)                                       \
00319         return FEAPI_kUnspecifiedError;                             \
00320                                                                     \
00321     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00322                                                                     \
00323     return pCPluginInstance->ProcessPluginDone ( );                 \
00324                                                                     \
00325 }                                                                   \
00326                                                                     \
00327                                                                     \
00328                                                                     \
00329 FEAPI_API int     FEAPI_GetPluginSizeOfResult ( FEAPI_PluginInstance_t hInstanceHandle,             \
00330                                                 int iResultIndex)   \
00331 {                                                                   \
00332     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00333                                                                     \
00334     if (hInstanceHandle == 0)                                       \
00335         return -1;                                                  \
00336                                                                     \
00337     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00338                                                                     \
00339     return pCPluginInstance->GetPluginSizeOfResult ( iResultIndex );\
00340                                                                     \
00341 }                                                                   \
00342                                                                     \
00343                                                                     \
00344 FEAPI_API FEAPI_Error_t FEAPI_GetPluginResult ( FEAPI_PluginInstance_t hInstanceHandle,             \
00345                                                 int iResultIndex,   \
00346                                                 float *pfResult,    \
00347                                                 FEAPI_TimeStamp_t *ptTimeStamp)                     \
00348 {                                                                   \
00349     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00350                                                                     \
00351     if (hInstanceHandle == 0)                                       \
00352         return FEAPI_kUnspecifiedError;                             \
00353                                                                     \
00354     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00355                                                                     \
00356     return pCPluginInstance->GetPluginResult (  iResultIndex,       \
00357                                         pfResult,                   \
00358                                         ptTimeStamp);               \
00359                                                                     \
00360 }                                                                   \
00361                                                                     \
00362                                                                     \
00363 FEAPI_API float FEAPI_GetPluginProperty (   FEAPI_PluginInstance_t hInstanceHandle,                 \
00364                                             FEAPI_PluginProperty_t ePluginProperty,                 \
00365                                             float  fValue)          \
00366 {                                                                   \
00367     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00368                                                                     \
00369     if (hInstanceHandle == 0)                                       \
00370         return FEAPI_kUnspecifiedError;                             \
00371                                                                     \
00372     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00373                                                                     \
00374     return pCPluginInstance->GetPluginProperty (  ePluginProperty); \
00375                                                                     \
00376 }                                                                   \
00377                                                                     \
00378                                                                     \
00379                                                                     \
00380 FEAPI_API FEAPI_Error_t  FEAPI_ResetPlugin (FEAPI_PluginInstance_t hInstanceHandle)                 \
00381 {                                                                   \
00382     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00383                                                                     \
00384     if (hInstanceHandle == 0)                                       \
00385         return FEAPI_kUnspecifiedError;                             \
00386                                                                     \
00387     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00388                                                                     \
00389     return pCPluginInstance->ResetPlugin ( );                       \
00390                                                                     \
00391 }                                                                   \
00392                                                                     \
00393                                                                     \
00394 FEAPI_API FEAPI_Error_t FEAPI_InitializePlugin (FEAPI_PluginInstance_t hInstanceHandle,             \
00395                                                 float fInputSampleRate,                             \
00396                                                 int iNumberOfAudioChannels,                         \
00397                                                 int iHostApiMajorVersion,                           \
00398                                                 FEAPI_UserData_t *pstUserData)                      \
00399 {                                                                   \
00400     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00401                                                                     \
00402     if (hInstanceHandle == 0)                                       \
00403         return FEAPI_kUnspecifiedError;                             \
00404                                                                     \
00405     pCPluginInstance      = (theFEAPIPluginClass*)hInstanceHandle;  \
00406                                                                     \
00407     /* check for correct API major version*/                        \
00408     if (iHostApiMajorVersion != CFeatureExtractBase::GetPluginAPIVersion (FEAPI_kMajorVersion))     \
00409         return FEAPI_kUnspecifiedError;                             \
00410                                                                     \
00411                                                                     \
00412     return pCPluginInstance->InitializePlugin (   fInputSampleRate, \
00413                                                 iNumberOfAudioChannels,                             \
00414                                                 iHostApiMajorVersion,                               \
00415                                                 pstUserData);       \
00416 }                                                                   \
00417                                                                     \
00418                                                                     \
00419 FEAPI_API FEAPI_Error_t FEAPI_CreatePluginInstance ( FEAPI_PluginInstance_t *phInstanceHandle)      \
00420 {                                                                   \
00421     theFEAPIPluginClass   *pCPluginInstance     = 0;                \
00422                                                                     \
00423     if (phInstanceHandle == 0)                                      \
00424         return FEAPI_kUnspecifiedError;                             \
00425                                                                     \
00426     /* create new FEAPI_in instance */                              \
00427     pCPluginInstance  = new theFEAPIPluginClass ();                 \
00428                                                                     \
00429     if (pCPluginInstance == 0)                                      \
00430         return FEAPI_kUnspecifiedError;                             \
00431     else                                                            \
00432     {                                                               \
00433         *phInstanceHandle      = (void*) pCPluginInstance;          \
00434     }                                                               \
00435                                                                     \
00436     return FEAPI_kNoError;                                          \
00437 }                                                                   \
00438                                                                     \
00439 FEAPI_API FEAPI_Error_t   FEAPI_DestroyPluginInstance (FEAPI_PluginInstance_t *phInstanceHandle)        \
00440 {                                                                   \
00441     theFEAPIPluginClass  *pCPluginInstance  = (theFEAPIPluginClass*) *phInstanceHandle;                 \
00442                                                                     \
00443     if (pCPluginInstance == 0)                                      \
00444         return FEAPI_kUnspecifiedError;                             \
00445                                                                     \
00446     delete pCPluginInstance;                                        \
00447                                                                     \
00448     /* reset instance handle    */                                  \
00449     *phInstanceHandle   = 0;                                        \
00450                                                                     \
00451     return FEAPI_kNoError;                                          \
00452                                                                     \
00453 }
00454 

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