A.5 Parsing RTCP SDES Packets (original) (raw)

Connected: An Internet Encyclopedia
A.5 Parsing RTCP SDES Packets


Up: Connected: An Internet Encyclopedia
Up: Requests For Comments
Up: RFC 1889
Up: A. Algorithms

Prev: A.4 Generating SDES RTCP Packets
Next: A.6 Generating a Random 32-bit Identifier


A.5 Parsing RTCP SDES Packets

A.5 Parsing RTCP SDES Packets

This function parses an SDES packet, calling functions find_member() to find a pointer to the information for a session member given the SSRC identifier and member_sdes() to store the new SDES information for that member. This function expects a pointer to the header of the RTCP packet.

void rtp_read_sdes(rtcp_t *r) { int count = r->common.count; rtcp_sdes_t *sd = &r->r.sdes; rtcp_sdes_item_t *rsp, *rspn; rtcp_sdes_item_t *end = (rtcp_sdes_item_t *) ((u_int32 *)r + r->common.length + 1); source *s;

   while (--count >= 0) {
       rsp = &sd->item[0];
       if (rsp >= end) break;
       s = find_member(sd->src);

       for (; rsp->type; rsp = rspn ) {
           rspn = (rtcp_sdes_item_t *)((char*)rsp+rsp->length+2);
           if (rspn >= end) {
               rsp = rspn;
               break;
           }
           member_sdes(s, rsp->type, rsp->data, rsp->length);
       }
       sd = (rtcp_sdes_t *)
            ((u_int32 *)sd + (((char *)rsp - (char *)sd) >> 2)+1);
   }
   if (count >= 0) {
       /* invalid packet format */
   }

}


Next: A.6 Generating a Random 32-bit Identifier


Connected: An Internet Encyclopedia
A.5 Parsing RTCP SDES Packets