mcbts: Add multi-ARFCN channelizing filters

Introduce polyphase channelizer (Rx) and synthesis (Tx) filterbanks,
which serve as the signal processing backend for multi-carrier GSM.

Fast Fourier Transform (FFT) is used internally. FFTW is added as
a new build dependency.

Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
diff --git a/Transceiver52M/ChannelizerBase.h b/Transceiver52M/ChannelizerBase.h
new file mode 100644
index 0000000..7da506b
--- /dev/null
+++ b/Transceiver52M/ChannelizerBase.h
@@ -0,0 +1,39 @@
+#ifndef _CHANNELIZER_BASE_H_
+#define _CHANNELIZER_BASE_H_
+
+class ChannelizerBase {
+protected:
+	ChannelizerBase(size_t m, size_t blockLen, size_t hLen);
+	~ChannelizerBase();
+
+	/* Channelizer parameters */
+	size_t m;
+	size_t hLen;
+	size_t blockLen;
+
+	/* Channelizer filterbank sub-filters */
+	float **subFilters;
+
+	/* Input/Output buffers */
+	float **hInputs, **hOutputs, **hist;
+	float *fftInput, *fftOutput;
+
+	/* Pointer to opaque FFT instance */
+	struct fft_hdl *fftHandle;
+
+	/* Initializer internals */
+	bool initFilters();
+	bool initFFT();
+	void releaseFilters();
+
+	/* Map overlapped FFT and filter I/O buffers */
+	bool mapBuffers();
+
+	/* Buffer length validity checking */
+	bool checkLen(size_t innerLen, size_t outerLen);
+public:
+	/* Initilize channelizer/synthesis filter internals */
+	bool init();
+};
+
+#endif /* _CHANNELIZER_BASE_H_ */