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

📄 rvsdpmsg.c

📁 h.248协议源码
💻 C
📖 第 1 页 / 共 2 页
字号:
#ifdef RV_SDPTIME_FULL
	zone = rvListAllocBack(RvSdpTimeZoneAdjust)(&x->zone_adjustment_list);
	rvSdpTimeZoneAdjustConstructN(zone,time,adjust_time,units) ;
#endif
	return zone;
}

void rvSdpMsgClearZoneAdjustment(RvSdpMsg* descr) {
#ifdef RV_SDPTIME_FULL
	rvListClear(RvSdpTimeZoneAdjust)(&descr->zone_adjustment_list);
#endif
}

size_t rvSdpMsgGetNumOfZoneAdjustments(RvSdpMsg* descr) {
	return rvListSize(&descr->zone_adjustment_list);
}

#ifdef RV_SDPTIME_FULL
RvSdpTimeZoneAdjust* rvSdpMsgGetZoneAdjustment(RvSdpMsg* descr,size_t i) {
	return rvListAt(RvSdpTimeZoneAdjust)(&descr->zone_adjustment_list,i);
}
#endif

#ifdef RV_SDPTIME_FULL
void rvSdpMsgRemoveTimeZoneAdjust(RvSdpMsg* descr,size_t index) {
	size_t j;
	RvListIter(RvSdpTimeZoneAdjust) iter = rvListBegin(&descr->zone_adjustment_list);
	if (index < rvListSize(&descr->zone_adjustment_list)) {
		for (j = 0; j < index; ++j)
			iter = rvListIterNext(iter);
		rvListErase(RvSdpTimeZoneAdjust)(&descr->zone_adjustment_list, iter);
	}
}
#endif

/*------ Attribute Field ----------------------------------*/
size_t rvSdpMsgGetNumOfAttr(const RvSdpMsg* descr) {
	return rvListSize(&descr->fields.attr_list);
}

RvSdpAttribute* rvSdpMsgGetAttribute(const RvSdpMsg* descr,size_t i) {
	return rvListAt(RvSdpAttribute)(&descr->fields.attr_list,i);
}

RvSdpAttribute* rvSdpMsgAddAttr(RvSdpMsg* x, const char* name, const char* value) {
	return rvSdpCommonFieldsAddAttrN(&x->fields,name,strlen(name),value,strlen(value),x->alloc);
}

void rvSdpMsgRemoveAttribute(RvSdpMsg* x, size_t index) {
	size_t j;
	RvListIter(RvSdpAttribute) iter = rvListBegin(&x->fields.attr_list);
	if (index < rvListSize(&x->fields.attr_list)) {
		for (j = 0; j < index; ++j)
			iter = rvListIterNext(iter);
		rvListErase(RvSdpAttribute)(&x->fields.attr_list, iter);
	}
}

void rvSdpMsgClearAttr(RvSdpMsg* x) {
	rvListClear(RvSdpAttribute)(&x->fields.attr_list);
}

/*------ RtpMap Field ----------------------------------*/
size_t rvSdpMsgGetNumOfRtpMap(const RvSdpMsg* x) {
	return rvListSize(&x->fields.rtp_map_list);
}

RvSdpRtpMap* rvSdpMsgGetRtpMap(const RvSdpMsg* x,size_t i) {
	return rvListAt(RvSdpRtpMap)(&x->fields.rtp_map_list,i);
}

RvSdpRtpMap * rvSdpMsgAddRtpMap(RvSdpMsg* x,int payload,const char * encoding_name,int rate) {
	return  rvSdpCommonFieldsAddRtpMapN(&x->fields,payload,
										encoding_name,strlen(encoding_name),
										rate,x->alloc);
}

void rvSdpMsgRemoveRtpMap(RvSdpMsg* x, size_t index) {
	size_t j;
	RvListIter(RvSdpRtpMap) iter = rvListBegin(&x->fields.rtp_map_list);
	if (index < rvListSize(&x->fields.rtp_map_list)) {
		for (j = 0; j < index ;j++)
			iter = rvListIterNext(iter);
		rvListErase(RvSdpRtpMap)(&x->fields.rtp_map_list, iter);
	}
}

void rvSdpMsgClearRtpMap(RvSdpMsg* x) {
	rvListClear(RvSdpRtpMap)(&x->fields.rtp_map_list);
}


/*------ Media Description Field ----------------------*/
size_t rvSdpMsgGetNumOfMediaDescr(const RvSdpMsg * sdp) {
	return rvListSize(&sdp->media_descriptors);
}

RvSdpMediaDescr* rvSdpMsgGetMediaDescr(const RvSdpMsg * sdp, size_t index) {
	return rvListAt(RvSdpMediaDescr)(&sdp->media_descriptors,index);
}

RvSdpMediaDescr* rvSdpMsgAddMediaDescr(RvSdpMsg * sdp,RvSdpMediaType media_type,int port,RvSdpProtocol protocol) {
	RvSdpMediaDescr * media = rvListAllocBack(RvSdpMediaDescr)(&sdp->media_descriptors);
	rvSdpMediaDescrConstructA(media,media_type,port,protocol,sdp->alloc);
	media->sdp = sdp;
	return media;
}

RvSdpMediaDescr* rvSdpMsgAddMediaDescrAtm(RvSdpMsg * sdp,RvSdpMediaType media_type,RvSdpProtocol protocol) {
	RvSdpMediaDescr * media = rvListAllocBack(RvSdpMediaDescr)(&sdp->media_descriptors);
	rvSdpMediaDescrConstructA(media,media_type,RV_SDPPORT_ATM,protocol,sdp->alloc);
	media->sdp = sdp;
	return media;
}

void rvSdpMsgInsertMediaDescr(RvSdpMsg * sdp,RvSdpMediaDescr* descr) {
	RvSdpMediaDescr * media = rvListAllocBack(RvSdpMediaDescr)(&sdp->media_descriptors);
	rvSdpMediaDescrConstructCopyA(media,descr,sdp->alloc);
	media->sdp = sdp;
	return ;
}

void rvSdpMsgClearMediaDescr(RvSdpMsg * sdp) {
	rvListClear(RvSdpMediaDescr)(&sdp->media_descriptors);
}

void rvSdpMsgRemoveMediaDescr(RvSdpMsg * sdp,size_t index) {
	size_t j;
	RvListIter(RvSdpMediaDescr) iter = rvListBegin(&sdp->media_descriptors);
	if (index < rvListSize(&sdp->media_descriptors)) {
		for (j = 0; j < index; ++j)
			iter = rvListIterNext(iter);
		rvListErase(RvSdpMediaDescr)(&sdp->media_descriptors, iter);
	}
}


#ifdef RV_SDPDEPRECATED_MGCP1_0
static char null_str[] = "";

void	rvSdpMsgSetOriginAddress(RvSdpMsg* x,const char * origin_addr) {
	rvSdpMsgSetOrigin(x,"_","0","0",RV_SDPNETTYPE_IN,RV_SDPADDRTYPE_IP4,origin_addr);
}
RvSdpNetType rvSdpMsgGetNetworkType(const RvSdpMsg * sdp) {
	RvSdpConnection* conn = rvSdpMsgGetConnection(sdp);
	if(conn==NULL)
		return (RvSdpNetType)RV_SDPFIELD_NOTSET;
	return rvSdpConnectionGetNetType(conn);
}
RvSdpAddrType rvSdpMsgGetAddrType(const RvSdpMsg* x) {
	RvSdpConnection* conn = rvSdpMsgGetConnection(x);
	if(conn==NULL)
		return (RvSdpAddrType)RV_SDPFIELD_NOTSET;
	return rvSdpConnectionGetAddrType(conn);
}
const char*	rvSdpMsgGetAddress(const RvSdpMsg* x) {
	RvSdpConnection* conn = rvSdpMsgGetConnection(x);
	if(conn==NULL)
		return null_str;
	return rvSdpConnectionGetAddress(conn);
}
RvSdpNetType rvSdpMediaDescrGetNetworkType(const RvSdpMediaDescr* descr) {
	RvSdpConnection* conn = rvSdpMediaDescrGetConnection(descr);
	if(conn==NULL) {
		if(descr->sdp!=NULL)
			return rvSdpMsgGetNetworkType(descr->sdp);
		else
			return (RvSdpNetType)RV_SDPFIELD_NOTSET;
	}
	return rvSdpConnectionGetNetType(conn);
}
RvSdpAddrType rvSdpMediaDescrGetAddrType(const RvSdpMediaDescr* descr){
	RvSdpConnection* conn = rvSdpMediaDescrGetConnection(descr);
	if(conn==NULL) {
		if(descr->sdp!=NULL)
			return rvSdpMsgGetAddrType(descr->sdp);
		else
			return (RvSdpAddrType)RV_SDPFIELD_NOTSET;
	}
	return rvSdpConnectionGetAddrType(conn);
}
const char*	rvSdpMediaDescrGetAddress(const RvSdpMediaDescr* descr) {
	RvSdpConnection* conn = rvSdpMediaDescrGetConnection(descr);
	if(conn==NULL) {
		if(descr->sdp!=NULL)
			return rvSdpMsgGetAddress(descr->sdp);
		else
			return null_str;
	}
	return rvSdpConnectionGetAddress(conn);
}
RvSdpEncrMethod	rvSdpMsgGetKeyType(const RvSdpMsg* x) {
	RvSdpKey* k = rvSdpMsgGetKey(x);
	if(k==NULL)
		return (RvSdpEncrMethod)RV_SDPFIELD_NOTSET;
	else
		return rvSdpKeyGetType(k);
}
const char * rvSdpMsgGetKeyData(const RvSdpMsg * sdp) {
	RvSdpKey* k = rvSdpMsgGetKey(sdp);
	if(k==NULL)
		return null_str;
	else
		return rvSdpKeyGetData(k);
}
RvSdpEncrMethod	rvSdpMediaDescrGetKeyType(const RvSdpMediaDescr* descr) {
	RvSdpKey* k = rvSdpMediaDescrGetKey(descr);
	if(k==NULL) {
		if(descr->sdp!=NULL)
			return rvSdpMsgGetKeyType(descr->sdp);
		else
			return (RvSdpEncrMethod)RV_SDPFIELD_NOTSET;
	}
	else
		return rvSdpKeyGetType(k);
}
const char * rvSdpMediaDescrGetKeyData(const RvSdpMediaDescr* descr) {
	RvSdpKey* k = rvSdpMediaDescrGetKey(descr);
	if(k==NULL) {
		if(descr->sdp!=NULL)
			return rvSdpMsgGetKeyData(descr->sdp);
		else
			return null_str;
	}
	else
		return rvSdpKeyGetData(k);
}

/*--------------------------------------------------*/
/* Data structure to support a list of Sdp messages */
/*--------------------------------------------------*/
static RvBool rvSdpMsgEqual(const RvSdpMsg* a, const RvSdpMsg* b) {
	return (memcmp((void*)a,(void*)b,sizeof(RvSdpMsg))==0);
}

#define RvSdpMsgEqual	      rvSdpMsgEqual
#define RvSdpMsgConstructCopy rvSdpMsgConstructCopyA
#define RvSdpMsgDestruct	  rvSdpMsgDestruct

rvDefineList(RvSdpMsg)
rvDefineListAt(RvSdpMsg)
rvDefineListAllocBack(RvSdpMsg)

/* Get a pointer to a newly added and constructed 
   element */
RvSdpMsgList* rvSdpMsgListConstructA(RvSdpMsgList* msgList, RvAlloc* a) {
	return rvListConstruct(RvSdpMsg)(msgList, a);
}
RvSdpMsgList* rvSdpMsgListConstructCopy(RvSdpMsgList* d, const RvSdpMsgList* s, RvAlloc* a) {
	return rvListConstructCopy(RvSdpMsg)(d, s, a);
}
void rvSdpMsgListDestruct(RvSdpMsgList* msgList) {
	rvListDestruct(RvSdpMsg)(msgList);
}
RvSdpMsgList* rvSdpMsgListCopy(RvSdpMsgList* d, const RvSdpMsgList* s) {
	return rvListCopy(RvSdpMsg)(d, s);
}
RvBool rvSdpMsgListEqual(RvSdpMsgList* a, RvSdpMsgList* b) {
	return rvListEqual(RvSdpMsg)(a, b);
}
size_t rvSdpMsgListGetSize(const RvSdpMsgList* msgList) {
	return rvListSize(msgList);
}

RvSdpMsg * rvSdpMsgListAddMsg(RvSdpMsgList * msgList) {
	RvSdpMsg* msg;
	msg = rvListAllocBack(RvSdpMsg)(msgList);
	return rvSdpMsgConstructA(msg,rvListGetAllocator(msgList));
}
void rvSdpMsgListInsertMsg(RvSdpMsgList * msgList,const RvSdpMsg * msg) {
	rvListPushBack(RvSdpMsg)(msgList,msg);
}

void rvSdpMsgListRemoveElement(RvSdpMsgList* msgList, size_t index) {
	size_t j;
	RvListIter(RvSdpMsg) iter = rvListBegin(msgList);
	if (index < rvListSize(msgList)) {
		for (j = 0; j < index; ++j)
			iter = rvListIterNext(iter);
		rvListErase(RvSdpMsg)(msgList,iter);
	}
}

void rvSdpMsgListClear(RvSdpMsgList * msgList) {
	rvListClear(RvSdpMsg)(msgList);
}

RvSdpMsg * rvSdpMsgListGetElement(RvSdpMsgList * msgList, size_t index) {
	size_t j;
	RvListIter(RvSdpMsg) iter = rvListBegin(msgList);
	for (j = 0; j < index; ++j)
		iter = rvListIterNext(iter);
	return rvListIterData(iter);
}




#endif /* RV_SDPDEPRECATED_MGCP1_0 */

⌨️ 快捷键说明

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