1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #ifndef cmProc5_h
- #define cmProc5_h
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
-
- //=======================================================================================================================
- // Goertzel Filter
- //
-
- typedef struct
- {
- double s0;
- double s1;
- double s2;
- double coeff;
- double hz;
- } cmGoertzelCh;
-
- struct cmShiftBuf_str;
-
- typedef struct cmGoertzel_str
- {
- cmObj obj;
- cmGoertzelCh* ch;
- unsigned chCnt;
- double srate;
- struct cmShiftBuf_str* shb;
- cmSample_t* wnd;
- } cmGoertzel;
-
- cmGoertzel* cmGoertzelAlloc( cmCtx* c, cmGoertzel* p, double srate, const double* fcHzV, unsigned chCnt, unsigned procSmpCnt, unsigned hopSmpCnt, unsigned wndSmpCnt );
- cmRC_t cmGoertzelFree( cmGoertzel** pp );
- cmRC_t cmGoertzelInit( cmGoertzel* p, double srate, const double* fcHzV, unsigned chCnt, unsigned procSmpCnt, unsigned hopSmpCnt, unsigned wndSmpCnt );
- cmRC_t cmGoertzelFinal( cmGoertzel* p );
- cmRC_t cmGoertzelSetFcHz( cmGoertzel* p, unsigned chIdx, double hz );
- cmRC_t cmGoertzelExec( cmGoertzel* p, const cmSample_t* in, unsigned procSmpCnt, double* outV, unsigned chCnt );
-
-
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif
|