arduino-audio-tools
Loading...
Searching...
No Matches
InputMerge< T > Class Template Reference

Merges multiple input streams. So if you provide 2 mono channels you get a stereo signal as result with the left channel from channel 0 and the right from channel 1. More...

#include <CodecOpusOgg.h>

Inheritance diagram for InputMerge< T >:
AudioStream AudioStream AudioInfoSource AudioInfoSupport BaseStream AudioInfoSource AudioInfoSupport BaseStream AudioInfoSource AudioInfoSupport BaseStream AudioInfoSource AudioInfoSupport BaseStream

Classes

struct  MergeRecord

Public Member Functions

 InputMerge ()=default
 Default constructor.
 InputMerge ()=default
 Default constructor.
 InputMerge (Stream &left, Stream &right)
 Constructor for stereo signal from to mono input stream.
 InputMerge (Stream &left, Stream &right)
 Constructor for stereo signal from to mono input stream.
void add (Stream &in, int channelCount, float weight=1.0)
 Adds a new input stream with 1 channel.
void add (Stream &in, int channelCount, float weight=1.0)
 Adds a new input stream with 1 channel.
virtual void addNotifyAudioChange (AudioInfoSupport &bi)
 Adds target to be notified about audio changes.
virtual void addNotifyAudioChange (AudioInfoSupport &bi)
 Adds target to be notified about audio changes.
AudioInfo audioInfo () override
 Provides the audio info with the total channel count.
AudioInfo audioInfo () override
 Provides the audio info with the total channel count.
virtual AudioInfo audioInfoOut ()
virtual AudioInfo audioInfoOut ()
int available () override
 Provides the min available data from all streams.
int available () override
 Provides the min available data from all streams.
virtual int availableForWrite () override
virtual int availableForWrite () override
virtual bool begin () override
virtual bool begin () override
virtual bool begin (AudioInfo info)
virtual bool begin (AudioInfo info)
int channelCount ()
 Number of channels to which are mixed together = number of result channels.
int channelCount ()
 Number of channels to which are mixed together = number of result channels.
virtual void clearNotifyAudioChange ()
 Deletes all change notify subscriptions.
virtual void clearNotifyAudioChange ()
 Deletes all change notify subscriptions.
void end () override
 Remove all input streams.
void end () override
 Remove all input streams.
virtual void flush () override
virtual void flush () override
bool isNotifyActive ()
 Checks if the automatic AudioInfo update is active.
bool isNotifyActive ()
 Checks if the automatic AudioInfo update is active.
virtual operator bool ()
virtual operator bool ()
size_t readBytes (uint8_t *data, size_t len) override
 Provides the data from all streams mixed together.
size_t readBytes (uint8_t *data, size_t len) override
 Provides the data from all streams mixed together.
virtual size_t readSilence (uint8_t *buffer, size_t length)
 Source to generate silence: just sets the buffer to 0.
virtual size_t readSilence (uint8_t *buffer, size_t length)
 Source to generate silence: just sets the buffer to 0.
virtual bool removeNotifyAudioChange (AudioInfoSupport &bi)
 Removes a target in order not to be notified about audio changes.
virtual bool removeNotifyAudioChange (AudioInfoSupport &bi)
 Removes a target in order not to be notified about audio changes.
virtual void setAudioInfo (AudioInfo newInfo) override
 Defines the input AudioInfo.
virtual void setAudioInfo (AudioInfo newInfo) override
 Defines the input AudioInfo.
void setNotifyActive (bool flag)
 Deactivate/Reactivate automatic AudioInfo updates: (default is active).
void setNotifyActive (bool flag)
 Deactivate/Reactivate automatic AudioInfo updates: (default is active).
void setWeight (int channel, float weight)
void setWeight (int channel, float weight)
void setWriteBufferSize (int size)
void setWriteBufferSize (int size)
virtual size_t write (const uint8_t *data, size_t len) override
virtual size_t write (const uint8_t *data, size_t len) override
virtual size_t write (uint8_t ch) override
virtual void writeSilence (size_t len)
 Writes len bytes of silence (=0).
virtual void writeSilence (size_t len)
 Writes len bytes of silence (=0).

Protected Member Functions

virtual int not_supported (int out, const char *msg="")
virtual int not_supported (int out, const char *msg="")
void notifyAudioChange (AudioInfo info)
void notifyAudioChange (AudioInfo info)
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().

Protected Attributes

int _timeout = 10
AudioInfo info
bool is_notify_active = true
Vector< AudioInfoSupport * > notify_vector
Vector< MergeRecord > records
RingBuffer< uint8_t > tmp_in {0}
RingBuffer< uint8_t > tmp_out {0}
int total_channel_count = 0
int write_buffer_size = 8

Detailed Description

template<typename T>
class audio_tools::audio_tools::InputMerge< T >

Merges multiple input streams. So if you provide 2 mono channels you get a stereo signal as result with the left channel from channel 0 and the right from channel 1.

Author
Phil Schatzmann
Template Parameters
T

Constructor & Destructor Documentation

◆ InputMerge() [1/4]

template<typename T>
InputMerge ( )
default

Default constructor.

◆ InputMerge() [2/4]

template<typename T>
InputMerge ( Stream & left,
Stream & right )
inline

Constructor for stereo signal from to mono input stream.

Parameters
left
right

◆ InputMerge() [3/4]

template<typename T>
InputMerge ( )
default

Default constructor.

◆ InputMerge() [4/4]

template<typename T>
InputMerge ( Stream & left,
Stream & right )
inline

Constructor for stereo signal from to mono input stream.

Parameters
left
right

Member Function Documentation

◆ add() [1/2]

template<typename T>
void add ( Stream & in,
int channelCount,
float weight = 1.0 )
inline

Adds a new input stream with 1 channel.

◆ add() [2/2]

template<typename T>
void add ( Stream & in,
int channelCount,
float weight = 1.0 )
inline

Adds a new input stream with 1 channel.

◆ addNotifyAudioChange() [1/2]

virtual void addNotifyAudioChange ( AudioInfoSupport & bi)
inlinevirtualinherited

Adds target to be notified about audio changes.

Reimplemented in CodecNOP, CodecNOP, EncodedAudioOutput, and EncodedAudioStream.

◆ addNotifyAudioChange() [2/2]

virtual void addNotifyAudioChange ( AudioInfoSupport & bi)
inlinevirtualinherited

Adds target to be notified about audio changes.

Reimplemented in CodecNOP, CodecNOP, EncodedAudioOutput, and EncodedAudioStream.

◆ audioInfo() [1/2]

template<typename T>
AudioInfo audioInfo ( )
inlineoverridevirtual

Provides the audio info with the total channel count.

Reimplemented from AudioStream.

◆ audioInfo() [2/2]

template<typename T>
AudioInfo audioInfo ( )
inlineoverridevirtual

Provides the audio info with the total channel count.

Reimplemented from AudioStream.

◆ audioInfoOut() [1/2]

◆ audioInfoOut() [2/2]

◆ available() [1/2]

template<typename T>
int available ( )
inlineoverridevirtual

Provides the min available data from all streams.

Reimplemented from BaseStream.

◆ available() [2/2]

template<typename T>
int available ( )
inlineoverridevirtual

Provides the min available data from all streams.

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.

◆ begin() [1/4]

template<typename T>
virtual bool begin ( )
inlineoverridevirtual

Reimplemented from BaseStream.

◆ begin() [2/4]

template<typename T>
virtual bool begin ( )
inlineoverridevirtual

Reimplemented from BaseStream.

◆ begin() [3/4]

template<typename T>
virtual bool begin ( AudioInfo info)
inlinevirtual

◆ begin() [4/4]

template<typename T>
virtual bool begin ( AudioInfo info)
inlinevirtual

◆ channelCount() [1/2]

template<typename T>
int channelCount ( )
inline

Number of channels to which are mixed together = number of result channels.

◆ channelCount() [2/2]

template<typename T>
int channelCount ( )
inline

Number of channels to which are mixed together = number of result channels.

◆ clearNotifyAudioChange() [1/2]

virtual void clearNotifyAudioChange ( )
inlinevirtualinherited

◆ clearNotifyAudioChange() [2/2]

virtual void clearNotifyAudioChange ( )
inlinevirtualinherited

◆ end() [1/2]

template<typename T>
void end ( )
inlineoverridevirtual

Remove all input streams.

Reimplemented from BaseStream.

◆ end() [2/2]

template<typename T>
void end ( )
inlineoverridevirtual

Remove all input streams.

Reimplemented from BaseStream.

◆ flush() [1/2]

◆ flush() [2/2]

◆ isNotifyActive() [1/2]

bool isNotifyActive ( )
inlineinherited

Checks if the automatic AudioInfo update is active.

◆ isNotifyActive() [2/2]

bool isNotifyActive ( )
inlineinherited

Checks if the automatic AudioInfo update is active.

◆ not_supported() [1/2]

virtual int not_supported ( int out,
const char * msg = "" )
inlineprotectedvirtualinherited

◆ not_supported() [2/2]

virtual int not_supported ( int out,
const char * msg = "" )
inlineprotectedvirtualinherited

◆ notifyAudioChange() [1/2]

void notifyAudioChange ( AudioInfo info)
inlineprotectedinherited

◆ notifyAudioChange() [2/2]

void notifyAudioChange ( AudioInfo info)
inlineprotectedinherited

◆ operator bool() [1/2]

◆ operator bool() [2/2]

◆ readBytes() [1/2]

template<typename T>
size_t readBytes ( uint8_t * data,
size_t len )
inlineoverridevirtual

Provides the data from all streams mixed together.

Reimplemented from AudioStream.

◆ readBytes() [2/2]

template<typename T>
size_t readBytes ( uint8_t * data,
size_t len )
inlineoverridevirtual

Provides the data from all streams mixed together.

Reimplemented from AudioStream.

◆ readSilence() [1/2]

virtual size_t readSilence ( uint8_t * buffer,
size_t length )
inlinevirtualinherited

Source to generate silence: just sets the buffer to 0.

◆ readSilence() [2/2]

virtual size_t readSilence ( uint8_t * buffer,
size_t length )
inlinevirtualinherited

Source to generate silence: just sets the buffer to 0.

◆ 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().

◆ removeNotifyAudioChange() [1/2]

virtual bool removeNotifyAudioChange ( AudioInfoSupport & bi)
inlinevirtualinherited

Removes a target in order not to be notified about audio changes.

◆ removeNotifyAudioChange() [2/2]

virtual bool removeNotifyAudioChange ( AudioInfoSupport & bi)
inlinevirtualinherited

Removes a target in order not to be notified about audio changes.

◆ setAudioInfo() [1/2]

◆ setAudioInfo() [2/2]

◆ setNotifyActive() [1/2]

void setNotifyActive ( bool flag)
inlineinherited

Deactivate/Reactivate automatic AudioInfo updates: (default is active).

◆ setNotifyActive() [2/2]

void setNotifyActive ( bool flag)
inlineinherited

Deactivate/Reactivate automatic AudioInfo updates: (default is active).

◆ setWeight() [1/2]

template<typename T>
void setWeight ( int channel,
float weight )
inline

Defines a new weight for the indicated channel: If you set it to 0 it is muted.

◆ setWeight() [2/2]

template<typename T>
void setWeight ( int channel,
float weight )
inline

Defines a new weight for the indicated channel: If you set it to 0 it is muted.

◆ setWriteBufferSize() [1/2]

void setWriteBufferSize ( int size)
inlineinherited

◆ setWriteBufferSize() [2/2]

void setWriteBufferSize ( int size)
inlineinherited

◆ write() [1/3]

virtual size_t write ( const uint8_t * data,
size_t len )
inlineoverridevirtualinherited

Implements BaseStream.

Reimplemented in A2DPStream, AdapterAudioOutputToAudioStream, AdaptiveResamplingStream, AnalogAudioStream, AnalogDriverESP32V1::IO16Bit, AnalogDriverESP32V2::IO16Bit, AdapterAudioOutputToAudioStream, AudioInputMonitor, AudioInputMonitor, AudioStreamWrapper, AudioStreamWrapper, AudioTimeSourceStream, BufferedStream, BufferedStream, CallbackStream, CallbackStream, ConverterStream< T >, ConverterStream< T >, EncodedAudioStream, FilteredStream< T, TF >, FilteredStream< T, TF >, FilteredStream< int16_t, int16_t >, MemoryStream, MemoryStream, ProgressStream, ProgressStream, RingBufferStream, RingBufferStream, Throttle, Throttle, TimedStream, VolumeMeter, VolumeMeter, AudioBLEClient, AudioBLEClient, AudioBLEServer, AudioBLEServer, AudioEffectStream, AudioEffectStreamT< T >, AudioFFTBase, AudioInputMonitor, AudioKitStream, AudioLoRa, AudioStreamWrapper, AudioTimeSourceStream, AutomaticGainControlStream, BufferedStream, BufferedTaskStream, CallbackStream, ChannelFormatConverterStream, ChannelFormatConverterStreamT< T >, ConverterStream< T >, EncodedAudioStream, Equalizer3BandsPerChannelT< T >, Equalizer3BandsPerChannelT< float >, Equalizer3BandsT< T >, Equalizer3BandsT< float >, EqualizerNBands< SampleT, AccT, NUM_TAPS, NUM_BANDS >, ESP3288AudioOutput, FadeStream, FaustStream< DSP >, FilteredStream< T, TF >, FormatConverterStream, FrequencyDetectorAutoCorrelation, FrequencyDetectorZeroCrossing, GoertzelStream, I2SCodecStream, I2SStream, LMSEchoCancellationStream< T >, MDFEchoCancellationStream< T, SampleType >, MeasuringStream, MemoryStream, MiniAudioStream, MozziStream, NRF24Stream, NumberFormatConverterStream, NumberFormatConverterStreamT< TFrom, TTo >, Pipeline::ModifyingStreamAdapter, Pipeline, PortAudioStream, ProgressStream, PureDataStream, QualityAnalysisStream, ResampleStream, ResampleStreamT< TInterpolator >, RingBufferStream, SPDIFOutput, SPIAudioSlave, SupportedRatesStream, TfLiteAudioStream, TfLiteAudioStreamBase, Throttle, TimedStream, URLStream, URLStreamESP32, USBAudioStreamBase, VBANStream, VolumeMeter, VolumeStream, VS1053Stream, and WM8960Stream.

◆ write() [2/3]

virtual size_t write ( const uint8_t * data,
size_t len )
inlineoverridevirtualinherited

Implements BaseStream.

Reimplemented in A2DPStream, AdapterAudioOutputToAudioStream, AdaptiveResamplingStream, AnalogAudioStream, AnalogDriverESP32V1::IO16Bit, AnalogDriverESP32V2::IO16Bit, AdapterAudioOutputToAudioStream, AudioInputMonitor, AudioInputMonitor, AudioStreamWrapper, AudioStreamWrapper, AudioTimeSourceStream, BufferedStream, BufferedStream, CallbackStream, CallbackStream, ConverterStream< T >, ConverterStream< T >, EncodedAudioStream, FilteredStream< T, TF >, FilteredStream< T, TF >, FilteredStream< int16_t, int16_t >, MemoryStream, MemoryStream, ProgressStream, ProgressStream, RingBufferStream, RingBufferStream, Throttle, Throttle, TimedStream, VolumeMeter, VolumeMeter, AudioBLEClient, AudioBLEClient, AudioBLEServer, AudioBLEServer, AudioEffectStream, AudioEffectStreamT< T >, AudioFFTBase, AudioInputMonitor, AudioKitStream, AudioLoRa, AudioStreamWrapper, AudioTimeSourceStream, AutomaticGainControlStream, BufferedStream, BufferedTaskStream, CallbackStream, ChannelFormatConverterStream, ChannelFormatConverterStreamT< T >, ConverterStream< T >, EncodedAudioStream, Equalizer3BandsPerChannelT< T >, Equalizer3BandsPerChannelT< float >, Equalizer3BandsT< T >, Equalizer3BandsT< float >, EqualizerNBands< SampleT, AccT, NUM_TAPS, NUM_BANDS >, ESP3288AudioOutput, FadeStream, FaustStream< DSP >, FilteredStream< T, TF >, FormatConverterStream, FrequencyDetectorAutoCorrelation, FrequencyDetectorZeroCrossing, GoertzelStream, I2SCodecStream, I2SStream, LMSEchoCancellationStream< T >, MDFEchoCancellationStream< T, SampleType >, MeasuringStream, MemoryStream, MiniAudioStream, MozziStream, NRF24Stream, NumberFormatConverterStream, NumberFormatConverterStreamT< TFrom, TTo >, Pipeline::ModifyingStreamAdapter, Pipeline, PortAudioStream, ProgressStream, PureDataStream, QualityAnalysisStream, ResampleStream, ResampleStreamT< TInterpolator >, RingBufferStream, SPDIFOutput, SPIAudioSlave, SupportedRatesStream, TfLiteAudioStream, TfLiteAudioStreamBase, Throttle, TimedStream, URLStream, URLStreamESP32, USBAudioStreamBase, VBANStream, VolumeMeter, VolumeStream, VS1053Stream, and WM8960Stream.

◆ write() [3/3]

◆ writeSilence() [1/2]

virtual void writeSilence ( size_t len)
inlinevirtualinherited

Writes len bytes of silence (=0).

◆ writeSilence() [2/2]

virtual void writeSilence ( size_t len)
inlinevirtualinherited

Writes len bytes of silence (=0).

Member Data Documentation

◆ _timeout

int _timeout = 10
protectedinherited

◆ info

AudioInfo info
protectedinherited

◆ is_notify_active

bool is_notify_active = true
protectedinherited

◆ notify_vector

Vector< AudioInfoSupport * > notify_vector
protectedinherited

◆ records

template<typename T>
Vector< MergeRecord > records
protected

◆ tmp_in

RingBuffer< uint8_t > tmp_in {0}
protectedinherited

◆ tmp_out

RingBuffer< uint8_t > tmp_out {0}
protectedinherited

◆ total_channel_count

template<typename T>
int total_channel_count = 0
protected

◆ write_buffer_size

int write_buffer_size = 8
protectedinherited

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