# SyncSource Class Reference
[Participants and synchronization sources.]

Synchronization source in an RTP session. More...

`#include <sources.h>`

List of all members.

## Public Types

enum | State { stateUnknown, statePrevalid, stateActive, stateInactive, stateLeaving }
| Synchronization source states during an RTP session. More...

## Public Member Functions

| SyncSource (uint32 ssrc)
| ~SyncSource ()
State | getState () const
bool | isSender () const
| Whether this source sends RTP data packets.
uint32 | getID () const
Participant * | getParticipant () const
| Get the participant this synchronization source is asociated to.
tpport_t | getDataTransportPort () const
tpport_t | getControlTransportPort () const
const InetAddress & | getNetworkAddress () const

## Protected Member Functions

| SyncSource (const SyncSource &source)
SyncSource & | operator= (const SyncSource &source)

## Friends

class | SyncSourceHandler

## Detailed Description

Synchronization source in an RTP session.

Each synchronization source in an RTP session is identified by a 32-bit numeric SSRC identifier. Each SyncSource object is related to a Participant object, which can be retrieved through the getParticipant() method.

Author:
  Federico Montesino Pouzols <fedemp@altern.org>

Examples:

  ccrtptest.cpp, and rtplisten.cpp.

## Member Enumeration Documentation

enum SyncSource::State

Synchronization source states during an RTP session.

In general, new synchronization sources are not considered valid until multiple valid data packets or a valid RTCP compound packet has been received from the new source (

See also:
  IncomingDataQueue::setMinValidPacketSequence()). Thus, the source will probably be in statePrevalid before reaching one of the two states that indicate a valid source: stateActive and stateInactive.

A valid participant is in stateActive state if RTP and/or RTCP packets are currently being received from it. If, after a small number of RTCP report intervals (see IncomingDataQueue::setSourceExpirationPeriod() ), no packets are received, it will reach the stateInactive state. If, after a small number of RTCP report intervals, no packet is received from an inactive source, it will be deleted.

If RTCP is being used, after receiving a BYE RTCP packet from a synchronization source, it will reach the stateLeaving state and will be deleted after a delay (see QueueRTCPManager::setLeavingDelay()).

Sources in statePrevalid and stateLeaving are not counted for the number of session members estimation.

Enumerator:

  stateUnknown | No valid packet has been received.
  statePrevalid | Some packets have been received, but source validity not yet guaranteed.
  stateActive | We currently receive packets (data or control) from this source.
  stateInactive | Was active in the near past but no packet from this source has been received lately.
  stateLeaving | An RTCP BYE has been received from the source.

## Constructor & Destructor Documentation

SyncSource::SyncSource | ( | uint32 | ssrc ) |

Parameters:

  ssrc | SSRC identifier of the source, unique in each session.

SyncSource::~SyncSource | ( | ) |

SyncSource::SyncSource | ( | const SyncSource & | source ) | `[protected]`

Parameters:

  source | The RTPSource object being copied

## Member Function Documentation

tpport_t SyncSource::getControlTransportPort | ( | ) | const`[inline]`

Examples:
  ccrtptest.cpp, and rtplisten.cpp.

tpport_t SyncSource::getDataTransportPort | ( | ) | const`[inline]`

Examples:
  ccrtptest.cpp, and rtplisten.cpp.

uint32 SyncSource::getID | ( | ) | const`[inline]`

Examples:
  ccrtptest.cpp, and rtplisten.cpp.

const InetAddress& SyncSource::getNetworkAddress | ( | ) | const`[inline]`

Examples:
  ccrtptest.cpp, and rtplisten.cpp.

Participant* SyncSource::getParticipant | ( | ) | const`[inline]`

Get the participant this synchronization source is asociated to.

Return values:

  NULL | if the stack has not been yet able to identify the participant this source is associated to.

Examples:
  ccrtptest.cpp, and rtplisten.cpp.

State SyncSource::getState | ( | ) | const`[inline]`

bool SyncSource::isSender | ( | ) | const`[inline]`

Whether this source sends RTP data packets.

Examples:
  ccrtptest.cpp.

SyncSource& SyncSource::operator= | ( | const SyncSource & | source ) | `[protected]`

## Friends And Related Function Documentation

friend class SyncSourceHandler `[friend]`

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

- sources.h