---
name: "SyncSource"
section: "3"
platform: "linux"
package: "libccrtp-doc"
version: "2.0.9-4.1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SyncSource"
---

# SyncSource(3)

Synchronization source in an RTP session.

## NAME

SyncSource - Synchronization source in an RTP session.

## SYNOPSIS

`#include <sources.h>`

### Public Types

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

### 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.*

- *stateActive*

  *received, but source validity not yet guaranteed. We currently receive packets*

- *stateInactive*

  *(data or control) from this source. Was active in the near past but*

- *stateLeaving*

  *no packet from this source has been received lately. 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 Symbol Documentation

### friend class SyncSourceHandler` [friend]`

## Author

*Generated automatically by Doxygen for ccRTP from the source code.*
