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

📄 event.h

📁 linux环境下用纯c写的RTP协议的通用开发库
💻 H
字号:
/*------------------------------------------------------------------------- * event.h - BIT_SET, SET_BIT, UNSET_BIT *------------------------------------------------------------------------- */#ifndef EVENT_H#define EVENT_H#include <rtplibcommon.h>#include <time.h>#include <semaphore.h>#include <pthread.h>#include <bufpool.h>/* event types; comment describes data included in event */#define EVENT_RTP_HEAD   	0 /* none */#define EVENT_RTP		1 /* none */#define EVENT_RTCP_SR		2 /* SR packet (inc RTCP hdr) */#define EVENT_RTCP_RR		3 /* RR packet (inc RTCP hdr) */#define EVENT_RTCP_BYE		4 /* reason string */#define EVENT_RTCP_APP		5 /* APP Packet (inc RTCP hdr) */#define EVENT_RTCP_SDES_CHUNK	6 /* chunk (inc SSRC) *//* SDES item events are sent only when the item value changes */#define EVENT_RTCP_SDES_CNAME	7 /* none */#define EVENT_RTCP_SDES_NAME	8 /* none */#define EVENT_RTCP_SDES_EMAIL	9 /* none */#define EVENT_RTCP_SDES_PHONE	10 /* none */#define EVENT_RTCP_SDES_LOC	11 /* none */#define EVENT_RTCP_SDES_TOOL	12 /* none */#define EVENT_RTCP_SDES_NOTE	13 /* none */#define EVENT_RTCP_SDES_PRIV	14 /* none */#define EVENT_PARTICIPANT_TIMEOUT		15 /* none */#define EVENT_PARTICIPANT_ENCODING       	16 /* none */#define EVENT_PARTICIPANT_NEW			17 /* none */#define EVENT_PARTICIPANT_SEQGAP		18 /* none */#define EVENT_PARTICIPANT_SYNC                  19 /* sstm_clky adjustment */#define EVENT_COLLISION				20 /* none */#define EVENT_NOBUFS				21 /* none */#define EVENT_TYPES				22#define EVENT_VECTOR_SZ ((EVENT_TYPES / 8) + (EVENT_TYPES % 8 != 0 ? 1 : 0))#define BIT_SET(pchar, bit) ((pchar[bit / 8] & (1 << (7 - (bit % 8)))) != 0)#define SET_BIT(pchar, bit) (pchar[bit / 8] |= 1 << (7 - (bit % 8)))#define UNSET_BIT(pchar, bit) (pchar[bit / 8] &= ~(1 << (7 - (bit % 8))))/* structure for an event */struct event {  int             ev_type;	/* type of event		*/  ssrc_t          ev_ssrc;	/* SSRC to which event pertains	*/  struct timespec ev_time;	/* localtime event generated	*/  struct event    *ev_next;	/* pointer to next event in q	*/  int		  ev_datalen;	/* length of data		*/  char            ev_data[1];	/* beginning of data		*/}; #define EVENT_QUEUE_HT_SZ	11#define EVENT_DEFAULTBPBUFSZ	1024#define EVENT_DEFAULTBPBUFCOUNT	32/* structure for an event queue */struct eventqueue {  char          eq_wantall[EVENT_VECTOR_SZ];	/* bitvect for events wanted from any SSRC */  struct event	*eq_eventtail;		/* newest event in queue	    */  struct event	*eq_eventhead;		/* oldest event in queue	    */  pthread_mutex_t eq_eventqueuemutex;	/* mutex to lock queue		    */  sem_t		eq_eventsem;		/* semaphore to impl blocking	    */  int		eq_eventblock;		/* true if nextevent should block   */  struct ht     *eq_ssrcs;		/* hashtable ssrc -> bitvector	    */  struct bufpool eq_bpool;}; /* Event API calls */int eventqnext(struct eventqueue *, struct event *, int);int eventqpost(struct eventqueue *, int, ssrc_t, void *, int);int eventqinit(struct eventqueue *, int, bool, int, int);int eventqfilterssrc(struct eventqueue *, int, ssrc_t, bool);int eventqfilterall(struct eventqueue *, int, bool);int eventqdestroy(struct eventqueue *);int eventqclear(struct eventqueue *);/* Internal calls */bool eventqwant(struct eventqueue *, int, ssrc_t);int eventqenqueue(struct eventqueue *, struct event *);struct event *eventqdequeue(struct eventqueue *);#endif

⌨️ 快捷键说明

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