arduino-audio-tools
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | List of all members
RTSPFormatADPCM< AudioEncoder > Class Template Reference

RTSP/RTP formatter for mono IMA ADPCM (DVI4) More...

#include <RTSPFormat.h>

Inheritance diagram for RTSPFormatADPCM< AudioEncoder >:
RTSPFormat

Public Member Functions

 RTSPFormatADPCM ()
 
 RTSPFormatADPCM (AudioEncoder &encoder)
 
AudioInfo audioInfo () override
 
void begin (AudioInfo info) override
 
virtual int convert (void *data, int sampleCount)
 
AudioInfo defaultConfig ()
 
const charformat (char *buffer, int len) override
 
virtual int fragmentSize ()
 Fragment (=write) size in bytes.
 
virtual const charname ()
 
virtual int readHeader (uint8_t *data)
 Optional header: e.g. rfc2250.
 
virtual int rtpPayloadType ()
 default dynamic
 
void setFragmentSize (int fragmentSize)
 Defines the fragment size in bytes.
 
void setName (const char *name)
 Defines the name of the stream.
 
void setTimerPeriodUs (int period)
 Defines the timer period in microseconds.
 
virtual void setUseRfc2250Header (bool)
 Optional: Configure RFC2250 header usage (default: no-op)
 
int timerPeriodUs ()
 Timer period in microseconds.
 
virtual int timestampIncrement ()
 Fragment size in samples.
 
virtual bool useRfc2250Header () const
 

Protected Attributes

AudioInfo cfg {16000, 1, 16}
 
int fragment_size = 640
 
const charname_str = "RTSPAudioTools"
 
AudioEncoderp_encoder = nullptr
 
const charSTD_URL_PRE_SUFFIX = "trackID"
 
int timer_period_us = 10000
 

Detailed Description

template<class AudioEncoder>
class audio_tools::RTSPFormatADPCM< AudioEncoder >

RTSP/RTP formatter for mono IMA ADPCM (DVI4)

Maps supported sample rates (8k/16k/11.025k/22.05k) to the RFC 3551 static payload types (5,6,16,17) and generates minimal SDP (rtpmap line). Falls back to 8 kHz/PT 5 on unsupported rates.

Timing: if an encoder is provided, uses its frameDurationUs(); otherwise derives the period from fragmentSize() (2 samples per encoded byte) or retains the default 20 ms.

Template requirements (optional AudioEncoder): begin(), frameDurationUs(), blockSize(), and AudioInfoSupport (for setAudioInfo() / audioInfo()).

Note
Channels must be 1 (mono). Source AudioInfo bits describe original PCM width (e.g. 16) before 4‑bit ADPCM compression.

Constructor & Destructor Documentation

◆ RTSPFormatADPCM() [1/2]

template<class AudioEncoder >
RTSPFormatADPCM ( )
inline

◆ RTSPFormatADPCM() [2/2]

template<class AudioEncoder >
RTSPFormatADPCM ( AudioEncoder encoder)
inline

Member Function Documentation

◆ audioInfo()

template<class AudioEncoder >
AudioInfo audioInfo ( )
inlineoverridevirtual

Reimplemented from RTSPFormat.

◆ begin()

template<class AudioEncoder >
void begin ( AudioInfo  info)
inlineoverridevirtual

Reimplemented from RTSPFormat.

◆ convert()

virtual int convert ( void data,
int  sampleCount 
)
inlinevirtualinherited

Reimplemented in RTSPFormatPCM.

◆ defaultConfig()

template<class AudioEncoder >
AudioInfo defaultConfig ( )
inlinevirtual

Implements RTSPFormat.

◆ format()

template<class AudioEncoder >
const char * format ( char buffer,
int  len 
)
inlineoverridevirtual

Implements RTSPFormat.

◆ fragmentSize()

virtual int fragmentSize ( )
inlinevirtualinherited

Fragment (=write) size in bytes.

◆ name()

virtual const char * name ( )
inlinevirtualinherited

◆ readHeader()

virtual int readHeader ( uint8_t data)
inlinevirtualinherited

Optional header: e.g. rfc2250.

◆ rtpPayloadType()

virtual int rtpPayloadType ( )
inlinevirtualinherited

default dynamic

Reimplemented in RTSPFormatPCM, and RTSPFormatMP3.

◆ setFragmentSize()

void setFragmentSize ( int  fragmentSize)
inlineinherited

Defines the fragment size in bytes.

◆ setName()

void setName ( const char name)
inlineinherited

Defines the name of the stream.

◆ setTimerPeriodUs()

void setTimerPeriodUs ( int  period)
inlineinherited

Defines the timer period in microseconds.

◆ setUseRfc2250Header()

virtual void setUseRfc2250Header ( bool  )
inlinevirtualinherited

Optional: Configure RFC2250 header usage (default: no-op)

Reimplemented in RTSPFormatMP3.

◆ timerPeriodUs()

template<class AudioEncoder >
int timerPeriodUs ( )
inlinevirtual

Timer period in microseconds.

Reimplemented from RTSPFormat.

◆ timestampIncrement()

virtual int timestampIncrement ( )
inlinevirtualinherited

Fragment size in samples.

Reimplemented in RTSPFormatMP3.

◆ useRfc2250Header()

virtual bool useRfc2250Header ( ) const
inlinevirtualinherited

Reimplemented in RTSPFormatMP3.

Member Data Documentation

◆ cfg

AudioInfo cfg {16000, 1, 16}
protectedinherited

◆ fragment_size

int fragment_size = 640
protectedinherited

◆ name_str

const char* name_str = "RTSPAudioTools"
protectedinherited

◆ p_encoder

template<class AudioEncoder >
AudioEncoder* p_encoder = nullptr
protected

◆ STD_URL_PRE_SUFFIX

const char* STD_URL_PRE_SUFFIX = "trackID"
protectedinherited

◆ timer_period_us

int timer_period_us = 10000
protectedinherited

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