#include <cc++/rtp.h>
Inheritance diagram for QueueRTCPManager::
Public Methods | |
virtual void | setControlBandwidth (float fraction) |
virtual void | setSendersControlFraction (float fraction) |
uint32 | RTCPSendCount () const |
void | setNAME (const char *const name) |
void | setEMAIL (const char *const email) |
void | setPHONE (const char *const phone) |
void | setLOC (const char *const loc) |
void | setTOOL (const char *const tool) |
void | setNOTE (const char *const note) |
void | setPRIV (const char *const priv) |
void | setH323_CADDR (const char *const h323ca) |
Protected Methods | |
QueueRTCPManager (int pri) | |
virtual | ~QueueRTCPManager () |
void | endQueueRTCPManager () |
void | RTCPService (microtimeout_t &wait) |
void | Bye (const char *const reason=NULL) |
void | gotHello (const char *sdes) |
void | gotGoodbye (void) |
void | handleSSRCCollision () |
virtual timeval | computeRTCPInterval () |
Private Methods | |
QueueRTCPManager (const QueueRTCPManager &o) | |
QueueRTCPManager & | operator= (const QueueRTCPManager &o) |
void | setSDESItem (sdes_item_type_t type, const char *const value) |
void | findCNAME () |
void | updateAvgRTCPSize (uint16 len) |
void | ReverseReconsideration () |
bool | TimerReconsideration () |
void | TimeOutSSRCs () |
bool | getSDES_APP (RTCPPacket &pkt, uint16 &pointer, uint16 len) |
bool | getBYE (RTCPPacket &pkt, uint16 &pointer, uint16 len) |
void | getOnlyBye () |
virtual uint16 | networkHeaderSize () |
virtual uint16 | transportHeaderSize () |
size_t | sendControl (void) |
void | recvControl (void) |
bool | packReportBlock (uint16 &len) |
bool | tryAnotherRR (RTCPPacket *&pkt, uint16 &len, uint16 &blocks) |
void | packSDES (uint16 &len) |
size_t | sendBYE (const char *const reason) |
virtual size_t | writeControl (const unsigned char *const buffer, size_t len)=0 |
virtual size_t | readControl (unsigned char *buffer, size_t len)=0 |
virtual bool | isPendingControl (microtimeout_t timeout)=0 |
bool | RTCPHeaderCheck (size_t len) |
Private Attributes | |
uint16 | pathMTU |
unsigned char * | rtcpsend_buffer |
unsigned char * | rtcprecv_buffer |
bool | rtcp_active |
float | controlbw |
float | sendcontrolbw |
float | recvcontrolbw |
uint32 | ctrlsendcount |
uint16 | lower_headers_size |
timeval | rtcp_tp |
timeval | rtcp_tc |
timeval | rtcp_tn |
uint32 | rtcp_pmembers |
uint32 | rtcp_bw |
bool | rtcp_we_sent |
uint16 | rtcp_avg_size |
bool | rtcp_initial |
timeval | rtcp_last_check |
timeval | rtcp_check_interval |
timeval | rtcp_next_check |
uint32 | last_sendcount |
uint32 | prev_nvalid_sources |
timeval | rtcp_calculated_interval |
size_t | CNAME_len |
uint32 | nprevalid_srcs |
uint32 | nvalid_srcs |
uint32 | npredeleted_srcs |
uint32 | ndeleted_srcs |
microtimeout_t | rtcp_min_interval |
Static Private Attributes | |
const uint32 | NTP_EPOCH_OFFSET = static_cast<uint32>(2208992400u) |
const uint16 | RTCP_VALID_MASK = (0xc000 | 0x2000 | 0xfe) |
const uint16 | RTCP_VALID_VALUE |
const uint16 | TIMEOUT_MULTIPLIER = 5 |
const double | RECONSIDERATION_COMPENSATION = 2.718281828 - 1.5 |
Extends the RTP queue with the management of RTCP functions:
Definition at line 1607 of file rtp.h.
|
|
|
|
|
|
|
Try to post a BYE message. It will send a BYE packet as long as at least one RTP or RTCP packet has been sent before. If the number of members in the session is more than 50, the algorithm described in section 6.3.7 of RFC ???? is applied in order to avoid a flood of BYE messages. Reimplemented from RTPQueue. |
|
|
|
Get the total number of RTCP packets sent until now
|
|
A scheduler of RTCP packets.
Reimplemented from RTPQueue. |
|
Apply reverse reconsideration adjustment to timing parameters when receiving BYE packets and not waiting to send a BYE. |
|
Purge sources that do not seem active any more.
|
|
|
|
Computes the interval for sending RTCP compound packets, based on the average size of RTCP packets sent and received, and the current estimated number of participants in the session.
|
|
|
|
Find out the local CNAME as user@host and store it as part of the internal state of this class. |
|
Process a BYE packet just received and identified.
|
|
|
|
|
|
A plugin point for goodbye message. |
|
A plugin point for hello message. |
|
|
|
|
|
For certain control calculations in RTCP, the size of the underlying network and transport protocols is needed. This method provides the size of the network level header for the default case of IP (20 octets). In case other protocol with different header size is used, this method should be redefined in a new specialized class.
|
|
|
|
|
|
|
|
|
|
For picking up incoming RTCP packets if they are waiting. A timeout for the maximum interval since the last RTCP packet had been received is also returned. This is checked once a second.
|
|
|
|
Posting of RTCP messages.
|
|
Specify the bandwith available for control (RTCP) packets.
|
|
|
|
|
|
|
|
Minimal control information about the local participant |
|
|
|
|
|
|
|
|
|
Specify the fraction of the total control bandwith to be dedicated to senders reports.
1 - fraction will be dedicated to receivers reports.
|
|
|
|
For certain control calculations in RTCP, the size of the underlying network and transport protocols is needed. This method provides the size of the transport level header for the default case of UDP (8 octets). In case other protocol with different header size is used, this method should be redefined in a new specialized class. return size of the headers of the transport level. UDP (8) by default |
|
Try to pack a new RR in the RTCP compound packet currently being built. After having packed one or more SR or RR to send in an RTCP compound packet, checks if there are more reports to send and there is room enough in the current packet to include them. If so, the header for a new RR is appended together with the first report block, and true is returned.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Initial value: ((RTP_VERSION << 14) | RTCP_TYPE_SR) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|