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 #if !defined(SPECTRAL_HEADER_INCLUDED__)
00038 #define SPECTRAL_HEADER_INCLUDED__
00039
00040
00041 #include "FEAPIPluginBase.h"
00042
00043 template <class T> class CRingBuffer;
00044 class CzplfFFT_If;
00045
00048 class CSpectralFeatures : public CFeatureExtractBase
00049 {
00050 public:
00051
00052 CSpectralFeatures ();
00053
00054 virtual ~CSpectralFeatures ();
00055
00056
00058
00059
00060
00061
00062 FEAPI_Error_t SetPluginParameter ( int iParameterIndex,
00063 float fValue);
00064
00065 float GetPluginParameter ( int iParameterIndex);
00066
00067
00068 int GetPluginResultLatency (int iResultIndex);
00069
00070 float GetPluginProperty ( FEAPI_PluginProperty_t ePluginProperty);
00071
00072 FEAPI_Error_t InitializePlugin ( float fInputSampleRate,
00073 int iNumberOfAudioChannels,
00074 int iHostApiMajorVersion,
00075 FEAPI_UserData_t *pstUserData);
00076
00077 FEAPI_Error_t ProcessPlugin ( const float **ppfInputBuffer,
00078 const FEAPI_TimeStamp_t *ptFEAPI_TimeStamp,
00079 int iNumberOfFrames);
00080
00081 FEAPI_Error_t ProcessPluginDone ();
00082
00083
00084 int GetPluginSizeOfResult (int iResultIndex);
00085
00086 FEAPI_Error_t GetPluginResult ( int iResultIndex,
00087 float *pfResult,
00088 FEAPI_TimeStamp_t *ptFEAPI_TimeStamp);
00089
00090
00091 FEAPI_Error_t ResetPlugin ();
00092
00093 private:
00094
00095 struct InternalResults_t
00096 {
00097 bool bHoldsResult;
00098 float fResult;
00099 FEAPI_TimeStamp_t tTimeStamp;
00100 };
00101
00102 void WriteResult (int iResultIdx, float fValue, FEAPI_TimeStamp_t tTimStamp);
00103 int CalcFreqTable ();
00104
00105
00106 FEAPI_SignalDescription_t m_stResultDescription;
00107 FEAPI_TimeStamp_t *m_ptLocalTimeStamp;
00108
00109
00110 float *m_pfParameters,
00111 *m_pfProcessBuffer,
00112 **m_ppfFFTHistory,
00113 *m_pfHelpBuffer,
00114 *m_pfLogFreqs;
00115
00116 CRingBuffer<float> **m_ppCRingBuffer;
00117
00118 InternalResults_t **m_ppResults;
00119
00120 CzplfFFT_If *m_pFFTInstance;
00121
00122 int m_iSizeOfResultBuffer,
00123 m_iMPEG7SetZero;
00124 };
00125
00126 #endif // #if !defined(SPECTRAL_HEADER_INCLUDED__)
00127
00128
00129