Skip to content

Class samplerate_converter

class samplerate_converter<T> dsp

template <typename T>
struct samplerate_converter { … }

A template class for performing sample rate conversion on audio signals.

This class supports both push and pull methods for resampling audio data. It maintains an internal state to handle contiguous signals split into buffers of varying sizes.

Template parameters
T The data type of the audio samples (e.g., float, double).

typedef itype

using itype = i64

Fully qualified name: kfr::samplerate_converter<T>::itype

typedef ftype

using ftype = subtype<T>

Fully qualified name: kfr::samplerate_converter<T>::ftype

function window(fbase)

Computes the Kaiser window function for a given sample position.

Parameters
n Normalized sample position.
Returns
The window value.

Fully qualified name: kfr::samplerate_converter<T>::window(fbase)

function sidelobe_att()

Calculates the sidelobe attenuation based on the Kaiser beta parameter.

Returns
Sidelobe attenuation in dB.

Fully qualified name: kfr::samplerate_converter<T>::sidelobe_att()

function transition_width()

Calculates the transition width based on sidelobe attenuation and depth.

Returns
Transition width in radians.

Fully qualified name: kfr::samplerate_converter<T>::transition_width()

function reset()

void reset() noexcept

Resets the converter to its initial state.

Fully qualified name: kfr::samplerate_converter<T>::reset()

function filter_order(sample_rate_conversion_quality)

static KFR_MEM_INTRINSIC size_t filter_order(sample_rate_conversion_quality quality)

Computes the filter order for a given quality level.

Parameters
quality The sample rate conversion quality.
Returns
The filter order as a size_t.

Fully qualified name: kfr::samplerate_converter<T>::filter_order(sample_rate_conversion_quality)

function sidelobe_attenuation(sample_rate_conversion_quality)

static KFR_MEM_INTRINSIC fbase sidelobe_attenuation(sample_rate_conversion_quality quality)

Returns the sidelobe attenuation for a given quality level.

Parameters
quality The sample rate conversion quality.
Returns
Sidelobe attenuation in dB.

Fully qualified name: kfr::samplerate_converter<T>::sidelobe_attenuation(sample_rate_conversion_quality)

function transition_width(sample_rate_conversion_quality)

static KFR_MEM_INTRINSIC fbase transition_width(sample_rate_conversion_quality quality)

Returns the transition width for a given quality level.

Parameters
quality The sample rate conversion quality.
Returns
Transition width in radians.

Fully qualified name: kfr::samplerate_converter<T>::transition_width(sample_rate_conversion_quality)

function window_param(sample_rate_conversion_quality)

static KFR_MEM_INTRINSIC fbase window_param(sample_rate_conversion_quality quality)

Computes the Kaiser window parameter for a given quality level.

Parameters
quality The sample rate conversion quality.
Returns
The Kaiser beta parameter.

Fully qualified name: kfr::samplerate_converter<T>::window_param(sample_rate_conversion_quality)

function window_param(fbase)

static KFR_MEM_INTRINSIC fbase window_param(fbase att)

Fully qualified name: kfr::samplerate_converter<T>::window_param(fbase)

constructor samplerate_converter<T>(sample_rate_conversion_quality, itype, itype, fbase, fbase)

samplerate_converter(sample_rate_conversion_quality quality, itype interpolation_factor,
                     itype decimation_factor, fbase scale = ftype(1), fbase cutoff = 0.5f)

Constructs a sample rate converter.

Parameters
quality The desired conversion quality.
interpolation_factor Factor by which to interpolate the input signal.
decimation_factor Factor by which to decimate the output signal.
scale Scaling factor for the output (default: 1).
cutoff Cutoff frequency as a fraction of the Nyquist frequency (default: 0.5).

Fully qualified name: kfr::samplerate_converter<T>::samplerate_converter<T>(sample_rate_conversion_quality, itype, itype, fbase, fbase)

constructor samplerate_converter<T>(int, itype, itype, fbase, fbase, fbase, fbase)

samplerate_converter(int taps, itype interpolation_factor, itype decimation_factor, fbase scale,
                     fbase cutoff, fbase sidelobe_attenuation, fbase transition_width)

Constructs a sample rate converter from explicit filter parameters.

Parameters
taps Number of taps per polyphase branch (processing depth).
interpolation_factor Factor by which to interpolate the input signal.
decimation_factor Factor by which to decimate the output signal.
scale Scaling factor applied to the output.
cutoff Cutoff frequency as a fraction of the Nyquist frequency.
sidelobe_attenuation Sidelobe attenuation in dB used to derive the Kaiser window.
transition_width Transition width in radians used to adjust the cutoff.

Fully qualified name: kfr::samplerate_converter<T>::samplerate_converter<T>(int, itype, itype, fbase, fbase, fbase, fbase)

constructor samplerate_converter<T>()

samplerate_converter() = default

Default constructor.

Fully qualified name: kfr::samplerate_converter<T>::samplerate_converter<T>()

constructor samplerate_converter<T>(samplerate_converter<T> &&)

samplerate_converter(samplerate_converter&&) noexcept = default

Move constructor.

Fully qualified name: kfr::samplerate_converter<T>::samplerate_converter<T>(samplerate_converter<T> &&)

function operator=(samplerate_converter<T> &&)

samplerate_converter& operator=(samplerate_converter&&) noexcept = default

Move assignment operator.

Parameters
other The converter to move from.
Returns
A reference to *this .

Fully qualified name: kfr::samplerate_converter<T>::operator=(samplerate_converter<T> &&)

function input_position_to_intermediate(itype)

Converts an input position to an intermediate (interpolated) position.

The intermediate domain is the high-rate domain obtained after interpolation and before decimation. This maps an input sample index to its corresponding index in that domain.

Parameters
in_pos Input position.
Returns
Intermediate position in_pos * interpolation_factor .

Fully qualified name: kfr::samplerate_converter<T>::input_position_to_intermediate(itype)

function output_position_to_intermediate(itype)

Converts an output position to an intermediate (pre-decimation) position.

Maps an output sample index back to its corresponding index in the high-rate intermediate domain.

Parameters
out_pos Output position.
Returns
Intermediate position out_pos * decimation_factor .

Fully qualified name: kfr::samplerate_converter<T>::output_position_to_intermediate(itype)

function input_position_to_output(itype)

Converts an input position to the corresponding output position.

Uses floor division of the intermediate position by the decimation factor, so the result is the index of the output sample that consumes the given input sample (or the last output sample produced at or before it).

Parameters
in_pos Input position.
Returns
Corresponding output position.

Fully qualified name: kfr::samplerate_converter<T>::input_position_to_output(itype)

function output_position_to_input(itype)

Converts an output position to the corresponding input position.

Uses floor division of the intermediate position by the interpolation factor, so the result is the index of the input sample needed to produce the given output sample.

Parameters
out_pos Output position.
Returns
Corresponding input position.

Fully qualified name: kfr::samplerate_converter<T>::output_position_to_input(itype)

function output_size_for_input(itype)

Calculates the output size produced for a given input size (push method).

Parameters
input_size Size of the input buffer.
Returns
Required output buffer size.

Fully qualified name: kfr::samplerate_converter<T>::output_size_for_input(itype)

function input_size_for_output(itype)

Calculates the input size required to produce a given output size (pull method).

Parameters
output_size Size of the output buffer.
Returns
Required input buffer size.

Fully qualified name: kfr::samplerate_converter<T>::input_size_for_output(itype)

function skip(size_t, univector_ref<const T>)

size_t skip(size_t output_size, univector_ref<const T> input)

Skips a specified number of output samples, updating internal state.

Parameters
output_size Number of output samples to skip.
input Input buffer to consume.
Returns
Number of input samples consumed.

Fully qualified name: kfr::samplerate_converter<T>::skip(size_t, univector_ref<const T>)

function process(univector<T, Tag> &, univector_ref<const T>)

template <univector_tag Tag>
size_t process(univector<T, Tag>& output, univector_ref<const T> input)

Processes input data to produce resampled output (pull or push method).

Template parameters
Tag Type tag for the univector output.
Parameters
output Output buffer to write resampled data.
input Input buffer to read samples from.
Returns
Number of input samples processed.

Fully qualified name: kfr::samplerate_converter<T>::process(univector<T, Tag> &, univector_ref<const T>)

function get_fractional_delay()

Gets the fractional delay introduced by the resampler.

The delay is the group delay of the symmetric FIR filter, expressed in output-sample units.

Returns
Fractional delay in output samples.

Fully qualified name: kfr::samplerate_converter<T>::get_fractional_delay()

function get_delay()

Gets the integer delay introduced by the resampler.

Returns
Delay in output samples.

Fully qualified name: kfr::samplerate_converter<T>::get_delay()

variable kaiser_beta

fbase kaiser_beta

Kaiser window beta parameter.

Fully qualified name: kfr::samplerate_converter<T>::kaiser_beta

variable depth

itype depth

Processing depth.

Fully qualified name: kfr::samplerate_converter<T>::depth

variable taps

itype taps

Number of filter taps.

Fully qualified name: kfr::samplerate_converter<T>::taps

variable order

size_t order

Filter order.

Fully qualified name: kfr::samplerate_converter<T>::order

variable interpolation_factor

itype interpolation_factor

Interpolation factor.

Fully qualified name: kfr::samplerate_converter<T>::interpolation_factor

variable decimation_factor

itype decimation_factor

Decimation factor.

Fully qualified name: kfr::samplerate_converter<T>::decimation_factor

variable filter

univector<T> filter

Filter coefficients.

Fully qualified name: kfr::samplerate_converter<T>::filter

variable delay

univector<T> delay

Delay line buffer.

Fully qualified name: kfr::samplerate_converter<T>::delay

variable input_position

itype input_position

Current input position.

Fully qualified name: kfr::samplerate_converter<T>::input_position

variable output_position

itype output_position

Current output position.

Fully qualified name: kfr::samplerate_converter<T>::output_position

function process_impl(univector_ref<T>, univector_ref<const T>)

size_t process_impl(univector_ref<T> output, univector_ref<const T> input)

Internal implementation of the process function.

Parameters
output Output buffer slice.
input Input buffer slice.
Returns
Number of input samples processed.

Fully qualified name: kfr::samplerate_converter<T>::process_impl(univector_ref<T>, univector_ref<const T>)

Fully qualified name: kfr::samplerate_converter<T>

This file was generated by cxxdox, a C++ documentation generator based on MkDocs Material and libclang.