5#ifndef SPLIB_FFTPLUGIN_H 
    6#define SPLIB_FFTPLUGIN_H 
    8#include <sp/spPluginP.h> 
   15#define SP_PLUGIN_FFT "FFT 1.2" 
   17#define SP_FFT_PLUGIN_CAPS_SUPPORT_BATCH (1<<(SP_PLUGIN_CAPS_USER_SHIFT)) 
   19typedef struct _spFFTPluginRec spFFTPluginRec;
 
   31    spBool (*init)(
const char *lang);
 
   36    void *(*init_instance)(
const char *lang);
 
   37    spBool (*free_instance)(
void *instance);
 
   38    spOptions (*init_options)(
void *instance, 
const char *lang);
 
   41    spBool (*get_num_unit)(
void *instance, 
int *num_unit);
 
   42    const char *(*get_unit_name)(
void *instance, 
int index);
 
   43    spBool (*select_unit)(
void *instance, 
int index);
 
   45    spBool (*is_precision_supported)(
void *instance, spFFTPrecision precision, spFFTSpeed *speed);
 
   47    spBool (*set_other_info)(
void *instance, 
const char *id, 
char *data);
 
   48    spBool (*get_other_info)(
void *instance, 
const char *id, 
char *data);
 
   50    void *(*init_fft)(
void *instance, 
long order, 
long batch, spFFTPrecision precision);    
 
   51    spBool (*free_fft)(
void *instance, 
void *fftrec);
 
   52    spBool (*reset_fft_order)(
void *instance, 
void *fftrec, 
long order);
 
   54    spBool (*exec_fftf)(
void *instance, 
void *fftrec, 
float *real, 
float *imag, 
int inv);    
 
   55    spBool (*exec_fft)(
void *instance, 
void *fftrec, 
double *real, 
double *imag, 
int inv);    
 
   57    spBool (*exec_real_fftf)(
void *instance, 
void *fftrec, 
float *data, 
int inv);    
 
   58    spBool (*exec_real_fft)(
void *instance, 
void *fftrec, 
double *data, 
int inv);    
 
   62    spBool (*exec_fft_powerf)(
void *instance, 
void *fftrec, 
float *data, 
float exponent);    
 
   63    spBool (*exec_fft_power)(
void *instance, 
void *fftrec, 
double *data, 
double exponent);    
 
   66#define SpFFTRecPluginRec(fftrec) ((spFFTPluginRec *)fftrec->plugin->rec) 
   71extern spBool spExecFFTF_Plugin(
spFFTRec fftrec, 
float *real, 
float *imag, 
int inv);
 
   72extern spBool spExecFFT_Plugin(
spFFTRec fftrec, 
double *real, 
double *imag, 
int inv);
 
   73extern spBool spExecRealFFTF_Plugin(
spFFTRec fftrec, 
float *data, 
int inv);
 
   74extern spBool spExecRealFFT_Plugin(
spFFTRec fftrec, 
double *data, 
int inv);
 
   75extern spBool spExecFFTPowerF_Plugin(
spFFTRec fftrec, 
float *data, 
float exponent);
 
   76extern spBool spExecFFTPower_Plugin(
spFFTRec fftrec, 
double *data, 
double exponent);
 
struct _spOptions * spOptions