📄 rtcpsr.c
字号:
/*------------------------------------------------------------------------- * rtcpsr.c - rtcpsr *------------------------------------------------------------------------- */#include <hash.h>#include <rtcp.h>#include <rtp.h>/*------------------------------------------------------------------------ * rtcpsr - process an incoming RTCP sender report *------------------------------------------------------------------------ */intrtcpsr(struct session *psn, struct rtcp *prtcp){ struct sr *psr; struct stream *pstm; ssrc_t ssrc; if (prtcp->rtcp_type != RTCP_SR) return ERROR; psr = (struct sr *) prtcp->rtcp_data; ssrc = ntohl(psr->sr_ssrc); pstm = rtpgetstream(psn, ssrc); if (pstm == NULL) if ((pstm = rtpnewstream(psn, ssrc)) == NULL) return ERROR; if (!RTP_INACTIVE(pstm->stm_inactive)) pstm->stm_inactive = 0; else { rtpreleasestream(psn, pstm); return OK; } /* * Record data needed to generate receiver report. */ pthread_mutex_lock(&pstm->stm_mutex); clock_gettime(CLOCK_REALTIME, &pstm->stm_lastsr); pstm->stm_lastsrts = ntohl(psr->sr_rtpts); pstm->stm_lastntp[RTP_NTPFRAC] = ntohl(psr->sr_fracts); pstm->stm_lastntp[RTP_NTPINT] = ntohl(psr->sr_intts); pthread_mutex_unlock(&pstm->stm_mutex); /* * Post an event with the sender report as data. */ rtppostevent(psn, EVENT_RTCP_SR, pstm->stm_ssrc, (char *) prtcp, RTCP_LENGTH_BYTE(prtcp)); rtpreleasestream(psn, pstm); return OK;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -