BackgroundAudio 1.3.3
Loading...
Searching...
No Matches
Public Member Functions | List of all members
BackgroundAudioWAVClass< DataBuffer > Class Template Reference

Interrupt-driven WAV decoder. Generates a full frame of samples each cycle and uses the RawBuffer to safely hand data from the app to the decompressor. More...

#include <BackgroundAudioWAV.h>

Public Member Functions

 BackgroundAudioWAVClass (AudioOutputBase &d)
 Construct an AAC decoder with a given AudioOutputBase.
 
bool setDevice (AudioOutputBase *d)
 Configure the output device before begin
 
void setGain (float scale)
 Set the gain multiplier (volume) for the stream. Takes effect immediately.
 
bool begin ()
 Starts the background WAV decoder/player. Will initialize the output device and start sending silence immediately.
 
void end ()
 Stops the WAV decoder process and the calls the output device's end to shut it down, too.
 
bool playing ()
 Determines if the WAV decoder has been started.
 
size_t write (const void *data, size_t len)
 Writes a block of raw data to the decoder's buffer.
 
size_t availableForWrite ()
 Gets number of bytes available to write to raw buffer.
 
size_t available ()
 Gets number of bytes already in the raw buffer.
 
bool done ()
 Determine if no more WAV file is present in the buffer.
 
uint32_t frames ()
 Get number of "frames" processed by decoder.
 
uint32_t shifts ()
 Get the number of input data shifts processed by decoder since begin
 
uint32_t underflows ()
 Get the number of times the WAV decoder has underflowed waiting on raw data since begin
 
uint32_t errors ()
 Get the number of decoder errors since begin
 
uint32_t dumps ()
 Get the number of full buffer dumps (catastrophic data error) since begin
 
void flush ()
 Flushes any existing WAV data, resets the processor to start a new WAV.
 
void pause ()
 Pause the decoder. Won't process raw input data and will transmit silence.
 
bool paused ()
 Determine if the WAV playback is paused.
 
void unpause ()
 Unpause previously paused WAV playback. Will start processing input data again.
 

Detailed Description

template<class DataBuffer>
class BackgroundAudioWAVClass< DataBuffer >

Interrupt-driven WAV decoder. Generates a full frame of samples each cycle and uses the RawBuffer to safely hand data from the app to the decompressor.

Template Parameters
DataBufferThe type of raw data buffer, either normal RawDataBuffer or ROMDataBuffer as appropriate.

Constructor & Destructor Documentation

◆ BackgroundAudioWAVClass()

template<class DataBuffer >
BackgroundAudioWAVClass< DataBuffer >::BackgroundAudioWAVClass ( AudioOutputBase &  d)
inline

Construct an AAC decoder with a given AudioOutputBase.

Parameters
[in]dAudioOutputBase device (MixerInput or I2S or PWM, etc.) to decode tp

Member Function Documentation

◆ available()

template<class DataBuffer >
size_t BackgroundAudioWAVClass< DataBuffer >::available ( )
inline

Gets number of bytes already in the raw buffer.

Returns
Bytes of raw data in the buffer

◆ availableForWrite()

template<class DataBuffer >
size_t BackgroundAudioWAVClass< DataBuffer >::availableForWrite ( )
inline

Gets number of bytes available to write to raw buffer.

For ROM buffers, this is always 0 after a write has happened. Because ROM buffers don't actually allocate any RAM for buffering and simply store the pointer passed in from write there is no real space available for an app to write to. An app can simply flush and write a new complete buffer if needed ignoring availableForWrite in the ROM case.

Returns
Bytes that can be written

◆ begin()

template<class DataBuffer >
bool BackgroundAudioWAVClass< DataBuffer >::begin ( )
inline

Starts the background WAV decoder/player. Will initialize the output device and start sending silence immediately.

Returns
True on success, false if already started.

◆ done()

template<class DataBuffer >
bool BackgroundAudioWAVClass< DataBuffer >::done ( )
inline

Determine if no more WAV file is present in the buffer.

Returns
True if no raw WAV data is still left to process

◆ dumps()

template<class DataBuffer >
uint32_t BackgroundAudioWAVClass< DataBuffer >::dumps ( )
inline

Get the number of full buffer dumps (catastrophic data error) since begin

Returns
Number of complete buffer throw-aways

◆ errors()

template<class DataBuffer >
uint32_t BackgroundAudioWAVClass< DataBuffer >::errors ( )
inline

Get the number of decoder errors since begin

Returns
Number of decode errors encountered

◆ flush()

template<class DataBuffer >
void BackgroundAudioWAVClass< DataBuffer >::flush ( )
inline

Flushes any existing WAV data, resets the processor to start a new WAV.

This is only needed if the current WAV file was corrupted or to stop playing one WAV file and immediately start on a new one.

◆ frames()

template<class DataBuffer >
uint32_t BackgroundAudioWAVClass< DataBuffer >::frames ( )
inline

Get number of "frames" processed by decoder.

Returns
Number of frames, where frames are framelen stereo samples in size

◆ paused()

template<class DataBuffer >
bool BackgroundAudioWAVClass< DataBuffer >::paused ( )
inline

Determine if the WAV playback is paused.

Returns
True of WAV playback has been paused

◆ playing()

template<class DataBuffer >
bool BackgroundAudioWAVClass< DataBuffer >::playing ( )
inline

Determines if the WAV decoder has been started.

Returns
True if running

◆ setDevice()

template<class DataBuffer >
bool BackgroundAudioWAVClass< DataBuffer >::setDevice ( AudioOutputBase *  d)
inline

Configure the output device before begin

Returns
True if successful

◆ setGain()

template<class DataBuffer >
void BackgroundAudioWAVClass< DataBuffer >::setGain ( float  scale)
inline

Set the gain multiplier (volume) for the stream. Takes effect immediately.

Parameters
[in]scaleFloating point value from 0.0....16.0 to multiply all audio data by

◆ shifts()

template<class DataBuffer >
uint32_t BackgroundAudioWAVClass< DataBuffer >::shifts ( )
inline

Get the number of input data shifts processed by decoder since begin

Returns
Number of times data has been shifted in the raw input buffer

◆ underflows()

template<class DataBuffer >
uint32_t BackgroundAudioWAVClass< DataBuffer >::underflows ( )
inline

Get the number of times the WAV decoder has underflowed waiting on raw data since begin

Returns
Number of frames of underflow data have occurred

◆ write()

template<class DataBuffer >
size_t BackgroundAudioWAVClass< DataBuffer >::write ( const void *  data,
size_t  len 
)
inline

Writes a block of raw data to the decoder's buffer.

Copies up to len bytes into the raw buffer for the object. Can be called before begin, and can write less fewer than the number of bytes requested if there is not enough space. Will not block.

For ROM buffers this does not actually copy data, only the pointer. Therefore, for ROM buffers you cannot concatenate data by calling multiple writes because the second write will throw out all the data from the first one. Use flush and write when ready for a completely new buffer.

Parameters
[in]dataUncompressed input data
[in]lenNumber of bytes to write
Returns
Number of bytes written

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