rtpseq.c

来自「&#61599 Douglas Comer」· C语言 代码 · 共 62 行

C
62
字号
/* rtpseq.c - rtpinitseq, rtpupdateseq */#include <rtp.h>#define RTP_MAXDROPOUT		3000#define RTP_MAXMISORDER		100#define RTP_SEQMOD		(1 << 16)/*------------------------------------------------------------------------ * rtpinitseq - init vars related to seq numbers (adapted from RFC 1889) *------------------------------------------------------------------------ */void rtpinitseq(seq_t seq){	stm.stm_firstseq = seq;	stm.stm_hiseq = seq;	stm.stm_roll = 0;	stm.stm_packets = 0;	stm.stm_recprior = 0;	stm.stm_expprior = 0;  }/*------------------------------------------------------------------------ * rtpupdateseq - check sequence number of packet, update counters *                (adapted from RFC 1889) *------------------------------------------------------------------------ */intrtpupdateseq(seq_t seq){	seq_t udelta = seq - stm.stm_hiseq;	if (stm.stm_probation) {		if (seq == stm.stm_hiseq + 1) {			stm.stm_probation--;			stm.stm_hiseq = seq;			if (stm.stm_probation == 0) {				rtpinitseq(seq);				return OK;			}		} else {			stm.stm_probation = RTP_MINSEQUENTIAL - 1;			stm.stm_hiseq = seq;		}		return ERROR;	} 	else if (udelta < RTP_MAXDROPOUT) {		if (seq < stm.stm_hiseq)			stm.stm_roll++;		stm.stm_hiseq = seq;	}	else if (udelta <= RTP_SEQMOD - RTP_MAXMISORDER) {		if (seq == stm.stm_badseq)			rtpinitseq(seq);	} else {		stm.stm_badseq = (seq + 1) & (RTP_SEQMOD - 1);		return ERROR;	}	return OK;}

⌨️ 快捷键说明

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