www.pudn.com > streamrtp.rar > rtcpapp.c
/*------------------------------------------------------------------------- * rtcpapp.c - rtcpapp *------------------------------------------------------------------------- */ #include#include #include /*------------------------------------------------------------------------ * rtcpapp - process an incoming RTCP application specific packet *------------------------------------------------------------------------ */ int rtcpapp(struct session *psn, struct rtcp *prtcp) { struct app *papp; struct stream *pstm; if (prtcp->rtcp_type != RTCP_APP) return ERROR; papp = (struct app *) prtcp->rtcp_data; papp->app_ssrc = ntohl(papp->app_ssrc); pstm = rtpgetstream(psn, papp->app_ssrc); if (pstm == NULL) if ((pstm = rtpnewstream(psn, papp->app_ssrc)) == NULL) return ERROR; if (!RTP_INACTIVE(pstm->stm_inactive)) pstm->stm_inactive = 0; else { rtpreleasestream(psn, pstm); return OK; } rtpreleasestream(psn, pstm); /* * Post an event containing the * application-specific data. */ rtppostevent(psn, EVENT_RTCP_APP, papp->app_ssrc, (char *) prtcp, RTCP_LENGTH_BYTE(prtcp)); return OK; }