A FIFO class for handling audio samples. More...
#include <AsyncAudioFifo.h>
A FIFO class for handling audio samples.
This class implements a FIFO for handling audio samples. The FIFO also have some additional features. Output can be started or stopped and it can be instructed to buffer some samples before starting to output audio. Samples can be automatically output using the normal audio pipe infrastructure or samples could be read on demand using the readSamples method.
Definition at line 119 of file AsyncAudioFifo.h.
Async::AudioFifo::AudioFifo | ( | unsigned | fifo_size | ) | [explicit] |
Constuctor.
fifo_size | This is the size of the fifo expressed in number of samples. |
virtual Async::AudioFifo::~AudioFifo | ( | void | ) | [virtual] |
Destructor.
virtual void Async::AudioFifo::allSamplesFlushed | ( | void | ) | [protected, virtual] |
The registered sink has flushed all samples.
This function will be called when all samples have been flushed in the registered sink. This function is normally only called from a connected sink object.
Reimplemented from Async::AudioSource.
bool Async::AudioFifo::bufferingEnabled | ( | void | ) | const [inline] |
Check if buffering is enabled or disabled.
Definition at line 217 of file AsyncAudioFifo.h.
void Async::AudioFifo::clear | ( | void | ) |
Clear all samples from the FIFO.
This will immediately reset the FIFO and discard all samples. The source will be told that all samples have been flushed.
bool Async::AudioFifo::empty | ( | void | ) | const [inline] |
Check if the FIFO is empty.
Definition at line 138 of file AsyncAudioFifo.h.
void Async::AudioFifo::enableBuffering | ( | bool | enable | ) |
Enable/disable the fifo buffer.
enable | Set to true to enable buffering or else false |
Use this method to turn buffering on and off. When buffering is off, no incoming samples will be stored in the fifo. If there are samples in the fifo at the time when buffering is disabled they will be sent out in the normal way. Don't disable buffering when pre-buffering is used. This will get you into trouble.
virtual void Async::AudioFifo::flushSamples | ( | void | ) | [virtual] |
Tell the FIFO to flush the previously written samples.
This function is used to tell the FIFO to flush previously written samples. This function is normally only called from a connected source object.
Reimplemented from Async::AudioSink.
bool Async::AudioFifo::full | ( | void | ) | const [inline] |
Check if the FIFO is full.
This function is used to check if the FIFO is full or not. The FIFO can only reach the buffer full condition if overwrite is false. The overwrite mode is set by the setOverwrite function.
Definition at line 148 of file AsyncAudioFifo.h.
bool Async::AudioFifo::overwrite | ( | void | ) | const [inline] |
Check the overwrite mode.
The FIFO can operate in overwrite or normal mode. When in normal mode, it will not be possible to add any more samples to the FIFO when it is full. Samples has to be removed first. When overwrite is set, newly added samples will overwrite the oldest samples in the buffer so the FIFO will never get full but instead samples are lost. Use this function the check the current overwrite mode. Use the setOverwrite function to set the overwrite mode.
Definition at line 183 of file AsyncAudioFifo.h.
virtual void Async::AudioFifo::resumeOutput | ( | void | ) | [virtual] |
Resume audio output to the connected sink.
This function will be called when the registered audio sink is ready to accept more samples. This function is normally only called from a connected sink object.
Reimplemented from Async::AudioSource.
unsigned Async::AudioFifo::samplesInFifo | ( | bool | ignore_prebuf = false |
) | const |
Find out how many samples there are in the FIFO.
ignore_prebuf | Set to true to not report pre-buffered samples. |
void Async::AudioFifo::setOverwrite | ( | bool | overwrite | ) | [inline] |
Set the overwrite mode.
overwrite | Set to true to overwrite or else false |
The FIFO can operate in overwrite or normal mode. When in normal mode, it will not be possible to add any more samples to the FIFO when it is full. Samples has to be removed first. When overwrite is set, newly added samples will overwrite the oldest samples in the buffer so the FIFO will never get full but instead samples are lost. Use this function to set the overwrite mode.
Definition at line 169 of file AsyncAudioFifo.h.
void Async::AudioFifo::setPrebufSamples | ( | unsigned | prebuf_samples | ) |
Set the number of samples that must be in the fifo before any samples are written out from it.
prebuf_samples | The number of samples |
virtual int Async::AudioFifo::writeSamples | ( | const float * | samples, | |
int | count | |||
) | [virtual] |
Write samples into the FIFO.
samples | The buffer containing the samples | |
count | The number of samples in the buffer |
This function is used to write audio into the FIFO. If it returns 0, no more samples should be written until the resumeOutput function in the source have been called. This function is normally only called from a connected source object.
Reimplemented from Async::AudioSink.