TracktionEngine
Loading...
Searching...
No Matches
Public Member Functions | List of all members
engine::AudioFifo Class Reference

A single-producer, single-consumer fifo of audio samples. More...

#include <tracktion_AudioFifo.h>

Public Member Functions

 AudioFifo (int channels, int numSamples)
 
void setSize (int numChannels, int numSamples)
 
int getFreeSpace () const noexcept
 
int getNumReady () const noexcept
 
int getNumChannels () const noexcept
 
void reset () noexcept
 
void ensureFreeSpace (int numSamples)
 
bool write (const juce::AudioBuffer< float > &src)
 
bool write (const juce::AudioBuffer< float > &src, int startSample, int numSamples)
 
bool write (const float *const *data, int numSamples)
 
bool writeSilence (int numSamples)
 
bool read (juce::AudioBuffer< float > &dest, int startSampleInDestBuffer)
 
bool read (juce::AudioBuffer< float > &dest, int startSampleInDestBuffer, int numSamples)
 
bool readAdding (juce::AudioBuffer< float > &dest, int startSampleInDestBuffer)
 
bool readAdding (juce::AudioBuffer< float > &dest, int startSampleInDestBuffer, int numSamples)
 

Detailed Description

A single-producer, single-consumer fifo of audio samples.

The reader and writer may be on different threads. The storage is a choc::buffer::ChannelArrayBuffer rather than a juce::AudioBuffer because the latter keeps a shared "hasBeenCleared" flag which both sides would touch on every call, giving a data race outside of the sample regions that the AbstractFifo keeps disjoint.

Constructor & Destructor Documentation

◆ AudioFifo()

engine::AudioFifo::AudioFifo ( int  channels,
int  numSamples 
)

Member Function Documentation

◆ setSize()

void engine::AudioFifo::setSize ( int  numChannels,
int  numSamples 
)

◆ getFreeSpace()

int engine::AudioFifo::getFreeSpace ( ) const
noexcept

◆ getNumReady()

int engine::AudioFifo::getNumReady ( ) const
noexcept

◆ getNumChannels()

int engine::AudioFifo::getNumChannels ( ) const
noexcept

◆ reset()

void engine::AudioFifo::reset ( )
noexcept

◆ ensureFreeSpace()

void engine::AudioFifo::ensureFreeSpace ( int  numSamples)

◆ write() [1/3]

bool engine::AudioFifo::write ( const juce::AudioBuffer< float > &  src)

References engine::write.

◆ write() [2/3]

bool engine::AudioFifo::write ( const juce::AudioBuffer< float > &  src,
int  startSample,
int  numSamples 
)

◆ write() [3/3]

bool engine::AudioFifo::write ( const float *const *  data,
int  numSamples 
)

◆ writeSilence()

bool engine::AudioFifo::writeSilence ( int  numSamples)

◆ read() [1/2]

bool engine::AudioFifo::read ( juce::AudioBuffer< float > &  dest,
int  startSampleInDestBuffer 
)

References engine::read.

◆ read() [2/2]

bool engine::AudioFifo::read ( juce::AudioBuffer< float > &  dest,
int  startSampleInDestBuffer,
int  numSamples 
)

◆ readAdding() [1/2]

bool engine::AudioFifo::readAdding ( juce::AudioBuffer< float > &  dest,
int  startSampleInDestBuffer 
)

◆ readAdding() [2/2]

bool engine::AudioFifo::readAdding ( juce::AudioBuffer< float > &  dest,
int  startSampleInDestBuffer,
int  numSamples 
)

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