arduino-audio-tools
Loading...
Searching...
No Matches
CatStream Class Reference

Provides data from a concatenation of Streams. Please note that the provided Streams can be played only once! You will need to reset them (e.g. moving the file pointer to the beginning) and read them back if you want to process them a second time. The default timeout on the available() method is set to 0. This might be too small if you use e.g. a URLStream. If you set beginReset to true in the constructor, the system will automatically reset the streams when begin() is called. More...

#include <CodecOpusOgg.h>

Inheritance diagram for CatStream:
BaseStream BaseStream Stream Stream Stream Stream Print Print Print Print Print Print Print Print

Public Member Functions

 CatStream (bool beginReset=false)
 CatStream (bool beginReset=false)
void add (Stream &stream)
void add (Stream &stream)
void add (Stream *stream)
void add (Stream *stream)
int available () override
int available () override
virtual int availableForWrite () override
virtual int availableForWrite () override
bool begin () override
bool begin () override
void clear ()
 clear
void clear ()
 clear
void end () override
void end () override
virtual void flush () override
virtual void flush () override
 operator bool ()
 Returns true if active and we still have data.
 operator bool ()
 Returns true if active and we still have data.
size_t readBytes (uint8_t *data, size_t len) override
size_t readBytes (uint8_t *data, size_t len) override
void setAvailableCallback (int(*callback)(Stream *stream))
 Defines the callback used to determine available bytes for a stream.
void setAvailableCallback (int(*callback)(Stream *stream))
 Defines the callback used to determine available bytes for a stream.
void setOnBeginCallback (void(*callback)(Stream *stream))
 Defines the callback which is called when a new stream is started.
void setOnBeginCallback (void(*callback)(Stream *stream))
 Defines the callback which is called when a new stream is started.
void setOnEndCallback (void(*callback)(Stream *stream))
 Defines the callback which is called when a stream is finished.
void setOnEndCallback (void(*callback)(Stream *stream))
 Defines the callback which is called when a stream is finished.
void setTimeout (size_t t)
 Defines the timout in ms the system waits for data when moving to the next stream.
void setTimeout (size_t t)
 Defines the timout in ms the system waits for data when moving to the next stream.
void setWriteBufferSize (int size)
void setWriteBufferSize (int size)
virtual size_t write (uint8_t ch) override
size_t write (const uint8_t *data, size_t size) override
 not supported
size_t write (const uint8_t *data, size_t size) override
 not supported

Protected Member Functions

int availableWithTimeout ()
int availableWithTimeout ()
bool moveToNextStreamOnEnd (bool force_next_stream=false)
bool moveToNextStreamOnEnd (bool force_next_stream=false)
void refillReadBuffer ()
 Refill small read buffer (e.g. 8 bytes) to avoid single byte reads when calling read().
void refillReadBuffer ()
 Refill small read buffer (e.g. 8 bytes) to avoid single byte reads when calling read().
int streamAvailable (Stream *stream)
int streamAvailable (Stream *stream)

Protected Attributes

int _timeout = 10
Vector< Stream * > all_streams
int(* available_callback )(Stream *stream) = nullptr
void(* begin_callback )(Stream *stream) = nullptr
bool begin_reset = false
void(* end_callback )(Stream *stream) = nullptr
Vector< Stream * > input_streams
bool is_active = false
Stream * p_current_stream = nullptr
RingBuffer< uint8_t > tmp_in {0}
RingBuffer< uint8_t > tmp_out {0}
int write_buffer_size = 8

Detailed Description

Provides data from a concatenation of Streams. Please note that the provided Streams can be played only once! You will need to reset them (e.g. moving the file pointer to the beginning) and read them back if you want to process them a second time. The default timeout on the available() method is set to 0. This might be too small if you use e.g. a URLStream. If you set beginReset to true in the constructor, the system will automatically reset the streams when begin() is called.

Author
Phil Schatzmann

Constructor & Destructor Documentation

◆ CatStream() [1/2]

CatStream ( bool beginReset = false)
inline

◆ CatStream() [2/2]

CatStream ( bool beginReset = false)
inline

Member Function Documentation

◆ add() [1/4]

void add ( Stream & stream)
inline

◆ add() [2/4]

void add ( Stream & stream)
inline

◆ add() [3/4]

void add ( Stream * stream)
inline

◆ add() [4/4]

void add ( Stream * stream)
inline

◆ available() [1/2]

int available ( )
inlineoverridevirtual

Reimplemented from BaseStream.

◆ available() [2/2]

int available ( )
inlineoverridevirtual

Reimplemented from BaseStream.

◆ availableForWrite() [1/2]

virtual int availableForWrite ( )
inlineoverridevirtualinherited

Reimplemented from Print.

Reimplemented in A2DPStream, AbstractURLStream, AnalogAudioStream, AudioStreamWrapper, AudioStreamWrapper, ConverterStream< T >, ConverterStream< T >, DynamicMemoryStream, DynamicMemoryStream, EncodedAudioStream, FilteredStream< T, TF >, FilteredStream< T, TF >, FilteredStream< int16_t, int16_t >, MemoryStream, MemoryStream, ProgressStream, ProgressStream, QueueStream< T >, QueueStream< T >, QueueStream< uint8_t >, ReformatBaseStream, RingBufferStream, RingBufferStream, Throttle, Throttle, TimedStream, AudioBLEClient, AudioBLEClient, AudioBLEServer, AudioBLEServer, AudioEffectStream, AudioEffectStreamT< T >, AudioFFTBase, AudioLoRa, AudioStreamWrapper, AutomaticGainControlStream, ChannelFormatConverterStream, ChannelFormatConverterStreamT< T >, ConverterStream< T >, DynamicMemoryStream, EncodedAudioStream, Equalizer3BandsPerChannelT< T >, Equalizer3BandsPerChannelT< float >, Equalizer3BandsT< T >, Equalizer3BandsT< float >, ESPNowStream, FadeStream, FaustStream< DSP >, FilteredStream< T, TF >, FrequencyDetectorAutoCorrelation, FrequencyDetectorZeroCrossing, HammingFEC< bytecount, block_t >, I2SCodecStream, I2SStream, MeasuringStream, MemoryStream, MiniAudioStream, NRF24Stream, NumberFormatConverterStream, NumberFormatConverterStreamT< TFrom, TTo >, Pipeline, ProgressStream, QualityAnalysisStream, QueueStream< T >, ReedSolomonFEC< bytecount, additional_bytes >, ReformatBaseStream, RingBufferStream, SPIAudioSlave, StdioStream, SupportedRatesStream, Throttle, TimedStream, UDPStream, URLStreamESP32, USBAudioStreamBase, VBANStream, and VolumeStream.

◆ availableForWrite() [2/2]

virtual int availableForWrite ( )
inlineoverridevirtualinherited

Reimplemented from Print.

Reimplemented in A2DPStream, AbstractURLStream, AnalogAudioStream, AudioStreamWrapper, AudioStreamWrapper, ConverterStream< T >, ConverterStream< T >, DynamicMemoryStream, DynamicMemoryStream, EncodedAudioStream, FilteredStream< T, TF >, FilteredStream< T, TF >, FilteredStream< int16_t, int16_t >, MemoryStream, MemoryStream, ProgressStream, ProgressStream, QueueStream< T >, QueueStream< T >, QueueStream< uint8_t >, ReformatBaseStream, RingBufferStream, RingBufferStream, Throttle, Throttle, TimedStream, AudioBLEClient, AudioBLEClient, AudioBLEServer, AudioBLEServer, AudioEffectStream, AudioEffectStreamT< T >, AudioFFTBase, AudioLoRa, AudioStreamWrapper, AutomaticGainControlStream, ChannelFormatConverterStream, ChannelFormatConverterStreamT< T >, ConverterStream< T >, DynamicMemoryStream, EncodedAudioStream, Equalizer3BandsPerChannelT< T >, Equalizer3BandsPerChannelT< float >, Equalizer3BandsT< T >, Equalizer3BandsT< float >, ESPNowStream, FadeStream, FaustStream< DSP >, FilteredStream< T, TF >, FrequencyDetectorAutoCorrelation, FrequencyDetectorZeroCrossing, HammingFEC< bytecount, block_t >, I2SCodecStream, I2SStream, MeasuringStream, MemoryStream, MiniAudioStream, NRF24Stream, NumberFormatConverterStream, NumberFormatConverterStreamT< TFrom, TTo >, Pipeline, ProgressStream, QualityAnalysisStream, QueueStream< T >, ReedSolomonFEC< bytecount, additional_bytes >, ReformatBaseStream, RingBufferStream, SPIAudioSlave, StdioStream, SupportedRatesStream, Throttle, TimedStream, UDPStream, URLStreamESP32, USBAudioStreamBase, VBANStream, and VolumeStream.

◆ availableWithTimeout() [1/2]

int availableWithTimeout ( )
inlineprotected

◆ availableWithTimeout() [2/2]

int availableWithTimeout ( )
inlineprotected

◆ begin() [1/2]

bool begin ( )
inlineoverridevirtual

Reimplemented from BaseStream.

◆ begin() [2/2]

bool begin ( )
inlineoverridevirtual

Reimplemented from BaseStream.

◆ clear() [1/2]

void clear ( )
inline

clear

◆ clear() [2/2]

void clear ( )
inline

clear

◆ end() [1/2]

void end ( )
inlineoverridevirtual

Reimplemented from BaseStream.

◆ end() [2/2]

void end ( )
inlineoverridevirtual

Reimplemented from BaseStream.

◆ flush() [1/2]

◆ flush() [2/2]

◆ moveToNextStreamOnEnd() [1/2]

bool moveToNextStreamOnEnd ( bool force_next_stream = false)
inlineprotected

moves to the next stream if necessary: returns true if we still have a valid stream

◆ moveToNextStreamOnEnd() [2/2]

bool moveToNextStreamOnEnd ( bool force_next_stream = false)
inlineprotected

moves to the next stream if necessary: returns true if we still have a valid stream

◆ operator bool() [1/2]

operator bool ( )
inline

Returns true if active and we still have data.

◆ operator bool() [2/2]

operator bool ( )
inline

Returns true if active and we still have data.

◆ readBytes() [1/2]

size_t readBytes ( uint8_t * data,
size_t len )
inlineoverridevirtual

Implements BaseStream.

◆ readBytes() [2/2]

size_t readBytes ( uint8_t * data,
size_t len )
inlineoverridevirtual

Implements BaseStream.

◆ refillReadBuffer() [1/2]

void refillReadBuffer ( )
inlineprotectedinherited

Refill small read buffer (e.g. 8 bytes) to avoid single byte reads when calling read().

◆ refillReadBuffer() [2/2]

void refillReadBuffer ( )
inlineprotectedinherited

Refill small read buffer (e.g. 8 bytes) to avoid single byte reads when calling read().

◆ setAvailableCallback() [1/2]

void setAvailableCallback ( int(* callback )(Stream *stream))
inline

Defines the callback used to determine available bytes for a stream.

◆ setAvailableCallback() [2/2]

void setAvailableCallback ( int(* callback )(Stream *stream))
inline

Defines the callback used to determine available bytes for a stream.

◆ setOnBeginCallback() [1/2]

void setOnBeginCallback ( void(* callback )(Stream *stream))
inline

Defines the callback which is called when a new stream is started.

◆ setOnBeginCallback() [2/2]

void setOnBeginCallback ( void(* callback )(Stream *stream))
inline

Defines the callback which is called when a new stream is started.

◆ setOnEndCallback() [1/2]

void setOnEndCallback ( void(* callback )(Stream *stream))
inline

Defines the callback which is called when a stream is finished.

◆ setOnEndCallback() [2/2]

void setOnEndCallback ( void(* callback )(Stream *stream))
inline

Defines the callback which is called when a stream is finished.

◆ setTimeout() [1/2]

void setTimeout ( size_t t)
inline

Defines the timout in ms the system waits for data when moving to the next stream.

◆ setTimeout() [2/2]

void setTimeout ( size_t t)
inline

Defines the timout in ms the system waits for data when moving to the next stream.

◆ setWriteBufferSize() [1/2]

void setWriteBufferSize ( int size)
inlineinherited

◆ setWriteBufferSize() [2/2]

void setWriteBufferSize ( int size)
inlineinherited

◆ streamAvailable() [1/2]

int streamAvailable ( Stream * stream)
inlineprotected

◆ streamAvailable() [2/2]

int streamAvailable ( Stream * stream)
inlineprotected

◆ write() [1/3]

◆ write() [2/3]

size_t write ( const uint8_t * data,
size_t size )
inlineoverridevirtual

not supported

Implements BaseStream.

◆ write() [3/3]

size_t write ( const uint8_t * data,
size_t size )
inlineoverridevirtual

not supported

Implements BaseStream.

Member Data Documentation

◆ _timeout

int _timeout = 10
protectedinherited

◆ all_streams

Vector< Stream * > all_streams
protected

◆ available_callback

int(* available_callback)(Stream *stream) = nullptr
protected

◆ begin_callback

void(* begin_callback)(Stream *stream) = nullptr
protected

◆ begin_reset

bool begin_reset = false
protected

◆ end_callback

void(* end_callback)(Stream *stream) = nullptr
protected

◆ input_streams

Vector< Stream * > input_streams
protected

◆ is_active

bool is_active = false
protected

◆ p_current_stream

Stream * p_current_stream = nullptr
protected

◆ tmp_in

RingBuffer< uint8_t > tmp_in {0}
protectedinherited

◆ tmp_out

RingBuffer< uint8_t > tmp_out {0}
protectedinherited

◆ write_buffer_size

int write_buffer_size = 8
protectedinherited

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