|
arduino-audio-tools
|
AVI Container Decoder which can be fed with small chunks of data. The minimum length must be bigger then the header size! The file structure is documented at https://learn.microsoft.com/en-us/windows/win32/directshow/avi-riff-file-reference. More...
#include <ContainerAVI.h>
Public Member Functions | |
| AVIDecoder (AudioDecoder *audioDecoder, VideoOutput *videoOut=nullptr, int bufferSize=1024) | |
| AVIDecoder (int bufferSize=1024) | |
| virtual void | addNotifyAudioChange (AudioInfoSupport &bi) |
| Adds target to be notified about audio changes. | |
| AudioFormat | audioFormat () |
| Provides the audio_info.wFormatTag. | |
| AudioInfo | audioInfo () override |
| provides the actual input AudioInfo | |
| virtual AudioInfo | audioInfoOut () |
| WAVFormatX | aviAudioInfo () |
| Provides the audio information. | |
| BitmapInfoHeader | aviVideoInfo () |
| Provides the video information. | |
| bool | begin () override |
| virtual bool | begin (AudioInfo info) override |
| virtual void | clearNotifyAudioChange () |
| Deletes all change notify subscriptions. | |
| void | end () override |
| Print * | getOutput () |
| bool | isMetadataReady () |
| Returns true if all metadata has been parsed and is available. | |
| bool | isNotifyActive () |
| Checks if the automatic AudioInfo update is active. | |
| AVIMainHeader | mainHeader () |
| Provides the information from the main header chunk. | |
| operator bool () override | |
| 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 | setMute (bool mute) |
| 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 the audio output stream - usually called by EncodedAudioStream. | |
| virtual void | setOutputVideoStream (VideoOutput &out_stream) |
| void | setValidationCallback (bool(*cb)(AVIDecoder &avi)) |
| void | setVideoAudioSync (VideoAudioSync *yourSync) |
| Replace the synchronization logic with your implementation. | |
| AVIStreamHeader | streamHeader (int idx) |
| Provides the information from the stream header chunks. | |
| const char * | videoFormat () |
| int | videoSeconds () |
| Provide the length of the video in seconds. | |
| virtual 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 | cleanupStack () |
| void | consume (int len) |
| We remove the processed bytes from the beginning of the buffer. | |
| uint32_t | getInt (int offset) |
| Provides the int32 at the indicated byte offset. | |
| StrView & | getStr (int offset, int len) |
| Provides the string at the indicated byte offset with the indicated length. | |
| bool | isCurrentStreamAudio () |
| bool | isCurrentStreamVideo () |
| void | notifyAudioChange (AudioInfo info) |
| bool | parse () |
| ParseObject | parseAVIStreamData () |
| ParseObject | parseChunk (const char *id) |
| We load the indicated chunk from the current data. | |
| bool | parseHeader () |
| ParseObject | parseList (const char *id) |
| We load the indicated list from the current data. | |
| void | processStack (ParseObject &result) |
| void | setupAudioInfo () |
| void | setupVideoInfo () |
| ParseObject | tryParseChunk () |
| ParseObject | tryParseChunk (const char *id) |
| ParseObject | tryParseList () |
| We try to parse the actual state for any list. | |
| ParseObject | tryParseList (const char *id) |
| void | writeBlocking (Print *out, uint8_t *data, size_t len) |
| void | writeData () |
Protected Attributes | |
| WAVFormatX | audio_info |
| Vector< StreamContentType > | content_types |
| CopyDecoder | copy_decoder |
| long | current_pos = 0 |
| ParseObject | current_stream_data |
| VideoAudioSync | defaultSynch |
| bool | header_is_avi = false |
| AudioInfo | info |
| bool | is_metadata_ready = false |
| bool | is_mute = false |
| bool | is_notify_active = true |
| bool | is_parsing_active = true |
| AVIMainHeader | main_header |
| long | movi_end_pos = 0 |
| Vector< AudioInfoSupport * > | notify_vector |
| Stack< ParseObject > | object_stack |
| long | open_subchunk_len = 0 |
| AudioDecoder * | p_decoder = nullptr |
| EncodedAudioOutput * | p_output_audio = nullptr |
| VideoOutput * | p_output_video = nullptr |
| Print * | p_print = nullptr |
| VideoAudioSync * | p_synch = &defaultSynch |
| ParseBuffer | parse_buffer |
| ParseState | parse_state = ParseHeader |
| Str | spaces |
| Str | str |
| Vector< AVIStreamHeader > | stream_header |
| int | stream_header_idx = -1 |
| bool(* | validation_cb )(AVIDecoder &avi) = nullptr |
| char | video_format [5] = {0} |
| BitmapInfoHeader | video_info |
| int | video_seconds = 0 |
AVI Container Decoder which can be fed with small chunks of data. The minimum length must be bigger then the header size! The file structure is documented at https://learn.microsoft.com/en-us/windows/win32/directshow/avi-riff-file-reference.
|
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, 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 PureDataStream, PWMAudioOutput, ChannelFormatConverterStreamT< T >, ChannelFormatConverterStream, NumberFormatConverterStreamT< TFrom, TTo >, NumberFormatConverterStream, FormatConverterStream, Pipeline, ResampleStream, and ResampleStreamT< TInterpolator >.
|
inlineoverridevirtual |
Reimplemented from AudioDecoder.
|
inlineoverridevirtualinherited |
Reimplemented from AudioWriter.
|
inlinevirtualinherited |
Deletes all change notify subscriptions.
Reimplemented in RTSPClient< TcpClient, UdpSocket >.
|
inlineoverridevirtual |
Reimplemented from AudioDecoder.
|
inlineoverridevirtual |
Implements AudioWriter.
|
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, CodecNOP, and G7xxDecoder.
|
inlinevirtualinherited |
Some decoders need e.g. a magic cookie to provide the relevant info for decoding.
Reimplemented in DecoderALAC, and MultiDecoder.
|
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.
|
inlineoverridevirtual |
Defines the audio output stream - usually called by EncodedAudioStream.
Reimplemented from AudioDecoder.
|
inline |
Register a validation callback which is called after parsing just before playing the audio
|
inlineprotected |
We parse a chunk and provide the FOURCC id and size: No content data is stored
|
inlineprotected |
We try to parse the indicated chunk and determine the size: No content data is stored
|
inlineoverridevirtual |
Implements AudioWriter.