Ardour  9.0-pre0-582-g084a23a80d
Decimator Class Reference

#include <Decimator.h>

Public Member Functions

 Decimator (unsigned int inLength, unsigned int decFactor)
 
virtual ~Decimator ()
 
void process (const double *src, double *dst)
 
void process (const float *src, float *dst)
 
int getFactor () const
 
void resetFilter ()
 

Static Public Member Functions

static int getHighestSupportedFactor ()
 

Private Member Functions

void deInitialise ()
 
void initialise (unsigned int inLength, unsigned int decFactor)
 
void doAntiAlias (const double *src, double *dst, unsigned int length)
 
void doAntiAlias (const float *src, double *dst, unsigned int length)
 

Private Attributes

unsigned int m_inputLength
 
unsigned int m_outputLength
 
unsigned int m_decFactor
 
double Input
 
double Output
 
double o1
 
double o2
 
double o3
 
double o4
 
double o5
 
double o6
 
double o7
 
double a [9]
 
double b [9]
 
double * decBuffer
 

Detailed Description

Decimator carries out a fast downsample by a power-of-two factor. Only a limited number of factors are supported, from two to whatever getHighestSupportedFactor() returns. This is much faster than Resampler but has a worse signal-noise ratio.

Definition at line 24 of file Decimator.h.

Constructor & Destructor Documentation

◆ Decimator()

Decimator::Decimator ( unsigned int  inLength,
unsigned int  decFactor 
)

Construct a Decimator to operate on input blocks of length inLength, with decimation factor decFactor. inLength should be a multiple of decFactor. Output blocks will be of length inLength / decFactor.

decFactor must be a power of two. The highest supported factor is obtained through getHighestSupportedFactor(); for higher factors, you will need to chain more than one decimator.

◆ ~Decimator()

virtual Decimator::~Decimator ( )
virtual

Member Function Documentation

◆ deInitialise()

void Decimator::deInitialise ( )
private

◆ doAntiAlias() [1/2]

void Decimator::doAntiAlias ( const double *  src,
double *  dst,
unsigned int  length 
)
private

◆ doAntiAlias() [2/2]

void Decimator::doAntiAlias ( const float *  src,
double *  dst,
unsigned int  length 
)
private

◆ getFactor()

int Decimator::getFactor ( ) const
inline

Definition at line 56 of file Decimator.h.

◆ getHighestSupportedFactor()

static int Decimator::getHighestSupportedFactor ( )
inlinestatic

Definition at line 57 of file Decimator.h.

◆ initialise()

void Decimator::initialise ( unsigned int  inLength,
unsigned int  decFactor 
)
private

◆ process() [1/2]

void Decimator::process ( const double *  src,
double *  dst 
)

Process inLength samples (as supplied to constructor) from src and write inLength / decFactor samples to dst. Note that src and dst may be the same or overlap (an intermediate buffer is used).

◆ process() [2/2]

void Decimator::process ( const float *  src,
float *  dst 
)

Process inLength samples (as supplied to constructor) from src and write inLength / decFactor samples to dst. Note that src and dst may be the same or overlap (an intermediate buffer is used).

◆ resetFilter()

void Decimator::resetFilter ( )

Member Data Documentation

◆ a

double Decimator::a[9]
private

Definition at line 76 of file Decimator.h.

◆ b

double Decimator::b[9]
private

Definition at line 77 of file Decimator.h.

◆ decBuffer

double* Decimator::decBuffer
private

Definition at line 79 of file Decimator.h.

◆ Input

double Decimator::Input
private

Definition at line 71 of file Decimator.h.

◆ m_decFactor

unsigned int Decimator::m_decFactor
private

Definition at line 69 of file Decimator.h.

◆ m_inputLength

unsigned int Decimator::m_inputLength
private

Definition at line 67 of file Decimator.h.

◆ m_outputLength

unsigned int Decimator::m_outputLength
private

Definition at line 68 of file Decimator.h.

◆ o1

double Decimator::o1
private

Definition at line 74 of file Decimator.h.

◆ o2

double Decimator::o2
private

Definition at line 74 of file Decimator.h.

◆ o3

double Decimator::o3
private

Definition at line 74 of file Decimator.h.

◆ o4

double Decimator::o4
private

Definition at line 74 of file Decimator.h.

◆ o5

double Decimator::o5
private

Definition at line 74 of file Decimator.h.

◆ o6

double Decimator::o6
private

Definition at line 74 of file Decimator.h.

◆ o7

double Decimator::o7
private

Definition at line 74 of file Decimator.h.

◆ Output

double Decimator::Output
private

Definition at line 72 of file Decimator.h.


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