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 
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                             \
00103     if (hInstanceHandle == 0)                                       \
00104         return FEAPI_kUnspecifiedError;                             \
00105                                                                     \
00106                                         \
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                            \
00120     if (hInstanceHandle == 0)                                       \
00121         return FEAPI_kUnspecifiedError;                             \
00122                                                                     \
00123                                         \
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                            \
00137     if (hInstanceHandle == 0)                                       \
00138         return FEAPI_kUnspecifiedError;                             \
00139                                                                     \
00140                                         \
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                            \
00153     if (hInstanceHandle == 0)                                       \
00154         return FEAPI_kUnspecifiedError;                             \
00155                                                                     \
00156                                         \
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                           \
00171     if (hInstanceHandle == 0)                                       \
00172         return FEAPI_kUnspecifiedError;                             \
00173                                                                     \
00174                                   \
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                             \
00188     if (hInstanceHandle == 0)                                       \
00189         return FEAPI_kUnspecifiedError;                             \
00190                                                                     \
00191                                       \
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                             \
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                                   \
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                                       \
00449     *phInstanceHandle   = 0;                                        \
00450                                                                     \
00451     return FEAPI_kNoError;                                          \
00452                                                                     \
00453 }
00454