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

📄 synstreamon.c

📁 linux环境下用纯c写的RTP协议的通用开发库
💻 C
字号:
/*------------------------------------------------------------------------- * synstreamon.c - synstreamon *------------------------------------------------------------------------- */#include <syn.h>#include <stdlib.h>#include <strings.h>#include <util.h>#include <sample.h>/*------------------------------------------------------------------------ * synstreamon - turn on a stream a synchronization layer. Clkrt is the  * stream's media clockrate in Hz. Parameters is a type-specific (e.g.,  * sample, frame, or packet) structure that contains type-specific  * parameters. *------------------------------------------------------------------------ */intsynstreamon(struct synsession *pssn, ssrc_t ssrc, int type, int clkrt, mediatime_t jitthresh, void *parameters){	struct synstream	*psstm;	unsigned int		leeway;	/*	 * Check that the stream still exists at the 	 * RTP layer. I.e., we did not miss a timedout	 * event.	 */	if (rtpctl(pssn->ssn_session, RTP_CTL_STREAM_NULL, NULL, 0, ssrc) == ERROR)	  return ERROR;	if ((psstm = malloc(sizeof(struct synstream))) == NULL)		return ERROR;	memset(psstm, 0, sizeof(struct synstream));	/*	 * Turn on the events needed for the stream at	 * the synchronization layer.	 */	eventqfilterssrc(&pssn->ssn_events, EVENT_RTP_HEAD, ssrc, TRUE);	eventqfilterssrc(&pssn->ssn_events, EVENT_RTCP_SDES_CNAME, ssrc, TRUE);	eventqfilterssrc(&pssn->ssn_events, EVENT_RTCP_BYE, ssrc, TRUE);	eventqfilterssrc(&pssn->ssn_events, EVENT_PARTICIPANT_TIMEOUT, ssrc, TRUE);	eventqfilterssrc(&pssn->ssn_events, EVENT_PARTICIPANT_ENCODING, ssrc, TRUE);	eventqfilterssrc(&pssn->ssn_events, EVENT_PARTICIPANT_SEQGAP, ssrc, TRUE);	eventqfilterssrc(&pssn->ssn_events, EVENT_RTCP_SR, ssrc, TRUE);  	pthread_mutex_init(&psstm->sstm_readmutex, NULL);	pthread_cond_init(&psstm->sstm_readcond, NULL);	psstm->sstm_readflags = SYN_READ_FLUSH | SYN_READ_BLOCK;	psstm->sstm_ssrc = ssrc;	psstm->sstm_clkrt = clkrt;	psstm->sstm_type = type;	psstm->sstm_jitthresh = jitthresh;	psstm->sstm_parameters = parameters;	if (htadd(pssn->ssn_ssrcs, ssrc, (void *) psstm) == ERROR) {		htdel(pssn->ssn_events.eq_ssrcs, psstm->sstm_ssrc);		free(psstm);		return ERROR;	}	leeway = SYN_DEFAULT_LEEWAY;	synctl(pssn, SYN_CTL_STREAM_SETLEEWAY, (char *) &leeway, ssrc);	synrebuffer(pssn, ssrc);	/*	 * Turn the stream on at the RTP layer.	 */	rtpstreamon(pssn->ssn_session, ssrc, clkrt);	return OK;}

⌨️ 快捷键说明

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