# OpalAudioMixer Class Reference

`#include <opalmixer.h>`

Inheritance diagram for OpalAudioMixer:

[legend]
Collaboration diagram for OpalAudioMixer:
[legend]

## 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)

## 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
AudioStream * | m_left
AudioStream * | m_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,
|  | 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.

Parameters:

  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.

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:

- opalmixer.h