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

Encoder for Opus multistream audio. Supports up to 255 channels by combining multiple Opus streams into a single packet. Each fully encoded frame is written to the output stream. More...

#include <CodecOpusMultiStream.h>

Inheritance diagram for OpusMultiStreamAudioEncoder:
AudioEncoder AudioWriter AudioInfoSupport

Public Member Functions

 OpusMultiStreamAudioEncoder ()=default
 
 OpusMultiStreamAudioEncoder (Print &out)
 
AudioInfo audioInfo () override
 provides the actual input AudioInfo
 
virtual AudioInfo audioInfoOut ()
 
bool begin () override
 
virtual bool begin (AudioInfo info)
 
bool begin (OpusMultiStreamEncoderSettings settings)
 
OpusMultiStreamEncoderSettingsconfig ()
 
OpusMultiStreamEncoderSettingsdefaultConfig ()
 
void end () override
 
virtual uint32_t frameDurationUs ()
 Optional rtsp function: provide the frame duration in microseconds.
 
int frameSizeSamples ()
 
bool isOpen ()
 
int lookaheadSamples ()
 
const charmime () override
 Provides the mime type of the encoded result.
 
 operator bool () override
 
int pendingSamples ()
 
uint16_t samplesPerFrame ()
 Optional rtsp function: provide samples per the frame.
 
void setAudioInfo (AudioInfo from) override
 Defines the sample rate, number of channels and bits per sample.
 
void setOutput (Print &out_stream) override
 Default output assignment (encoders may override to store Print reference)
 
size_t write (const uint8_t *data, size_t len) override
 

Protected Member Functions

void encodeByte (uint8_t data)
 
void encodeFrame ()
 
int getFrameSizeSamples (int sampling_rate)
 
bool settings ()
 
void writeBlocking (Print *out, uint8_t *data, size_t len)
 

Protected Attributes

OpusMultiStreamEncoderSettings cfg
 
OpusMSEncoderenc = nullptr
 
Vector< uint8_tframe {0}
 
int frame_pos = 0
 
AudioInfo info
 
bool is_open = false
 
Printp_print = nullptr
 
Vector< uint8_tpacket {0}
 

Detailed Description

Encoder for Opus multistream audio. Supports up to 255 channels by combining multiple Opus streams into a single packet. Each fully encoded frame is written to the output stream.

Warning
The decoder needs a lot of stack space: SET_LOOP_TASK_STACK_SIZE(16 * 1024);

Depends on https://github.com/pschatzmann/arduino-libopus.git

Author
Phil Schatzmann

Constructor & Destructor Documentation

◆ OpusMultiStreamAudioEncoder() [1/2]

◆ OpusMultiStreamAudioEncoder() [2/2]

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/3]

bool begin ( )
inlineoverridevirtual

Implements AudioWriter.

◆ begin() [2/3]

virtual bool begin ( AudioInfo  info)
inlinevirtualinherited

◆ begin() [3/3]

bool begin ( OpusMultiStreamEncoderSettings  settings)
inline

◆ config()

OpusMultiStreamEncoderSettings & config ( )
inline

◆ defaultConfig()

OpusMultiStreamEncoderSettings & defaultConfig ( )
inline

◆ encodeByte()

void encodeByte ( uint8_t  data)
inlineprotected

◆ encodeFrame()

void encodeFrame ( )
inlineprotected

◆ end()

void end ( )
inlineoverridevirtual

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.

◆ frameSizeSamples()

int frameSizeSamples ( )
inline

◆ getFrameSizeSamples()

int getFrameSizeSamples ( int  sampling_rate)
inlineprotected

◆ isOpen()

bool isOpen ( )
inline

◆ lookaheadSamples()

int lookaheadSamples ( )
inline

◆ mime()

const char * mime ( )
inlineoverridevirtual

Provides the mime type of the encoded result.

Implements AudioEncoder.

◆ operator bool()

operator bool ( )
inlineoverridevirtual

Implements AudioWriter.

◆ pendingSamples()

int pendingSamples ( )
inline

◆ samplesPerFrame()

uint16_t samplesPerFrame ( )
inlinevirtual

Optional rtsp function: provide samples per the frame.

Reimplemented from AudioEncoder.

◆ setAudioInfo()

void setAudioInfo ( AudioInfo  from)
inlineoverridevirtual

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

Reimplemented from AudioEncoder.

◆ setOutput()

void setOutput ( Print out_stream)
inlineoverridevirtual

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

Reimplemented from AudioEncoder.

◆ settings()

bool settings ( )
inlineprotected

◆ write()

size_t write ( const uint8_t data,
size_t  len 
)
inlineoverridevirtual

Implements AudioWriter.

◆ writeBlocking()

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

Member Data Documentation

◆ cfg

◆ enc

OpusMSEncoder* enc = nullptr
protected

◆ frame

Vector<uint8_t> frame {0}
protected

◆ frame_pos

int frame_pos = 0
protected

◆ info

AudioInfo info
protectedinherited

◆ is_open

bool is_open = false
protected

◆ p_print

Print* p_print = nullptr
protected

◆ packet

Vector<uint8_t> packet {0}
protected

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