Roc Toolkit internal modules
Roc Toolkit: real-time audio streaming
roc::rtcp::IParticipant Class Referenceabstract

RTCP participant. More...

#include <iparticipant.h>

Inheritance diagram for roc::rtcp::IParticipant:

Public Member Functions

virtual ParticipantInfo participant_info ()=0
 Get local participant info. Invoked to know local CNAME, SSRC, etc. More...
 
virtual void change_source_id ()=0
 Change local SSRC to another randomly selected number. Invoked when SSRC collision is detected. More...
 
virtual bool has_send_stream ()
 Check whether pipeline has local sending stream. There can be only one local sending stream (or none). More...
 
virtual SendReport query_send_stream (core::nanoseconds_t report_time)
 Query sending report for local sending stream. Report will be used to generate RTCP packets for remote receivers. More...
 
virtual ROC_ATTR_NODISCARD status::StatusCode notify_send_stream (packet::stream_source_t recv_source_id, const RecvReport &recv_report)
 Notify local sending stream with receiver report. Report was gathered from RTCP packets from remote receiver. recv_source_id identifies remote receiver which sent report. In case of multicast sessions, one sending stream may have multiple receivers. More...
 
virtual size_t num_recv_streams ()
 Check how many local receiving streams are present. Multiple local receiving streams are allowed, each one corresponding to its own remote sender with unique sender SSRC. More...
 
virtual void query_recv_streams (RecvReport *reports, size_t n_reports, core::nanoseconds_t report_time)
 Query receiving reports from local receiving streams. Reports will be used to generate RTCP packets for remote senders. reports points to a buffer of n_reports size, where n_reports <= num_recv_streams(). More...
 
virtual ROC_ATTR_NODISCARD status::StatusCode notify_recv_stream (packet::stream_source_t send_source_id, const SendReport &send_report)
 Notify local receiving stream with sender report. Report was gathered from RTCP packets from remote sender. send_source_id identifies remote sender which sent report. If there are multiple receiving streams, each one will be notified with corresponding report. More...
 
virtual void halt_recv_stream (packet::stream_source_t send_source_id)
 Terminate local receiving stream. Invoked when BYE packet is received from remote sender. send_source_id identifies remote sender which sent BYE. More...
 

Detailed Description

RTCP participant.

Implemented by sender and receiver pipelines (see roc_pipeline module).

Used by rtcp::Communicator to generate reports for local sending and/or receiving streams, and to process reports from remote streams.

One RTCP participant is usually associated with zero or one local sending stream and one or a few (in case of multicast) remote sending streams.

For the local sending stream, multiple remote receivers may exists. Communicator will query one sending report from IParticipant for the sending stream, and notify IParticipant with multiple receiving reports, one for every discovered remote receiver.

For each local receiving stream, there is corresponding remote sender. Communicator will query receiving report from IParticipant for every local receiving stream, as will notify IParticipant with corresponding sender report for every local receiving stream.

Single IParticipant instance usually corresponds to a single RTP session. However, this is not a strict requirement: if configuration requires multiple related RTP sessions to transfer single logical source, e.g. one RTP session for media packets and another RTP session for FEC packets, then both RTP sessions will be associated with a single IParticipant instance.

Definition at line 49 of file iparticipant.h.

Member Function Documentation

◆ change_source_id()

virtual void roc::rtcp::IParticipant::change_source_id ( )
pure virtual

Change local SSRC to another randomly selected number. Invoked when SSRC collision is detected.

◆ halt_recv_stream()

virtual void roc::rtcp::IParticipant::halt_recv_stream ( packet::stream_source_t  send_source_id)
inlinevirtual

Terminate local receiving stream. Invoked when BYE packet is received from remote sender. send_source_id identifies remote sender which sent BYE.

Definition at line 114 of file iparticipant.h.

◆ has_send_stream()

virtual bool roc::rtcp::IParticipant::has_send_stream ( )
inlinevirtual

Check whether pipeline has local sending stream. There can be only one local sending stream (or none).

Definition at line 63 of file iparticipant.h.

◆ notify_recv_stream()

virtual ROC_ATTR_NODISCARD status::StatusCode roc::rtcp::IParticipant::notify_recv_stream ( packet::stream_source_t  send_source_id,
const SendReport send_report 
)
inlinevirtual

Notify local receiving stream with sender report. Report was gathered from RTCP packets from remote sender. send_source_id identifies remote sender which sent report. If there are multiple receiving streams, each one will be notified with corresponding report.

Definition at line 106 of file iparticipant.h.

◆ notify_send_stream()

virtual ROC_ATTR_NODISCARD status::StatusCode roc::rtcp::IParticipant::notify_send_stream ( packet::stream_source_t  recv_source_id,
const RecvReport recv_report 
)
inlinevirtual

Notify local sending stream with receiver report. Report was gathered from RTCP packets from remote receiver. recv_source_id identifies remote receiver which sent report. In case of multicast sessions, one sending stream may have multiple receivers.

Definition at line 79 of file iparticipant.h.

◆ num_recv_streams()

virtual size_t roc::rtcp::IParticipant::num_recv_streams ( )
inlinevirtual

Check how many local receiving streams are present. Multiple local receiving streams are allowed, each one corresponding to its own remote sender with unique sender SSRC.

Definition at line 87 of file iparticipant.h.

◆ participant_info()

virtual ParticipantInfo roc::rtcp::IParticipant::participant_info ( )
pure virtual

Get local participant info. Invoked to know local CNAME, SSRC, etc.

◆ query_recv_streams()

virtual void roc::rtcp::IParticipant::query_recv_streams ( RecvReport reports,
size_t  n_reports,
core::nanoseconds_t  report_time 
)
inlinevirtual

Query receiving reports from local receiving streams. Reports will be used to generate RTCP packets for remote senders. reports points to a buffer of n_reports size, where n_reports <= num_recv_streams().

Definition at line 95 of file iparticipant.h.

◆ query_send_stream()

virtual SendReport roc::rtcp::IParticipant::query_send_stream ( core::nanoseconds_t  report_time)
inlinevirtual

Query sending report for local sending stream. Report will be used to generate RTCP packets for remote receivers.

Definition at line 69 of file iparticipant.h.


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