Twitch SDK (Internal)
Classes | Public Types | Public Member Functions | Static Public Attributes | Private Types | Private Attributes | Static Private Attributes | List of all members
ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType > Class Template Reference

#include <resampleoperator.h>

Classes

struct  SincFunctionParameters
 

Public Types

using SampleType = typename InputSource::SampleType
 
using FilterOptions = typename ContextType::FilterOptions
 
using OutputToInputRatio = std::ratio< OutputSampleRate, InputSampleRate >
 

Public Member Functions

 ResampleOperator (ContextType &context)
 
InputSource & GetInputSource ()
 
void Unbind ()
 
SampleRange GetSampleRange () const
 
SampleType operator[] (size_t index) const
 

Static Public Attributes

static constexpr size_t InputSampleRate = InputSource::SampleRate
 
static constexpr size_t SampleRate = OutputSampleRate
 
static constexpr size_t TapCount = FilterOptions::TapCount
 

Private Types

using ImpulseResponseFunction = SincFunctionGenerator< SincFunctionParameters >
 
using WindowFunction = typename FilterOptions::WindowFunction
 
using CoefficientFunction = ProductGenerator< ImpulseResponseFunction, WindowFunction >
 
using CycledCoefficientFunction = CyclingGenerator< CoefficientFunction, OutputToInputRatio::num >
 

Private Attributes

InputSource mInputSource
 
LookupTable< CycledCoefficientFunction, CoefficientPhaseSubdivisionsmCoefficients
 
SampleCache< double, TapCountmSampleCache
 
double mGainNormalization
 

Static Private Attributes

static constexpr size_t CoefficientPhaseSubdivisions = OutputToInputRatio::num * TapCount
 

Detailed Description

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
class ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >

Converts an audio source to one with a lower sample rate.

Template Parameters
InputSourceConforms to the AudioSource concept.
OutputSampleRateThe sample rate to convert to.

Operator Type Properties: Operator Type: Unary Data Integrity: Lossy SampleType[in] == SampleType[out] SampleRate[in] != SampleRate[out] StartOffset[in] != StartOffset[out] Length[in] != Length[out]

Member Typedef Documentation

◆ CoefficientFunction

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
using ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >::CoefficientFunction = ProductGenerator<ImpulseResponseFunction, WindowFunction>
private

◆ CycledCoefficientFunction

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
using ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >::CycledCoefficientFunction = CyclingGenerator<CoefficientFunction, OutputToInputRatio::num>
private

◆ FilterOptions

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
using ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >::FilterOptions = typename ContextType::FilterOptions

◆ ImpulseResponseFunction

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
using ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >::ImpulseResponseFunction = SincFunctionGenerator<SincFunctionParameters>
private

◆ OutputToInputRatio

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
using ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >::OutputToInputRatio = std::ratio<OutputSampleRate, InputSampleRate>

◆ SampleType

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
using ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >::SampleType = typename InputSource::SampleType

◆ WindowFunction

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
using ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >::WindowFunction = typename FilterOptions::WindowFunction
private

Constructor & Destructor Documentation

◆ ResampleOperator()

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >::ResampleOperator ( ContextType &  context)
inline

Member Function Documentation

◆ GetInputSource()

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
InputSource& ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >::GetInputSource ( )
inline

◆ GetSampleRange()

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
SampleRange ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >::GetSampleRange ( ) const
inline

◆ operator[]()

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
SampleType ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >::operator[] ( size_t  index) const
inline

◆ Unbind()

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
void ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >::Unbind ( )
inline

Member Data Documentation

◆ CoefficientPhaseSubdivisions

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
constexpr size_t ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >::CoefficientPhaseSubdivisions = OutputToInputRatio::num * TapCount
staticprivate

◆ InputSampleRate

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
constexpr size_t ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >::InputSampleRate = InputSource::SampleRate
static

◆ mCoefficients

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
LookupTable<CycledCoefficientFunction, CoefficientPhaseSubdivisions> ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >::mCoefficients
private

◆ mGainNormalization

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
double ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >::mGainNormalization
private

◆ mInputSource

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
InputSource ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >::mInputSource
private

◆ mSampleCache

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
SampleCache<double, TapCount> ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >::mSampleCache
mutableprivate

◆ SampleRate

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
constexpr size_t ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >::SampleRate = OutputSampleRate
static

◆ TapCount

template<typename InputSource, size_t OutputSampleRate, typename ContextType>
constexpr size_t ttv::ResampleOperator< InputSource, OutputSampleRate, ContextType >::TapCount = FilterOptions::TapCount
static

The documentation for this class was generated from the following file: