This page describes the sent reports used to know how the data packets are being sent to the host (SR) and the receive reports used to get the feedback from the receiving hosts (RR).
A sent/receive report along with the name of its user on the RTCP (control) port is multi-casted periodically. This is done to have information on who is joining or leaving at any moment and how well you receive the data in a session.
The RTCP sender and receiver reports describe one timing and sequence number space per SSRC and do not carry a payload type field.
A Sender Report has three sections:
Header
Sender information, which summarises the data transmissions from current sender.
Reception report block (zero or more), which gives the reception of RTP packets from a single synchronisation source.
RRtpSRPart
provides the information on the data
transmitted from the sender in the form of sender report (SR).
You can access the following information from an SR packet:
NTPTimeStamp
: Gets the absolute date and time when the
report was sent. This is represented in timestamp format of the Network Time
Protocol (NTP), which is in seconds relative to 0h UTC on 1 January 1900. This
is used in combination with timestamps returned in reception reports from other
receivers to measure round-trip propagation to those receivers.
RTPTimeStamp
: Gets the RTP time when this packet was sent.
RTP time is profile dependant.
ByteCount
: Gets the number of bytes sent.
PacketCount
: Gets the total number of RTP data packets
transmitted by the sender from the start of the transmission until the time
this SR packet was generated. You need to reset the count if the sender changes
its SSRC identifier.
Extension
: Retrieves an extension defined for SR packets
(also for RR packets) for any additional information to be reported about
sender or receiver.
Note:
RRtpSRPart
does not have a close
function as the resources accessed through this handle are owned by object of
RRtpReceiveStream
.
To know how the data packets are being sent to the host, feedback is
required from the receiving hosts. RRtcpRRItem
supports you in
getting this information in the form of receiving reports.
RRtcpRRPart
provides a list of the receipt reports (RR)
from the receiving hosts reporting on the send stream. You can also create an
RR object by calling RRtpSession::GetRRs()
.
To get a specific receive report of a host, call the index operator
RRtcpRRPart::operator[]
. This returns an object of
RRtcpRRItem
. You can get the total number of receive reports
received by calling RRtcpRRPart::Count
.
You can get the following information from a receiver report to assess the quality of the service:
SenderSSRC
: Gets the sender’s 32-bit numeric
synchronisation source identifier. The same is updated in the member table.
AboutSSRC
: Gets the SSRC related to the current packet.
PacketsLost
: Returns the total number of RTP packets lost
from source SSRC since the beginning of the reception.
FractionLost
: Returns the fraction of RTP data packets
from the source SSRC lost since the previous SR or RR packet was sent. This is
the integer part of the product of loss fraction and 256 (loss fraction x 256).
ExtendedHighestSequenceNumber
: Gets the extended highest
sequence number received in an RTP data packet from the source.
DelaySinceLastSR
: Gets the time elapsed from the receipt
of the last SR (Sender Report) and the time when current reception report
packet was sent. The delay time is expressed in 1/65536 seconds. If no SR
packet has been received yet from SSRC, the DLSR field is set to zero.
InterarrivalJitter
: Gets the variance of the RTP data
packet interarrival time, measured in timestamp units and expressed as an
unsigned integer. This gives the measure of network congestion.
LastTimeStamp
: Gets NTP timestamp of the most recent RTCP
sender report (SR) packet from source SSRC. If no SR has been received, the
field is set to zero.
All the above information about the data sent to the receiving hosts is used to modify the transmission and also to determine if the problem is local, regional or global.