mblk_t* rtp_session_create_rtcp_sdes_packet(RtpSession *session, bool_t full) { mblk_t *mp = allocb(sizeof(rtcp_common_header_t), 0); rtcp_common_header_t *rtcp; mblk_t *tmp; mblk_t *m = mp; mblk_t *sdes; queue_t *q; int rc = 0; sdes = (full == TRUE) ? session->full_sdes : session->minimal_sdes; rtcp = (rtcp_common_header_t *)mp->b_wptr; mp->b_wptr += sizeof(rtcp_common_header_t); /* Concatenate all sdes chunks. */ sdes_chunk_set_ssrc(sdes, session->snd.ssrc); m = concatb(m, dupmsg(sdes)); rc++; if (full == TRUE) { q = &session->contributing_sources; for (tmp = qbegin(q); !qend(q, tmp); tmp = qnext(q, mp)) { m = concatb(m, dupmsg(tmp)); rc++; } } rtcp_common_header_init(rtcp, session, RTCP_SDES, rc, msgdsize(mp)); return mp; }
mblk_t* rtp_session_create_rtcp_sdes_packet(RtpSession *session) { mblk_t *mp=allocb(sizeof(rtcp_common_header_t),0); rtcp_common_header_t *rtcp; mblk_t *tmp,*m=mp; queue_t *q; int rc=0; rtcp = (rtcp_common_header_t*)mp->b_wptr; mp->b_wptr+=sizeof(rtcp_common_header_t); /* concatenate all sdes chunks */ sdes_chunk_set_ssrc(session->sd,session->snd.ssrc); m=concatb(m,dupmsg(session->sd)); rc++; q=&session->contributing_sources; for (tmp=qbegin(q); !qend(q,tmp); tmp=qnext(q,mp)){ m=concatb(m,dupmsg(tmp)); rc++; } rtcp_common_header_init(rtcp,session,RTCP_SDES,rc,msgdsize(mp)); return mp; }