+ typedef enum {
+ FILTER_INVALID,
+ FILTER_BANDLIMIT,
+ FILTER_SINC,
+ FILTER_G_HAMMING,
+ FILTER_COSINE,
+ FILTER_TRIANGLE,
+ FILTER_ABS_BANDLIMIT, // filter times |x|
+ FILTER_ABS_SINC,
+ FILTER_ABS_G_HAMMING,
+ FILTER_ABS_COSINE,
+ FILTER_SHEPP
+ } FilterID;
+
+ typedef enum {
+ FILTER_METHOD_INVALID,
+ FILTER_METHOD_CONVOLUTION,
+ FILTER_METHOD_FOURIER,
+ FILTER_METHOD_FOURIER_TABLE,
+ FILTER_METHOD_FFT,
+#if HAVE_FFTW
+ FILTER_METHOD_FFTW,
+ FILTER_METHOD_RFFTW,
+#endif
+ } FilterMethodID;
+
+ typedef enum {
+ DOMAIN_INVALID,
+ DOMAIN_FREQUENCY,
+ DOMAIN_SPATIAL
+ } DomainID;
+
+ static const char FILTER_ABS_BANDLIMIT_STR[]= "abs_bandlimit";
+ static const char FILTER_ABS_SINC_STR[]= "abs_sinc";
+ static const char FILTER_ABS_COS_STR[]= "abs_cos";
+ static const char FILTER_ABS_HAMMING_STR[]= "abs_hamming";
+ static const char FILTER_SHEPP_STR[]= "shepp";
+ static const char FILTER_BANDLIMIT_STR[]= "bandlimit";
+ static const char FILTER_SINC_STR[]= "sinc";
+ static const char FILTER_COS_STR[]= "cos";
+ static const char FILTER_HAMMING_STR[]= "hamming";
+ static const char FILTER_TRIANGLE_STR[]= "triangle";
+
+ static const char FILTER_METHOD_CONVOLUTION_STR[]= "convolution";
+ static const char FILTER_METHOD_FOURIER_STR[]= "fourier";
+ static const char FILTER_METHOD_FOURIER_TABLE_STR[]="fourier_table";
+ static const char FILTER_METHOD_FFT_STR[]= "fft";
+#if HAVE_FFTW
+ static const char FILTER_METHOD_FFTW_STR[]= "fftw";
+ static const char FILTER_METHOD_RFFTW_STR[]= "rfftw";
+#endif
+
+ static const char DOMAIN_FREQUENCY_STR[]="frequency";
+ static const char DOMAIN_SPATIAL_STR[]="spatial";
+
+
+ SignalFilter (const char* filterName, const char* filterMethodName,double bw, double signalIncrement, int n, double param, const char* domainName, const int zeropad = 0, const int preinterpolationFactor = 1);
+
+ SignalFilter (const FilterID filt_type, FilterMethodID filterMethodID, double bw, double signalIncrement, int n, double param, const DomainID domain, const int zeropad = 0, const int preinterpolationFactor = 1);
+
+ SignalFilter (const char* filterName, const char* domainName, double bw, double param);