|
arduino-audio-tools
|
Common interface for demuxers (DemuxerAVI, DemuxerMP4) that split a container's video and (optional) audio tracks apart. Write code against this interface instead of a concrete class if it should work with either container format. More...
#include <ContainerCommon.h>
Public Member Functions | |
| virtual void | addNotifyAudioChange (AudioInfoSupport &bi) |
| Adds target to be notified about audio changes. | |
| AudioInfo | audioInfo () override |
| provides the actual input AudioInfo | |
| virtual AudioInfo | audioInfoOut () |
| bool | begin () override |
| virtual bool | begin (AudioInfo info) override |
| virtual void | clearNotifyAudioChange () |
| Deletes all change notify subscriptions. | |
| void | end () override |
| virtual AudioInfoFormat | getAudioInfo ()=0 |
| Print * | getOutput () |
| virtual VideoInfo | getVideoInfo ()=0 |
| Common video info (width/height/format/frame_size/total_file_size) | |
| bool | isNotifyActive () |
| Checks if the automatic AudioInfo update is active. | |
| virtual bool | isValid (const uint8_t *data, size_t len) |
| const char * | mime () override=0 |
| virtual const char * | mimeVideo ()=0 |
| The container's MIME type (e.g. "video/avi", "video/mp4"). | |
| virtual | operator bool ()=0 |
| virtual bool | removeNotifyAudioChange (AudioInfoSupport &bi) |
| Removes a target in order not to be notified about audio changes. | |
| void | setAudioInfo (AudioInfo from) override |
| for most decoders this is not needed | |
| virtual bool | setCodecConfig (const uint8_t *data, size_t len) |
| Some decoders need e.g. a magic cookie to provide the relevant info for decoding. | |
| 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. | |
| virtual void | setOutputAudio (Print &out)=0 |
| virtual void | setOutputVideo (Print &out)=0 |
| virtual void | setOutputVideo (VideoOutput &out)=0 |
| virtual void | setSendWavHeader (bool flag)=0 |
| VideoInfo | videoInfo () override |
| virtual size_t | write (const uint8_t *data, size_t len)=0 |
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 | |
| AudioInfo | info |
| bool | is_notify_active = true |
| Vector< AudioInfoSupport * > | notify_vector |
| Print * | p_print = nullptr |
Common interface for demuxers (DemuxerAVI, DemuxerMP4) that split a container's video and (optional) audio tracks apart. Write code against this interface instead of a concrete class if it should work with either container format.
|
inlinevirtualinherited |
Adds target to be notified about audio changes.
Reimplemented in CodecNOP, EncodedAudioOutput, EncodedAudioStream, AACDecoderFDK, DecoderBasic, CodecChain, MP3DecoderHelix, MP3DecoderMAD, OggContainerDecoder, RTSPClient< TcpClient, UdpSocket >, Pipeline, and Pipeline::ModifyingStreamAdapter.
|
inlineoverridevirtualinherited |
provides the actual input AudioInfo
Implements AudioInfoSupport.
Reimplemented in CodecNOP, DecoderBasic, DSFDecoder, MP3DecoderHelix, MP3DecoderMAD, OpusAudioDecoder, OpusMultiStreamAudioDecoder, VorbisDecoder, WAVDecoder, WavIMADecoder, OggContainerDecoder, and VorbisDecoder.
|
inlinevirtualinherited |
provides the actual output AudioInfo: this is usually the same as audioInfo() unless we use a transforming stream
Reimplemented in MP3EncoderShine, PureDataStream, PWMAudioOutput< PWMDriverT >, ChannelFormatConverterStreamT< T >, ChannelFormatConverterStream, NumberFormatConverterStreamT< TFrom, TTo >, NumberFormatConverterStream, FormatConverterStream, Pipeline, ResampleStream, ResampleStreamT< TInterpolator >, and SupportedRatesStream.
|
inlineoverridevirtualinherited |
Implements AudioWriter.
Reimplemented in CodecNOP, CodecChain, Codec2Decoder, CopyDecoder, DSFDecoder, FLACDecoderFoxen, G722Decoder, GSMDecoder, ILBCDecoder, LC3Decoder, MP3DecoderMini, DecoderNetworkFormat, SBCDecoder, WavIMADecoder, BinaryContainerDecoder, OSCContainerDecoder, DecoderBase64, DecoderBasic, G729Decoder, G7xxDecoder, MP2Decoder, MP3DecoderHelix, MP3DecoderMAD, MTSDecoder, OpusAudioDecoder, OpusMultiStreamAudioDecoder, OpusOggDecoder, MTSDecoderTSDemux, VorbisDecoder, WAVDecoder, DemuxerAVI, ContainerM4A, DemuxerMP4, DemuxerMPG, OggContainerDecoder, MultiDecoder, DecoderAdapter, VorbisDecoder, MetaDataFilterDecoder, and MultiVideoDemuxer.
|
inlineoverridevirtualinherited |
Reimplemented from AudioWriter.
Reimplemented in DecoderBasic, and OggContainerDecoder.
|
inlinevirtualinherited |
Deletes all change notify subscriptions.
Reimplemented in RTSPClient< TcpClient, UdpSocket >.
|
inlineoverridevirtualinherited |
Implements AudioWriter.
Reimplemented in CodecNOP, Codec2Decoder, CopyDecoder, FLACDecoderFoxen, G722Decoder, GSMDecoder, ILBCDecoder, LC3Decoder, MP3DecoderMini, DecoderNetworkFormat, SBCDecoder, WavIMADecoder, BinaryContainerDecoder, OSCContainerDecoder, DecoderBase64, DecoderBasic, CodecChain, DSFDecoder, G729Decoder, G7xxDecoder, MP2Decoder, MP3DecoderHelix, MP3DecoderMAD, MTSDecoder, OpusAudioDecoder, OpusMultiStreamAudioDecoder, OpusOggDecoder, MTSDecoderTSDemux, VorbisDecoder, WAVDecoder, DemuxerAVI, ContainerM4A, DemuxerMP4, DemuxerMPG, OggContainerDecoder, MultiDecoder, DecoderAdapter, VorbisDecoder, MetaDataFilterDecoder, and MultiVideoDemuxer.
|
pure virtual |
Common audio info (sample_rate/channels/bits_per_sample), extended with the parsed codec format tag.
Implemented in DemuxerAVI, DemuxerMP4, DemuxerMPG, and MultiVideoDemuxer.
|
inlineinherited |
|
pure virtual |
Common video info (width/height/format/frame_size/total_file_size)
Implemented in DemuxerAVI, DemuxerMP4, DemuxerMPG, and MultiVideoDemuxer.
|
inlineinherited |
Checks if the automatic AudioInfo update is active.
|
inlinevirtual |
True if data (the start of the stream, as handed to the first write()) looks like this demuxer's own container format - content-sniffing, not a guarantee (see the concrete class for exactly what's checked). Used by MultiVideoDemuxer to auto-select a registered demuxer (MultiVideoDemuxer.h); not otherwise part of the write()/parse path. Default false, matching VideoDecoder::isValid()'s own default - a demuxer not meant to be auto-detected this way simply never overrides it.
Reimplemented in DemuxerAVI, DemuxerMP4, and DemuxerMPG.
|
overridepure virtual |
Provides the MIME type of the audio track (e.g. "audio/wav", "audio/aac") - fulfills MimeSource::mime(), so any Demuxer can be passed directly to e.g. MultiDecoder::setMimeSource() to hint the audio codec instead of relying on sniffing the raw byte stream.
Implements AudioDecoder.
Implemented in DemuxerAVI, DemuxerMP4, DemuxerMPG, and MultiVideoDemuxer.
|
pure virtual |
The container's MIME type (e.g. "video/avi", "video/mp4").
Implemented in DemuxerAVI, DemuxerMP4, DemuxerMPG, and MultiVideoDemuxer.
|
inlineprotectedinherited |
|
pure virtualinherited |
Implemented in CodecNOP, AACDecoderFAAD, DecoderALAC, EncoderALAC, APTXDecoder, APTXEncoder, CodecChain, Codec2Decoder, Codec2Encoder, CopyDecoder, CopyEncoder, DSFDecoder, G722Decoder, G722Encoder, G7xxDecoder, G7xxEncoder, GSMDecoder, GSMEncoder, ILBCDecoder, ILBCEncoder, LC3Decoder, LC3Encoder, MP3EncoderLAME, MP3DecoderMini, DecoderNetworkFormat, EncoderNetworkFormat, SBCDecoder, SBCEncoder, WavIMADecoder, BinaryContainerEncoder, BinaryContainerDecoder, OSCContainerEncoder, OSCContainerDecoder, AACDecoderFDK, AACEncoderFDK, AACDecoderHelix, AACEncoderVO, AC3AudioDecoder, ADPCMDecoder, ADPCMEncoder, ADPCMDecoderXQ, ADPCMEncoderXQ, ADTSDecoder, AMRNBDecoder, AMRWBDecoder, DecoderBase64, EncoderBase64, DecoderBasic, EncoderBasic, DSFEncoder, FLACEncoder, FLACDecoderFoxen, DecoderFloat, EncoderFloat, G729Decoder, G729Encoder, DecoderL16, EncoderL16, DecoderL8, EncoderL8, MP2Decoder, MP3DecoderHelix, MP3DecoderMAD, MP3EncoderShine, MTSDecoder, OpusAudioDecoder, OpusAudioEncoder, OpusMultiStreamAudioDecoder, OpusMultiStreamAudioEncoder, MTSDecoderTSDemux, VorbisDecoder, WAVDecoder, WAVEncoder, DemuxerAVI, ContainerM4A, DemuxerMP4, DemuxerMPG, OggContainerDecoder, OggContainerEncoder, MP3ParserEncoder, MultiDecoder, DecoderAdapter, VorbisDecoder, MetaDataFilterDecoder, MetaDataFilterEncoder, and MultiVideoDemuxer.
|
inlinevirtualinherited |
Removes a target in order not to be notified about audio changes.
Reimplemented in RTSPClient< TcpClient, UdpSocket >.
|
inlineoverridevirtualinherited |
for most decoders this is not needed
Implements AudioWriter.
Reimplemented in DecoderALAC, CodecChain, DSFDecoder, DecoderL8, OpusAudioDecoder, OpusMultiStreamAudioDecoder, CodecNOP, G729Decoder, and G7xxDecoder.
|
inlinevirtualinherited |
Some decoders need e.g. a magic cookie to provide the relevant info for decoding.
Reimplemented in DecoderALAC, and MultiDecoder.
|
inlineinherited |
Deactivate/Reactivate automatic AudioInfo updates: (default is active)
|
inlinevirtualinherited |
Defines where the decoded result is written to.
Reimplemented in ADTSDecoder, CodecChain, MTSDecoder, MTSDecoderTSDemux, and MetaDataFilterDecoder.
|
inlinevirtualinherited |
Defines where the decoded result is written to.
Reimplemented in ADTSDecoder, CodecChain, MTSDecoder, MTSDecoderTSDemux, and MetaDataFilterDecoder.
|
inlineoverridevirtualinherited |
Defines where the decoded result is written to.
Implements AudioWriter.
Reimplemented in DecoderBase64, MP3DecoderMAD, DemuxerMP4, DemuxerMPG, DecoderAdapter, MultiVideoDemuxer, CodecNOP, ADPCMDecoderXQ, APTXDecoder, Codec2Decoder, CopyDecoder, G722Decoder, GSMDecoder, ILBCDecoder, LC3Decoder, DecoderNetworkFormat, SBCDecoder, WavIMADecoder, AACDecoderFDK, AACDecoderHelix, ADPCMDecoder, ADTSDecoder, DecoderBasic, CodecChain, DecoderFloat, G729Decoder, G7xxDecoder, DecoderL16, MP2Decoder, MTSDecoder, OpusAudioDecoder, OpusMultiStreamAudioDecoder, MTSDecoderTSDemux, WAVDecoder, DemuxerAVI, ContainerM4A, MultiDecoder, MetaDataFilterDecoder, MP3DecoderMini, BinaryContainerDecoder, OSCContainerDecoder, MP3DecoderHelix, and OggContainerDecoder.
|
pure virtual |
Defines the audio output stream - e.g. an EncodedAudioStream wrapping an AudioDecoder that matches the track's codec, or any other Print if you want the raw payload as-is.
Implemented in DemuxerMP4, DemuxerMPG, MultiVideoDemuxer, and DemuxerAVI.
|
pure virtual |
Defines the video output - e.g. a VideoOutput implementation, or any other Print if you want the raw payload as-is.
Implemented in DemuxerMP4, DemuxerMPG, MultiVideoDemuxer, and DemuxerAVI.
|
pure virtual |
Defines the video output - the VideoOutput-specific counterpart of setOutputVideo(Print&), for a target like PacedVideoOutput/ OutputTinyGPU/OutputOpenCV that implements VideoOutput but not Print (the two are unrelated types - see VideoFrameMeter's own comment). Part of the base interface (unlike other concrete-class-specific extras) so code holding only a Demuxer& (e.g. VideoPlayer) can wire it to an arbitrary VideoOutput& without knowing the concrete container format - every current demuxer already implemented this identically before it was pulled up into the interface.
Implemented in DemuxerMP4, DemuxerMPG, MultiVideoDemuxer, and DemuxerAVI.
|
pure virtual |
Overrides the automatic decision of whether a synthetic WAV header is sent to the audio output before any audio payload - see the concrete class for the default heuristic.
Implemented in DemuxerAVI, DemuxerMP4, DemuxerMPG, and MultiVideoDemuxer.
|
inlineoverridevirtual |
Fulfills VideoInfoSource::videoInfo(), so any Demuxer can be passed directly to e.g. OutputOpenCV::setVideoInfoSource() - note the reported 'format' is the container's codec (e.g. H264), not necessarily what ends up written to a raw-picture VideoOutput/Print (that depends on whatever decoder sits between the demuxer and the output); consumers that care about the decoded format should still set it explicitly and rely on this only for width/height.
Implements VideoInfoSource.
|
pure virtualinherited |
Implemented in CodecNOP, AACDecoderFAAD, ADPCMDecoderXQ, APTXDecoder, APTXEncoder, CopyDecoder, CopyEncoder, DSFDecoder, G722Decoder, G722Encoder, GSMDecoder, GSMEncoder, ILBCDecoder, ILBCEncoder, LC3Decoder, LC3Encoder, MP3EncoderLAME, MP3DecoderMini, DecoderNetworkFormat, EncoderNetworkFormat, SBCDecoder, SBCEncoder, WavIMADecoder, BinaryContainerEncoder, BinaryContainerDecoder, OSCContainerEncoder, OSCContainerDecoder, AACDecoderFDK, AACEncoderFDK, AACDecoderHelix, AACEncoderVO, AC3AudioDecoder, ADPCMDecoder, ADPCMEncoder, ADPCMEncoderXQ, ADTSDecoder, EncoderALAC, AMRNBDecoder, AMRNBEncoder, AMRWBDecoder, AMRWBEncoder, DecoderBase64, EncoderBase64, DecoderBasic, CodecChain, Codec2Decoder, DSFEncoder, FLACEncoder, FLACDecoderFoxen, DecoderFloat, EncoderFloat, G729Decoder, G729Encoder, G7xxDecoder, G7xxEncoder, G711Encoder, G711Decoder, DecoderL16, EncoderL16, DecoderL8, EncoderL8, MP2Decoder, MP3DecoderHelix, MP3DecoderMAD, MP3EncoderShine, MTSDecoder, OpusAudioDecoder, OpusAudioEncoder, OpusMultiStreamAudioDecoder, OpusMultiStreamAudioEncoder, MTSDecoderTSDemux, WAVDecoder, WAVEncoder, DemuxerAVI, ContainerM4A, DemuxerMP4, DemuxerMPG, OggContainerDecoder, OggContainerEncoder, MP3ParserEncoder, MultiDecoder, DecoderAdapter, VorbisDecoder, MetaDataFilterDecoder, MetaDataFilterEncoder, MultiVideoDemuxer, DecoderALAC, EncoderBasic, and Codec2Encoder.
|
inlineprotectedinherited |
|
inherited |
custom id to be used by application
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |