arduino-audio-tools
|
Manage multiple decoders: the actual decoder is only opened when it has been selected. The relevant decoder is determined dynamically at the first write from the determined mime type. You can add your own custom mime type determination logic. More...
#include <MultiDecoder.h>
Classes | |
struct | DecoderInfo |
Public Member Functions | |
MultiDecoder ()=default | |
Default constructor. | |
MultiDecoder (AbstractURLStream &url) | |
Provides a URLStream to look up the mime type from the http reply header. | |
void | addDecoder (AudioDecoder &decoder, const char *mime) |
Adds a decoder that will be selected by it's mime type. | |
void | addDecoder (AudioDecoder &decoder, const char *mime, bool(*check)(uint8_t *data, size_t len)) |
virtual void | addNotifyAudioChange (AudioInfoSupport &bi) |
Adds target to be notified about audio changes. | |
virtual AudioInfo | audioInfo () |
provides the actual input AudioInfo | |
virtual AudioInfo | audioInfoOut () |
bool | begin () override |
Enables the automatic mime type determination. | |
virtual bool | begin (AudioInfo info) override |
virtual void | clearNotifyAudioChange () |
Deletes all change notify subscriptions. | |
void | end () override |
closes the actual decoder | |
Print * | getOutput () |
bool | isNotifyActive () |
Checks if the automatic AudioInfo update is active. | |
virtual bool | isResultPCM () |
Returns true to indicate that the decoding result is PCM data. | |
virtual | operator bool () |
virtual bool | removeNotifyAudioChange (AudioInfoSupport &bi) |
Removes a target in order not to be notified about audio changes. | |
bool | selectDecoder (const char *mime) |
virtual void | setAudioInfo (AudioInfo from) override |
for most decoders this is not needed | |
void | setMimeSource (AbstractURLStream &url) |
Defines url stream from which we determine the mime type from the reply header. | |
void | setNotifyActive (bool flag) |
Deactivate/Reactivate automatic AudioInfo updates: (default is active) | |
virtual void | setOutput (AudioOutput &out_stream) |
Defines where the decoded result is written to. | |
virtual void | setOutput (AudioStream &out_stream) |
Defines where the decoded result is written to. | |
virtual void | setOutput (Print &out_stream) override |
Defines where the decoded result is written to. | |
size_t | write (const uint8_t *data, size_t len) override |
Public Attributes | |
int | id |
custom id to be used by application | |
Protected Member Functions | |
void | notifyAudioChange (AudioInfo info) |
void | writeBlocking (Print *out, uint8_t *data, size_t len) |
Protected Attributes | |
struct audio_tools::MultiDecoder::DecoderInfo | actual_decoder |
Vector< DecoderInfo > | decoders {0} |
AudioInfo | info |
bool | is_first = true |
bool | is_notify_active = true |
MimeDetector | mime_detector |
CodecNOP | nop |
Vector< AudioInfoSupport * > | notify_vector |
Print * | p_print = nullptr |
AbstractURLStream * | p_url_stream = nullptr |
Manage multiple decoders: the actual decoder is only opened when it has been selected. The relevant decoder is determined dynamically at the first write from the determined mime type. You can add your own custom mime type determination logic.
|
inline |
Adds a decoder that will be selected by it's mime type and defines the mime checking logic
|
inlinevirtualinherited |
Adds target to be notified about audio changes.
Reimplemented in CodecNOP, MP3DecoderMAD, EncodedAudioOutput, EncodedAudioStream, AACDecoderFDK, DecoderBasic, MP3DecoderHelix, OggContainerDecoder, Pipeline, and Pipeline::ModifyingStreamAdapter.
|
inlinevirtualinherited |
provides the actual input AudioInfo
Implements AudioInfoSupport.
Reimplemented in CodecNOP, GGWaveDecoder, AACDecoderFDK, AACDecoderHelix, DecoderBasic, MP3DecoderHelix, MP3DecoderMAD, OpusAudioDecoder, WAVDecoder, WavIMADecoder, and OggContainerDecoder.
|
inlinevirtualinherited |
provides the actual output AudioInfo: this is usually the same as audioInfo() unless we use a transforming stream
Reimplemented in PureDataStream, PWMAudioOutput, ChannelFormatConverterStreamT< T >, ChannelFormatConverterStream, NumberFormatConverterStreamT< TFrom, TTo >, NumberFormatConverterStream, FormatConverterStream, Pipeline, and ResampleStream.
|
inlineoverridevirtual |
Enables the automatic mime type determination.
Reimplemented from AudioDecoder.
|
inlineoverridevirtualinherited |
Reimplemented from AudioWriter.
|
inlineoverridevirtual |
closes the actual decoder
Reimplemented from AudioDecoder.
|
inlinevirtualinherited |
Returns true to indicate that the decoding result is PCM data.
Reimplemented in CopyDecoder, and GGWaveDecoder.
|
inlinevirtual |
Implements AudioWriter.
|
inline |
selects the actual decoder by mime type - this is usually called automatically from the determined mime type
|
inlineoverridevirtualinherited |
for most decoders this is not needed
Implements AudioWriter.
Reimplemented in GGWaveDecoder, DecoderL8, OpusAudioDecoder, CodecNOP, AACDecoderHelix, and G7xxDecoder.
|
inlinevirtualinherited |
Defines where the decoded result is written to.
Reimplemented in ADTSDecoder, MTSDecoder, MTSDecoderTSDemux, and MetaDataFilterDecoder.
|
inlinevirtualinherited |
Defines where the decoded result is written to.
Reimplemented in ADTSDecoder, MTSDecoder, MTSDecoderTSDemux, and MetaDataFilterDecoder.
|
inlineoverridevirtual |
Defines where the decoded result is written to.
Reimplemented from AudioDecoder.
|
inlineoverridevirtual |
Implements AudioWriter.