|
| | HalfBandDownsampler2xT () noexcept |
| | HalfBandDownsampler2xT (std::span< const SampleType > coeffs_a, std::span< const SampleType > coeffs_b) noexcept |
| std::size_t | sections_a () const noexcept |
| std::size_t | sections_b () const noexcept |
| bool | configured () const noexcept |
| void | reset () noexcept |
| SampleType | process (SampleType in_lo, SampleType in_hi) noexcept |
| | Consume two input samples (lo = even phase, hi = odd phase) and return one decimated output sample.
|
| void | process_block (std::span< const SampleType > input, std::span< SampleType > output) noexcept |
| | Block helper.
|
template<typename SampleType = float>
class pulp::signal::HalfBandDownsampler2xT< SampleType >
2x half-band downsampler.
Each call to process(in_lo, in_hi) consumes two input samples at the higher rate and emits one decimated output. in_lo is the input-stream sample at index 2n and in_hi the one at 2n+1, fed in chronological order. The odd-phase input drives path A and the even-phase input path B, which is the decimation polyphase identity: H's output kept at odd phases, one high-rate sample ahead of H's own delay. Content in the stopband (above 0.29 of the input rate with the default coefficients) aliases into the output at or below the design's stopband floor (-94.8 dB with the default coefficients).
A thin wrapper over HalfBandIirStageT; the same coefficient-shape rule as HalfBandUpsampler2xT applies.
RT contract: no member allocates, including the constructors.