arduino-audio-tools
Loading...
Searching...
No Matches
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
OSCContainerEncoder Class Reference

Wraps the encoded data into OSC info and data segments so that the receiver can recover the audio configuration and orignial segments. More...

#include <ContainerOSC.h>

Inheritance diagram for OSCContainerEncoder:
AudioEncoder AudioWriter MimeSource AudioInfoSupport

Classes

class  OSCOutput
 Output Encoded Audio via OSC. More...
 

Public Member Functions

 OSCContainerEncoder ()=default
 
 OSCContainerEncoder (AudioEncoder &encoder)
 
AudioInfo audioInfo () override
 provides the actual input AudioInfo
 
virtual AudioInfo audioInfoOut ()
 
bool begin () override
 
virtual bool begin (AudioInfo info)
 
void end ()
 
virtual uint32_t frameDurationUs ()
 Optional rtsp function: provide the frame duration in microseconds.
 
virtual int frameSize ()
 
uint64_t getSequenceNumber ()
 Returns the sequence number of the next packet.
 
virtual const char * mime ()
 Provides the mime type of the encoded result.
 
 operator bool ()
 
size_t resendEncodedData (uint8_t *data, size_t len, uint64_t seq)
 Resend the encoded data.
 
virtual uint16_t samplesPerFrame ()
 Optional rtsp function: provide samples per the frame.
 
void setAudioInfo (AudioInfo info) override
 Defines the sample rate, number of channels and bits per sample.
 
void setEncodedWriteCallback (void(*write_callback)(uint8_t *data, size_t len, uint64_t seq, void *ref))
 Get informed about the encoded packages.
 
void setEncoder (AudioEncoder *encoder)
 
void setInfoActive (bool flag)
 Activate/deactivate the sending of the audio info.
 
void setOutput (Print &outStream)
 Default output assignment (encoders may override to store Print reference)
 
void setReference (void *ref)
 Define a reference object to be provided by the callback.
 
void setRepeatInfoEvery (int packet_count)
 Automatically resend audio info ever nth write.
 
size_t write (const uint8_t *data, size_t len)
 Add data segment. On first write we also add a AudioInfo header.
 

Protected Member Functions

void writeAudioInfo (AudioInfo info, const char *mime)
 OUtput AudioInfo via OSC.
 
void writeBlocking (Print *out, uint8_t *data, size_t len)
 

Protected Attributes

AudioInfo info
 
bool is_active = false
 
bool is_send_info_active = true
 
audio_tools::OSCContainerEncoder::OSCOutput osc_out
 
AudioEncoderp_codec = nullptr
 
Printp_out = nullptr
 
uint64_t packet_count = 0
 
int repeat_info = 0
 

Detailed Description

Wraps the encoded data into OSC info and data segments so that the receiver can recover the audio configuration and orignial segments.

Author
Phil Schatzmann

Constructor & Destructor Documentation

◆ OSCContainerEncoder() [1/2]

OSCContainerEncoder ( )
default

◆ OSCContainerEncoder() [2/2]

OSCContainerEncoder ( AudioEncoder encoder)
inline

Member Function Documentation

◆ audioInfo()

AudioInfo audioInfo ( )
inlineoverridevirtualinherited

provides the actual input AudioInfo

Implements AudioInfoSupport.

Reimplemented in CodecNOP, MP3EncoderShine, BinaryContainerEncoder, and MP3ParserEncoder.

◆ audioInfoOut()

virtual AudioInfo audioInfoOut ( )
inlinevirtualinherited

◆ begin() [1/2]

bool begin ( )
inlineoverridevirtual

Implements AudioWriter.

◆ begin() [2/2]

virtual bool begin ( AudioInfo  info)
inlinevirtualinherited

◆ end()

void end ( )
inlinevirtual

Implements AudioWriter.

◆ frameDurationUs()

virtual uint32_t frameDurationUs ( )
inlinevirtualinherited

Optional rtsp function: provide the frame duration in microseconds.

Reimplemented in ADPCMEncoder, MP3EncoderShine, OpusOggEncoder, MP3ParserEncoder, and MetaDataFilterEncoder.

◆ frameSize()

virtual int frameSize ( )
inlinevirtualinherited

Optional rtsp function: provide the encoded size (in bytes) of one frame, once known (e.g. after the encoder has seen real data). Lets an RTSPFormat size its RTP fragments to match one frame instead of a fixed guess, so throughput actually tracks frameDurationUs() - a fragment size covering several frames' worth of bytes sent at one-frame timing overruns real-time bandwidth and, over UDP (no flow control), causes packet loss. Returns 0 if not yet known/not applicable (fixed-frame-size codecs have no need to override this).

Reimplemented in ADPCMEncoder, EncoderALAC, AMRNBEncoder, AMRWBEncoder, and MP3ParserEncoder.

◆ getSequenceNumber()

uint64_t getSequenceNumber ( )
inline

Returns the sequence number of the next packet.

◆ mime()

virtual const char * mime ( )
inlinevirtual

Provides the mime type of the encoded result.

Implements AudioEncoder.

◆ operator bool()

operator bool ( )
inlinevirtual

Implements AudioWriter.

◆ resendEncodedData()

size_t resendEncodedData ( uint8_t *  data,
size_t  len,
uint64_t  seq 
)
inline

Resend the encoded data.

◆ samplesPerFrame()

virtual uint16_t samplesPerFrame ( )
inlinevirtualinherited

Optional rtsp function: provide samples per the frame.

Reimplemented in OpusAudioEncoder, OpusMultiStreamAudioEncoder, MP3EncoderShine, MP3ParserEncoder, and MetaDataFilterEncoder.

◆ setAudioInfo()

void setAudioInfo ( AudioInfo  from)
inlineoverridevirtual

Defines the sample rate, number of channels and bits per sample.

Reimplemented from AudioEncoder.

◆ setEncodedWriteCallback()

void setEncodedWriteCallback ( void(*)(uint8_t *data, size_t len, uint64_t seq, void *ref)  write_callback)
inline

Get informed about the encoded packages.

◆ setEncoder()

void setEncoder ( AudioEncoder encoder)
inline

◆ setInfoActive()

void setInfoActive ( bool  flag)
inline

Activate/deactivate the sending of the audio info.

◆ setOutput()

void setOutput ( Print out_stream)
inlinevirtual

Default output assignment (encoders may override to store Print reference)

Reimplemented from AudioEncoder.

◆ setReference()

void setReference ( void *  ref)
inline

Define a reference object to be provided by the callback.

◆ setRepeatInfoEvery()

void setRepeatInfoEvery ( int  packet_count)
inline

Automatically resend audio info ever nth write.

◆ write()

size_t write ( const uint8_t *  data,
size_t  len 
)
inlinevirtual

Add data segment. On first write we also add a AudioInfo header.

Implements AudioWriter.

◆ writeAudioInfo()

void writeAudioInfo ( AudioInfo  info,
const char *  mime 
)
inlineprotected

OUtput AudioInfo via OSC.

◆ writeBlocking()

void writeBlocking ( Print out,
uint8_t *  data,
size_t  len 
)
inlineprotectedinherited

Member Data Documentation

◆ info

AudioInfo info
protectedinherited

◆ is_active

bool is_active = false
protected

◆ is_send_info_active

bool is_send_info_active = true
protected

◆ osc_out

◆ p_codec

AudioEncoder* p_codec = nullptr
protected

◆ p_out

Print* p_out = nullptr
protected

◆ packet_count

uint64_t packet_count = 0
protected

◆ repeat_info

int repeat_info = 0
protected

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