⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtprecv.c

📁 comer s TCPIP-vol3源代码...当然是经典咯
💻 C
字号:
/* rtprecv.c - rtprecv */#include <rtcp.h>/*------------------------------------------------------------------------ * rtprecv - receive and process an RTP packet *------------------------------------------------------------------------ */voidrtprecv(){	struct rtpln	*pln; 	struct rtp	*prtp;	pthread_t	thrid;	while(TRUE) {		pln = (struct rtpln *) bpget();		prtp = &pln->rln_rtp;		pln->rln_len = recv(sn.sn_rtpfd, prtp, RTP_BPBUFSZ -		        sizeof(struct rtpln), 0);		if (pln->rln_len < RTP_MINHDRLEN || prtp->rtp_ver != 		        RTP_CURRVERS) {			bpfree(pln);			continue;		}		prtp->rtp_seq = ntohs(prtp->rtp_seq);		prtp->rtp_time = ntohl(prtp->rtp_time);		prtp->rtp_ssrc = ntohl(prtp->rtp_ssrc);		if(sn.sn_ssrc == prtp->rtp_ssrc) {			rtcpsendbye();			sn.sn_ssrc = random();			bpfree(pln);			continue;		}		if (!sn.sn_detected && prtp->rtp_payload == PCMMU_ID) {			stm.stm_ssrc = prtp->rtp_ssrc;			sn.sn_detected = TRUE;			(void) pthread_create(&thrid, NULL,			        (void *(*)(void *)) rtcpcycle, NULL);		}		if (prtp->rtp_ssrc != stm.stm_ssrc || rtpupdate(prtp) == 		        ERROR) {			bpfree(pln);			continue;		}		pln->rln_seq = ((stm.stm_roll) << 16) | prtp->rtp_seq;		if (rtpqinsert(pln) || stm.stm_buffering)			rtpnewdata();	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -