# OpalMixerNode Class Reference

`#include <opalmixer.h>`

Collaboration diagram for OpalMixerNode:

[legend]

## Public Member Functions

Construction
| OpalMixerNode (OpalMixerNodeManager &manager, OpalMixerNodeInfo *info)
| ~OpalMixerNode ()
void | ShutDown ()
Overrides from PObject
void | PrintOn (ostream &strm) const
Operations
virtual void | AttachConnection (OpalConnection *connection)
virtual void | DetachConnection (OpalConnection *connection)
virtual bool | AttachStream (OpalMixerMediaStream *stream)
virtual void | DetachStream (OpalMixerMediaStream *stream)
virtual void | UseMediaPassThrough (unsigned sessionID, OpalConnection *connection=NULL)
bool | SetJitterBufferSize (const OpalBaseMixer::Key_T &key, const OpalJitterBuffer::Init &init)
bool | WriteAudio (const OpalBaseMixer::Key_T &key, const RTP_DataFrame &input)
bool | WriteVideo (const OpalBaseMixer::Key_T &key, const RTP_DataFrame &input)
virtual void | BroadcastUserInput (const OpalConnection *connection, const PString &value)
virtual void | GetConferenceState (OpalConferenceState &state) const
Member variable access
const PGloballyUniqueID & | GetGUID () const
const PStringSet & | GetNames () const
void | AddName (const PString &name)
void | RemoveName (const PString &name)
PINDEX | GetConnectionCount () const
template<class Subclass>
PSafePtr< Subclass > | GetFirstConnectionAs (PSafetyMode mode=PSafeReference) const
PSafePtr< OpalConnection > | GetFirstConnection (PSafetyMode mode=PSafeReference) const
const OpalMixerNodeInfo & | GetNodeInfo ()
const PTime & | GetCreationTime () const
void | SetOwnerConnection (const PString &connectionIdentifier)

## Protected Attributes

OpalMixerNodeManager & | m_manager
PGloballyUniqueID | m_guid
PStringSet | m_names
OpalMixerNodeInfo * | m_info
PTime | m_creationTime
PAtomicBoolean | m_shuttingDown
PSafeList< OpalConnection > | m_connections
PString | m_ownerConnection
AudioMixer | m_audioMixer
VideoMixer | m_videoMixer

## Data Structures

struct | AudioMixer
struct | MediaMixer
struct | VideoMixer

## Detailed Description

Mixer node. This class represents a group of connections that are being mixed.

## Constructor & Destructor Documentation

OpalMixerNode::OpalMixerNode | ( | OpalMixerNodeManager & | manager,
|  | OpalMixerNodeInfo * | info |
| ) |  |  |

Create a new node.

Parameters:

  manager | Manager for this node
  info | Configuration information

OpalMixerNode::~OpalMixerNode | ( |  | ) |

Destroy node.

## Member Function Documentation

void OpalMixerNode::AddName | ( | const PString & | name | ) |

Add a name for this node.

virtual void OpalMixerNode::AttachConnection | ( | OpalConnection * | connection | ) | `[virtual]`

Attach a connection.

Parameters:

  connection | Connection to attach

virtual bool OpalMixerNode::AttachStream | ( | OpalMixerMediaStream * | stream | ) | `[virtual]`

Attach a stream for output.

Parameters:

  stream | Stream to attach

virtual void OpalMixerNode::BroadcastUserInput | ( | const OpalConnection * | connection,
|  | const PString & | value |
| ) |  |  | `[virtual]`

Send a user input indication to all connections.

Parameters:

  connection | Connection NOT to send to
  value | String value of indication

virtual void OpalMixerNode::DetachConnection | ( | OpalConnection * | connection | ) | `[virtual]`

Detach a connection.

Parameters:

  connection | Connection to detach

virtual void OpalMixerNode::DetachStream | ( | OpalMixerMediaStream * | stream | ) | `[virtual]`

Detach a stream for output.

Parameters:

  stream | Stream to detach

virtual void OpalMixerNode::GetConferenceState | ( | OpalConferenceState & | state | ) | const`[virtual]`

Get Conference state information. This obtains the state information about a conference this connection is directly a part of. If the connection type does not embody a conference then false is returned.

The `state` parameter, if non-NULL, is illed with the state of the conference. When NULL, this just indicates that the connection is part of a conference with the return value.

Default behaviour is to return false which indicates this connection is not part of a conference.

Parameters:

  state | Conference state information

PINDEX OpalMixerNode::GetConnectionCount | ( |  | ) | const`[inline]`

Get count of connections. Note that as this value can change ata any moent, it is really not that useful and should definitely not be used for enumeration of the connections.

const PTime& OpalMixerNode::GetCreationTime | ( |  | ) | const`[inline]`

Get the creation time of the node.

PSafePtr<OpalConnection> OpalMixerNode::GetFirstConnection | ( | PSafetyMode | mode = `PSafeReference` | ) | const`[inline]`

Get first connection in the connections list.

template<class Subclass>

PSafePtr<Subclass> OpalMixerNode::GetFirstConnectionAs | ( | PSafetyMode | mode = `PSafeReference` | ) | const`[inline]`

Get first connection in the connections list as type.

const PGloballyUniqueID& OpalMixerNode::GetGUID | ( |  | ) | const`[inline]`

Get globally unique identifier for node.

const PStringSet& OpalMixerNode::GetNames | ( |  | ) | const`[inline]`

Get list of names for this node.

const OpalMixerNodeInfo& OpalMixerNode::GetNodeInfo | ( |  | ) | `[inline]`

Get the raw audio accumulation buffer.

void OpalMixerNode::PrintOn | ( | ostream & | strm | ) | const

Standard stream print function. The PObject class has a << operator defined that invokes this function polymorphically.

Parameters:

  strm | Stream to output text representation

void OpalMixerNode::RemoveName | ( | const PString & | name | ) |

Remove a name for this node.

bool OpalMixerNode::SetJitterBufferSize | ( | const OpalBaseMixer::Key_T & | key,
|  | const OpalJitterBuffer::Init & | init |
| ) |  |  | `[inline]`

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

void OpalMixerNode::SetOwnerConnection | ( | const PString & | connectionIdentifier | ) | `[inline]`

Set the owner connection. If a connection with GetToken(), GetLocalPartyURL() or GetRemotePartyURL() equal to `connectionIdentifier` disconnects from the node, then the node is shut down and all other participants disconnected.

void OpalMixerNode::ShutDown | ( |  | ) |

Shut down node. This clears all attached connections, removes all names and generally shuts the node down.

virtual void OpalMixerNode::UseMediaPassThrough | ( | unsigned | sessionID,
|  | OpalConnection * | connection = `NULL` |
| ) |  |  | `[virtual]`

Use media bypass if applicable.

Parameters:

  sessionID | Session ID to bypass, 0 indicates all
  connection | Just deleted connection

bool OpalMixerNode::WriteAudio | ( | const OpalBaseMixer::Key_T & | key,
|  | const RTP_DataFrame & | input |
| ) |  |  | `[inline]`

Write data to mixer.

Parameters:

  key | key for mixer stream
  input | Input RTP data for media

bool OpalMixerNode::WriteVideo | ( | const OpalBaseMixer::Key_T & | key,
|  | const RTP_DataFrame & | input |
| ) |  |  | `[inline]`

Write data to mixer.

Parameters:

  key | key for mixer stream
  input | Input RTP data for media

## Field Documentation

AudioMixer OpalMixerNode::m_audioMixer `[protected]`

PSafeList<OpalConnection> OpalMixerNode::m_connections `[protected]`

PTime OpalMixerNode::m_creationTime `[protected]`

PGloballyUniqueID OpalMixerNode::m_guid `[protected]`

OpalMixerNodeInfo* OpalMixerNode::m_info `[protected]`

OpalMixerNodeManager& OpalMixerNode::m_manager `[protected]`

PStringSet OpalMixerNode::m_names `[protected]`

PString OpalMixerNode::m_ownerConnection `[protected]`

PAtomicBoolean OpalMixerNode::m_shuttingDown `[protected]`

VideoMixer OpalMixerNode::m_videoMixer `[protected]`

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

- opalmixer.h