Half-band downsampler class.
More...
#include <CDSPHBDownsampler.h>
|
| CDSPHBDownsampler (const double ReqAtten, const int SteepIndex, const bool IsThird, const double PrevLatency) |
| Constructor initalizes the half-band downsampler. More...
|
|
virtual int | getLatency () const |
|
virtual double | getLatencyFrac () const |
|
virtual int | getMaxOutLen (const int MaxInLen) const |
|
virtual void | clear () |
| Function clears (resets) the state of *this object and returns it to the state after construction. More...
|
|
virtual int | process (double *ip, int l, double *&op0) |
| Function performs DSP processing. More...
|
|
Half-band downsampler class.
Class implements brute-force half-band 2X downsampling that uses small sparse symmetric FIR filters. The output has 2.0 gain.
◆ CDSPHBDownsampler()
r8b::CDSPHBDownsampler::CDSPHBDownsampler |
( |
const double |
ReqAtten, |
|
|
const int |
SteepIndex, |
|
|
const bool |
IsThird, |
|
|
const double |
PrevLatency |
|
) |
| |
|
inline |
Constructor initalizes the half-band downsampler.
- Parameters
-
ReqAtten | Required half-band filter attentuation. |
SteepIndex | Steepness index - 0=steepest. Corresponds to general downsampling ratio, e.g. at 4x downsampling 0 is used, at 8x downsampling 1 is used, etc. |
IsThird | "True" if 1/3 resampling is performed. |
PrevLatency | Latency, in samples (any value >=0), which was left in the output signal by a previous process. Whole-number latency will be consumed by *this object while remaining fractional latency can be obtained via the getLatencyFrac() function. |
◆ clear()
virtual void r8b::CDSPHBDownsampler::clear |
( |
| ) |
|
|
inlinevirtual |
Function clears (resets) the state of *this object and returns it to the state after construction.
All input data accumulated in the internal buffer so far will be discarded.
Implements r8b::CDSPProcessor.
◆ getLatency()
virtual int r8b::CDSPHBDownsampler::getLatency |
( |
| ) |
const |
|
inlinevirtual |
- Returns
- The latency, in samples, which is present in the output signal. This value is usually zero if the DSP processor "consumes" the latency automatically.
Implements r8b::CDSPProcessor.
◆ getLatencyFrac()
virtual double r8b::CDSPHBDownsampler::getLatencyFrac |
( |
| ) |
const |
|
inlinevirtual |
- Returns
- Fractional latency, in samples, which is present in the output signal. This value is usually zero if a linear-phase filtering is used. With minimum-phase filters in use, this value can be non-zero even if the getLatency() function returns zero.
Implements r8b::CDSPProcessor.
◆ getMaxOutLen()
virtual int r8b::CDSPHBDownsampler::getMaxOutLen |
( |
const int |
MaxInLen | ) |
const |
|
inlinevirtual |
- Parameters
-
MaxInLen | The number of samples planned to process at once, at most. |
- Returns
- The maximal length of the output buffer required when processing the "MaxInLen" number of input samples.
Implements r8b::CDSPProcessor.
◆ process()
virtual int r8b::CDSPHBDownsampler::process |
( |
double * |
ip, |
|
|
int |
l0, |
|
|
double *& |
op0 |
|
) |
| |
|
inlinevirtual |
Function performs DSP processing.
- Parameters
-
| ip | Input data pointer. |
| l0 | How many samples to process. |
[out] | op0 | Output data pointer. The capacity of this buffer should be equal to the value returned by the getMaxOutLen() function for the given "l0". This buffer can be equal to "ip" only if the getMaxOutLen( l0 ) function returned a value lesser than "l0". This pointer can be incremented on function's return if latency compensation was performed by the processor. Note that on function's return, this pointer may point to some internal buffers, including the "ip" buffer, ignoring the originally passed value. |
- Returns
- The number of output samples written to the "op0" buffer and available after processing. This value can be smaller or larger in comparison to the original "l0" value due to processing and filter's latency compensation that took place, and due to resampling if it was performed.
Implements r8b::CDSPProcessor.
The documentation for this class was generated from the following file: