3.2.5 Message Processing Events and Sequencing Rules

This protocol processes RTCP-related packets as specified in [RFC3550] section 6.3, with the following additions.

For every RTCP packet, the participant time-out timer, as specified in section 3.1.2, corresponding to the packet's SSRC MUST be restarted.

The following rules apply to specific types of RTCP packets:

  • RTCP Probe Packet: Arrival time is recorded and the packet is discarded.

  • RTCP SR or RR Packet: The following rules apply:

    • If the packet contains an SR or RR with a report block for the current send SSRC, BandwidthEstSendingMode is "packet pair", FastRTCPPacketPairCount is zero (0), and RTCPSendingRate is "normal", then RTCPSendingRate is set to "packet pair fast", and the RTCP send timer MUST be set to 250 milliseconds.

    • If the received packet has a profile specific extension with a positive bandwidth report, RTCPSendingRate is "fast", and BandwidthEstSendingMode is "packet pair", then RTCPSendingRate is set to "normal".

    • If the received packet has a bandwidth estimation extension with 0xFFFFFFFA (-6), the sender SHOULD decide to switch to send packet train. Then BandwidthEstSendingMode is set to "packet train", FastRTCPPacketTrainCount is set to 0, and RTCPPacketTrainSendingRate is set to "packet train fast", and the RTCP send timer is set 1 second.

    • If there is a profile specific extension with a packet loss notification, and the RTP session is a video session, the receiver SHOULD use the sequence number field on this extension to choose a recovery procedure and instruct the video encoder accordingly. For example, the receiver could instruct the video encoder to immediately generate an SP-frame or I-frame.

    • If there is a record of a previous RTCP probe packet, ReceivingRTCPPacketPairs is set to "true" and an arrival time gap is computed as the difference between the arrival time of this packet and the probe packet.

    • The packet length of the RTCP compound packet includes all headers up to the network layer. For example, over UDP includes RTP, UDP, and IP headers.

    • These two values are used to compute the bandwidth perceived by these two packets while traversing the path from their source up to their destination, as the RTCP compound packet length divided by the arrival time gap. How specific implementations to estimate bandwidth from individual calculations is outside the scope of this specification.

  • RTCP RR Packet: The following rules apply:

    • If the RTCP RR packet contains a packet train packet extension, the arrival time is recorded. The packet train packet extension is parsed and used to validate the packet train. The following conditions are tested:

      • The packet train extension has the L bit set to 1

      • There is a previous RTCP probe packet

      • There is a packet pair packet received

      • All packet train packet extensions are received with "Packet Idx" in increasing sequential order and there is no gap between "Packet Idx"

      • The number of packet train packets is equal to the value specified in the packet count field

        If the preceding conditions are met, then sum up the packet length of the RTCP SR/RR containing the packet pair packet, all RTCP packet train packets, and headers up to the network layer for each packet. The sum is used to compute the bandwidth from their source to their destination, as the sum divided by the arrival time gap between the RTCP probe packet and the last RTCP packet train packet. The specific implementations to estimate bandwidth from individual calculations are outside the scope of this specification.

  • RTCP APP Packet: This packet is ignored.

  • RTCP BYE: The SSRC from which this packet was sent is designated as having sent an RTCP BYE, and its RTCP bye timer is started.

  • RTCP Packet Train Packet: Arrival time is recorded. Packet train packet extension SHOULD be parsed and used to validate the packet train.