int QccFilterVector(const QccVector input_signal, QccVector output_signal, int length, const QccFilter *filter, int boundary_extension);
The FIR filtering operation is implemented by a time-domain convolution of finite-length signals. boundary_extension informs QccFilterVector() of the method to employ to handle the left and right signal boundaries in this convolution. Possible values of boundary_extension are QCCFILTER_SYMMETRIC_EXTENSION, or QCCFILTER_PERIODIC_EXTENSION. In the case of QCCFILTER_SYMMETRIC_EXTENSION, when the filter overlaps a signal boundary during convolution, the data points beyond the boundary are "mirrored" back into the signal. That is, the input signal is assumed to be symmetric at the signal boundary. In the case of QCCFILTER_PERIODIC_EXTENSION, when the filter overlaps a signal boundary during convolution, the data points beyond the boundary are "wrapped around" to the other end of the signal. That is, the input signal is assumed to be one period of an infinite length periodic signal.
When boundary_extension is equal to QCCFILTER_SYMMETRIC_EXTENSION, whole-sample symmtery is used, unless filter is a half-sample symmetric filter (i.e., filter->causality is equal to QCCFILTER_SYMMETRICHALF), in which case half-sample symmetry is used.