blob: 025ff257081594ad22ef5cfb70144e96ae883198 [file] [log] [blame]
Tom Tsou35222292016-06-22 16:16:30 -07001#ifndef _CHANNELIZER_BASE_H_
2#define _CHANNELIZER_BASE_H_
3
4class ChannelizerBase {
5protected:
6 ChannelizerBase(size_t m, size_t blockLen, size_t hLen);
7 ~ChannelizerBase();
8
9 /* Channelizer parameters */
10 size_t m;
11 size_t hLen;
12 size_t blockLen;
13
14 /* Channelizer filterbank sub-filters */
15 float **subFilters;
16
17 /* Input/Output buffers */
18 float **hInputs, **hOutputs, **hist;
19 float *fftInput, *fftOutput;
20
21 /* Pointer to opaque FFT instance */
22 struct fft_hdl *fftHandle;
23
24 /* Initializer internals */
25 bool initFilters();
26 bool initFFT();
27 void releaseFilters();
28
29 /* Map overlapped FFT and filter I/O buffers */
30 bool mapBuffers();
31
32 /* Buffer length validity checking */
33 bool checkLen(size_t innerLen, size_t outerLen);
34public:
Martin Hauke066fd042019-10-13 19:08:00 +020035 /* Initialize channelizer/synthesis filter internals */
Tom Tsou35222292016-06-22 16:16:30 -070036 bool init();
37};
38
39#endif /* _CHANNELIZER_BASE_H_ */