3.1.5 Message Processing Events and Sequencing Rules

This protocol processes RTP-related packets as specified in [RFC3550] section 6 and section A.1, with the following additions:

  • If RTP and RTCP are being multiplexed, as in the case of TCP, the payload type field MUST be used to differentiate between RTP and RTCP.

  • For every received RTP packet, the participant time-out timer of the participant respective to its SSRC MUST be restarted.

  • If the throttling mechanism is used, the following actions SHOULD be executed on receipt of every RTP packet:

This code follows the product behavior in footnote <38>.

IF SSRC != LastGoodSSRC THEN
     IF SSRC = ResyncSSRC THEN
          SET LastGoodSSRC = SSRC
     ELSE
          IF ThrottlingMode is on THEN
               IF SSRC !=LastBadSSRC THEN
                    SET LastBadSSRC = SSRC
                    RESTART throttling mode timer
               ENDIF
               DROP packet
          ELSE
               SET ResyncSSRC = SSRC
               START throttling mode timer
          ENDIF
     ENDIF
ENDIF
GET participant's information from SSRC
IF SeqNum made a large jump from NextGoodSeqNum (according to [RFC3550] section A.1) THEN
     IF SeqNum = ResyncSeqNum
          SET NextGoodSeqNum = SeqNum's successor
     ELSE
          IF ThrottlingMode is on THEN
               IF SeqNum != NextBadSeqNum THEN
                    SET NextBadSeqNum = SeqNum's successor
                    RESTART throttling mode timer
               ELSE
                    SET NextBadSeqNum = SeqNum's successor
               ENDIF
               DROP packet
          ELSE
               SET ResyncSeqNum = SeqNum's successor
               START throttling mode timer
          ENDIF
     ENDIF
ENDIF
  • If the dominant speaker notification extension is used, the following actions MUST be executed on receipt of every RTP packet from an audio mixer:

    IF CSRC list is empty
         SET IsDominantSpeakerValid to false
         NOTIFY upper layer that stream has no dominant speaker
    ELSE
         SET IsDominantSpeakerValid to true
         START dominant speaker expiration timer
         IF first CSRC != DominantSpeaker
              SET DominantSpeaker = first CSRC
              NOTIFY upper layer that dominant speaker has changed
         ENDIF
    ENDIF
    
  • If the inter-arrival jitter estimation is computed, the following action SHOULD be executed on receipt of every RTP packet from the network:<39>

    IF THE PACKET IS NOT DTMF
         CALCULATE JITTER per algorithm in [RFC3550] Section 6.4.1
    ELSE
         IGNORE THIS PACKET FOR JITTER CALCULATION 
    ENDIF