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