OpalAudioMixer Class Reference

#include <opalmixer.h>

Inheritance diagram for OpalAudioMixer:

OpalBaseMixer OpalMixerNode::AudioMixer

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, unsigned minJitterDelay, unsigned maxJitterDelay)

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)

Protected Attributes

bool m_stereo
unsigned m_sampleRate
AudioStreamm_left
AudioStreamm_right
std::vector< int > m_mixedAudio

Data Structures

struct  AudioStream

Detailed Description

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.


Constructor & Destructor Documentation

OpalAudioMixer::OpalAudioMixer ( bool  stereo = false,
unsigned  sampleRate = OpalMediaFormat::AudioClockRate,
bool  pushThread = true,
unsigned  period = 10 
)

Parameters:
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

OpalAudioMixer::~OpalAudioMixer (  )  [inline]


Member Function Documentation

virtual Stream* OpalAudioMixer::CreateStream (  )  [protected, virtual]

Implements OpalBaseMixer.

virtual size_t OpalAudioMixer::GetOutputSize (  )  const [protected, virtual]

Implements OpalBaseMixer.

unsigned OpalAudioMixer::GetSampleRate (  )  const [inline]

Get sample rate for audio.

bool OpalAudioMixer::IsStereo (  )  const [inline]

Return flag for mixing stereo audio data.

void OpalAudioMixer::MixAdditive ( RTP_DataFrame frame,
const short *  audioToSubtract 
) [protected]

void OpalAudioMixer::MixStereo ( RTP_DataFrame frame  )  [protected]

virtual bool OpalAudioMixer::MixStreams ( RTP_DataFrame frame  )  [protected, virtual]

Implements OpalBaseMixer.

void OpalAudioMixer::PreMixStreams (  )  [protected]

virtual void OpalAudioMixer::RemoveAllStreams (  )  [virtual]

Remove all input streams from mixer.

Reimplemented from OpalBaseMixer.

virtual void OpalAudioMixer::RemoveStream ( const Key_T key  )  [virtual]

Remove an input stream from mixer.

Parameters:
key  key for mixer stream

bool OpalAudioMixer::SetJitterBufferSize ( const Key_T key,
unsigned  minJitterDelay,
unsigned  maxJitterDelay 
)

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.

Parameters:
key  key for mixer stream
minJitterDelay  Minimum jitter buffer delay in RTP timestamp units
maxJitterDelay  Maximum jitter buffer delay in RTP timestamp units

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.

Parameters:
rate  New rate


Field Documentation

AudioStream* OpalAudioMixer::m_left [protected]

std::vector<int> OpalAudioMixer::m_mixedAudio [protected]

AudioStream* OpalAudioMixer::m_right [protected]

unsigned OpalAudioMixer::m_sampleRate [protected]

bool OpalAudioMixer::m_stereo [protected]


The documentation for this class was generated from the following file:
Generated on Mon Feb 21 20:19:23 2011 for OPAL by  doxygen 1.4.7