OPAL
Version 3.14.3
|
#include <opalmixer.h>
Data Structures | |
struct | AudioStream |
Public Member Functions | |
OpalAudioMixer (bool stereo=false, unsigned sampleRate=OpalMediaFormat::AudioClockRate, bool pushThread=true, unsigned period=10) | |
~OpalAudioMixer () | |
virtual void | RemoveStream (const Key_T &key) |
virtual void | RemoveAllStreams () |
bool | IsStereo () const |
unsigned | GetSampleRate () const |
bool | SetSampleRate (unsigned rate) |
bool | SetJitterBufferSize (const Key_T &key, const OpalJitterBuffer::Init &init) |
![]() | |
OpalBaseMixer (bool pushThread, unsigned periodMS, unsigned periodTS) | |
virtual | ~OpalBaseMixer () |
virtual bool | AddStream (const Key_T &key) |
virtual bool | WriteStream (const Key_T &key, const RTP_DataFrame &input) |
virtual RTP_DataFrame * | ReadMixed () |
virtual bool | ReadMixed (RTP_DataFrame &mixed) |
virtual bool | OnMixed (RTP_DataFrame *&mixed) |
void | StartPushThread () |
void | StopPushThread (bool lock=true) |
unsigned | GetPeriodTS () const |
Protected Member Functions | |
virtual Stream * | CreateStream () |
virtual bool | MixStreams (RTP_DataFrame &frame) |
virtual size_t | GetOutputSize () const |
void | PreMixStreams () |
void | MixStereo (RTP_DataFrame &frame) |
void | MixAdditive (RTP_DataFrame &frame, const short *audioToSubtract) |
![]() | |
virtual bool | OnPush () |
void | PushThreadMain () |
Protected Attributes | |
bool | m_stereo |
unsigned | m_sampleRate |
AudioStream * | m_left |
AudioStream * | m_right |
std::vector< int > | m_mixedAudio |
![]() | |
bool | m_pushThread |
unsigned | m_periodMS |
unsigned | m_periodTS |
StreamMap_T | m_inputStreams |
unsigned | m_outputTimestamp |
RTP_DataFrame * | m_pushFrame |
PThread * | m_workerThread |
bool | m_threadRunning |
PMutex | m_mutex |
Additional Inherited Members | |
![]() | |
typedef PString | Key_T |
![]() | |
typedef std::map< Key_T, Stream * > | StreamMap_T |
Class for an audio mixer. This takes raw PCM-16 data and sums all the input data streams to produce a single PCM-16 sample value.
For 2 or less channels, they may be mixed as stereo where 16 bit PCM samples are placed in adjacent pairs in the output, rather than summing them.
OpalAudioMixer::OpalAudioMixer | ( | bool | stereo = false , |
unsigned | sampleRate = OpalMediaFormat::AudioClockRate , |
||
bool | pushThread = true , |
||
unsigned | period = 10 |
||
) |
stereo | Indicate stero or mixed mono mode |
sampleRate | Sample rate for audio, default 8kHz |
pushThread | Indicate push thread is to be used |
period | Period for push/pull of audio from mixer in milliseconds |
|
inline |
References OpalBaseMixer::StopPushThread().
|
protectedvirtual |
Implements OpalBaseMixer.
|
protectedvirtual |
Implements OpalBaseMixer.
|
inline |
Get sample rate for audio.
References m_sampleRate.
|
inline |
Return flag for mixing stereo audio data.
References m_stereo.
|
protected |
|
protected |
|
protectedvirtual |
Implements OpalBaseMixer.
|
protected |
|
virtual |
Remove all input streams from mixer.
Reimplemented from OpalBaseMixer.
|
virtual |
Remove an input stream from mixer.
key | key for mixer stream |
Reimplemented from OpalBaseMixer.
bool OpalAudioMixer::SetJitterBufferSize | ( | const Key_T & | key, |
const OpalJitterBuffer::Init & | init | ||
) |
Sets the size of the jitter buffer to be used by the specified stream in this mixer. A mixer defaults to not having any jitter buffer enabled.
If either jitter delay parameter is zero, it destroys the jitter buffer attached to this mixer.
key | key for mixer stream |
init | Initialisation information |
bool OpalAudioMixer::SetSampleRate | ( | unsigned | rate | ) |
Set sample rate for audio data. Note that all streams must have the same sample rate.
Returns false if attempts to set sample rate to something different to existing streams.
rate | New rate |
|
protected |
|
protected |
|
protected |
|
protected |
Referenced by GetSampleRate().
|
protected |
Referenced by IsStereo().