TAO_AV 3.1.4
Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions | Private Attributes | List of all members
RTCP_Channel_In Class Reference

The RTCP_Channel_In class represents a single incoming data channel, or stream. The class has several responsibilities. When the class is instantiated, the incoming RTP traffic must be declared a valid source based on the RTP packets received. Once declared valie, this class is responsible for keeping up with reception statistics and other information. When an SR or RR is created (outside of this class), this class is used to get the Receiver Report block for this particular stream. More...

#include <RTCP_Channel.h>

Collaboration diagram for RTCP_Channel_In:
Collaboration graph
[legend]

Public Member Functions

 RTCP_Channel_In (ACE_UINT32 ssrc, const ACE_Addr *addr)
 
 ~RTCP_Channel_In ()
 Destructor.
 
void recv_rtp_packet (ACE_Message_Block *mb, const ACE_Addr *peer_addr)
 
RR_BlockgetRRBlock ()
 Takes statistics of incoming RTP traffic and creates a receiver report block.
 
ACE_UINT32 dlsr ()
 Returns the delay since last sender report.
 
ACE_UINT32 lsr ()
 Returns the last sender report timestamp.
 
int updateStatistics (RTCP_SR_Packet *sr)
 Updates channel information with incoming sender report.
 
int updateStatistics (RTCP_RR_Packet *rr)
 Updates channel information with incoming receiver report.
 
int sender ()
 Returns 1 if data has been sent since the last report, 0 if not.
 
int active ()
 Returns 1 if this is an active source, 0 if not.
 

Private Member Functions

 RTCP_Channel_In ()
 Don't want default constructor.
 
 RTCP_Channel_In (const RTCP_Channel_In &ch)
 Don't want copy constructor.
 
void updateStatistics (RTP_Packet *pkt)
 This operation is used update statistics for the incoming RTP packet.
 
void init_seq (ACE_UINT16 seq)
 This is called when the first RTP packet is received.
 
int update_seq (ACE_UINT16 seq)
 

Private Attributes

ACE_UINT32 remote_ssrc_
 The synchronization source id of the source this channel represents.
 
ACE_CString cname_
 The canonical name of the source this channel represents.
 
ACE_UINT16 max_seq_
 The highest sequence number seen.
 
ACE_UINT32 cycles_
 The shifted count of sequence number cycles (ie when sequence number wraps)
 
ACE_UINT32 base_seq_
 The first sequence number received.
 
ACE_UINT32 bad_seq_
 last 'bad' sequence number + 1
 
ACE_UINT32 probation_
 The number of in sequence packets until a source is declared valid.
 
ACE_UINT32 received_
 The number of packets received.
 
ACE_UINT32 expected_prior_
 The packet expected at last interval.
 
ACE_UINT32 received_prior_
 The packet received at last interval.
 
ACE_UINT32 transit_
 The last transit time.
 
double jitter_
 The inter-arrival jitter measured in timestamp units.
 
char first_data_packet_
 Flag to indicate the first data packet received.
 
ACE_UINT32 init_time_stamp_
 The first timestamp received.
 
ACE_Time_Value init_local_time_
 The local time that the initial packet was received.
 
ACE_Addrpeer_address_
 The address that the first RTP packet was received from.
 
ACE_UINT32 ntp_ts_msw_
 The most significant word of the last sender report NTP timestamp.
 
ACE_UINT32 ntp_ts_lsw_
 The least significant word of the last sender report NTP timestamp.
 
ACE_UINT32 rtp_ts_
 The last sender report RTP timestamp.
 
ACE_UINT32 last_sr_time_
 
int active_
 Flag to indicate whether or not the source is active.
 
int no_data_counter_
 
char data_since_last_report_
 
int payload_type_
 The RTP payload type.
 

Detailed Description

The RTCP_Channel_In class represents a single incoming data channel, or stream. The class has several responsibilities. When the class is instantiated, the incoming RTP traffic must be declared a valid source based on the RTP packets received. Once declared valie, this class is responsible for keeping up with reception statistics and other information. When an SR or RR is created (outside of this class), this class is used to get the Receiver Report block for this particular stream.

Constructor & Destructor Documentation

◆ RTCP_Channel_In() [1/3]

RTCP_Channel_In::RTCP_Channel_In ( ACE_UINT32 ssrc,
const ACE_Addr * addr )

Constructor for an incoming channel. Requires the synchronization source id and address of the sender.

◆ ~RTCP_Channel_In()

RTCP_Channel_In::~RTCP_Channel_In ( )

Destructor.

◆ RTCP_Channel_In() [2/3]

RTCP_Channel_In::RTCP_Channel_In ( )
private

Don't want default constructor.

◆ RTCP_Channel_In() [3/3]

RTCP_Channel_In::RTCP_Channel_In ( const RTCP_Channel_In & ch)
private

Don't want copy constructor.

Member Function Documentation

◆ active()

int RTCP_Channel_In::active ( )
inline

Returns 1 if this is an active source, 0 if not.

◆ dlsr()

ACE_UINT32 RTCP_Channel_In::dlsr ( )

Returns the delay since last sender report.

◆ getRRBlock()

RR_Block * RTCP_Channel_In::getRRBlock ( )

Takes statistics of incoming RTP traffic and creates a receiver report block.

◆ init_seq()

void RTCP_Channel_In::init_seq ( ACE_UINT16 seq)
private

This is called when the first RTP packet is received.

◆ lsr()

ACE_UINT32 RTCP_Channel_In::lsr ( )

Returns the last sender report timestamp.

◆ recv_rtp_packet()

void RTCP_Channel_In::recv_rtp_packet ( ACE_Message_Block * mb,
const ACE_Addr * peer_addr )

This operation takes the incoming ACE_Message_Block, converts it to an RTP_Packet and calls updateStatistics. It also uses compares the peer_addr to the stored peer_address_ to check for loops.

◆ sender()

int RTCP_Channel_In::sender ( )
inline

Returns 1 if data has been sent since the last report, 0 if not.

◆ update_seq()

int RTCP_Channel_In::update_seq ( ACE_UINT16 seq)
private

This is called when each RTP packet is received. It is used to declare a source as valid.

◆ updateStatistics() [1/3]

int RTCP_Channel_In::updateStatistics ( RTCP_RR_Packet * rr)

Updates channel information with incoming receiver report.

◆ updateStatistics() [2/3]

int RTCP_Channel_In::updateStatistics ( RTCP_SR_Packet * sr)

Updates channel information with incoming sender report.

◆ updateStatistics() [3/3]

void RTCP_Channel_In::updateStatistics ( RTP_Packet * pkt)
private

This operation is used update statistics for the incoming RTP packet.

Member Data Documentation

◆ active_

int RTCP_Channel_In::active_
private

Flag to indicate whether or not the source is active.

◆ bad_seq_

ACE_UINT32 RTCP_Channel_In::bad_seq_
private

last 'bad' sequence number + 1

◆ base_seq_

ACE_UINT32 RTCP_Channel_In::base_seq_
private

The first sequence number received.

◆ cname_

ACE_CString RTCP_Channel_In::cname_
private

The canonical name of the source this channel represents.

◆ cycles_

ACE_UINT32 RTCP_Channel_In::cycles_
private

The shifted count of sequence number cycles (ie when sequence number wraps)

◆ data_since_last_report_

char RTCP_Channel_In::data_since_last_report_
private

This flag indicates that data has been received since the last report was sent.

◆ expected_prior_

ACE_UINT32 RTCP_Channel_In::expected_prior_
private

The packet expected at last interval.

◆ first_data_packet_

char RTCP_Channel_In::first_data_packet_
private

Flag to indicate the first data packet received.

◆ init_local_time_

ACE_Time_Value RTCP_Channel_In::init_local_time_
private

The local time that the initial packet was received.

◆ init_time_stamp_

ACE_UINT32 RTCP_Channel_In::init_time_stamp_
private

The first timestamp received.

◆ jitter_

double RTCP_Channel_In::jitter_
private

The inter-arrival jitter measured in timestamp units.

◆ last_sr_time_

ACE_UINT32 RTCP_Channel_In::last_sr_time_
private

The last time a sender report was received in 1/65536 seconds. Used to calculate DLSR.

◆ max_seq_

ACE_UINT16 RTCP_Channel_In::max_seq_
private

The highest sequence number seen.

◆ no_data_counter_

int RTCP_Channel_In::no_data_counter_
private

This is a counter to indicate the number of reporting intervals that have passed since data has been received. After 32, declare the source inactive.

◆ ntp_ts_lsw_

ACE_UINT32 RTCP_Channel_In::ntp_ts_lsw_
private

The least significant word of the last sender report NTP timestamp.

◆ ntp_ts_msw_

ACE_UINT32 RTCP_Channel_In::ntp_ts_msw_
private

The most significant word of the last sender report NTP timestamp.

◆ payload_type_

int RTCP_Channel_In::payload_type_
private

The RTP payload type.

◆ peer_address_

ACE_Addr* RTCP_Channel_In::peer_address_
private

The address that the first RTP packet was received from.

◆ probation_

ACE_UINT32 RTCP_Channel_In::probation_
private

The number of in sequence packets until a source is declared valid.

◆ received_

ACE_UINT32 RTCP_Channel_In::received_
private

The number of packets received.

◆ received_prior_

ACE_UINT32 RTCP_Channel_In::received_prior_
private

The packet received at last interval.

◆ remote_ssrc_

ACE_UINT32 RTCP_Channel_In::remote_ssrc_
private

The synchronization source id of the source this channel represents.

◆ rtp_ts_

ACE_UINT32 RTCP_Channel_In::rtp_ts_
private

The last sender report RTP timestamp.

◆ transit_

ACE_UINT32 RTCP_Channel_In::transit_
private

The last transit time.


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