亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sdp.cpp

?? 本源碼包
?? CPP
字號:
/* *	This file is sdp parse source file, used to parse the packet of *	network and abstract the multimedia data * *	copyright (c) reserved 2008.09.09 */#include	"sdp.h"#include	<ctype.h>#include	<string.h>#include	<stdio.h>#include	<iostream>#include	<string>using	namespace	std;static	unsigned int basevalue(unsigned char base){	int		base64 = base;	if(islower(base64))	{		return base64 - 71;	}		if(isupper(base64))	{		return	base64 - 65;	}	if(isdigit(base64))	{		return	base64 + 4;	}	if(base64 == '+')	{		return	base64 + 19;	}	if(base64 == '/')	{		return	base64 + 16;	}		if(base64 =='=')	{		return	0;	}}int	base64decoder(char *result, char *src){	unsigned int	ch0 = 0, ch1;	char				buf[160], ch2; 	int				length, point = -1, pointer = 0;	length = strlen(src);	while(length > ++ point)	{		if(src[point] != '=')		{			ch0 = basevalue(src[point]); 			ch0 = ch0 << 18;		}		else		{			cout << "error!" << endl;			return	0;		}		if(src[++ point] != '=')		{			ch1 = basevalue(src[point]);			ch1 = ch1 << 12;			ch0 = ch0 | ch1;		}		else		{			cout << "error!" << endl;			return	0;		}		if(src[++ point] != '=')		{			ch1 = basevalue(src[point]);			ch1 = ch1 << 6;			ch0 = ch0 | ch1;		}		else		{			ch2 = (char)(ch0 >> 16);			result[pointer ++] = ch2;			break;		}		if(src[++ point] != '=')		{			ch1 = basevalue(src[point]);			ch0 = ch1 | ch0;		}		else		{			ch2 = (char)(ch0 >> 16);			result[pointer ++] = ch2;			ch2 = (char)(ch0 >> 8);			result[pointer ++] = ch2;			break;		}				ch2 = (char)(ch0 >> 16);		result[pointer ++] = ch2;		ch2 = (char)(ch0 >> 8);		result[pointer ++] = ch2;		ch2 = (char)ch0;		result[pointer ++] = ch2;	}	result[pointer] = '\0';	return	pointer;}static	int	filter(const char *in, const char *filter, char *out){	int		flen	= strlen(filter);	int		slen	= strlen(in);	if(!strncmp(in, filter, flen))	{		if(in[flen] == '"')			flen ++;		if(in[slen - 2] == '"')			slen -= 2;		memcpy(out, in + flen, slen - flen);		out[slen - flen] = '\0';		out[slen - flen] = '\0';		return	slen - flen;	}	return	0;}char	*strdup(char *buf){	if(buf != NULL)	{		int		len = strlen(buf);		char *data = new char[len + 1];		memcpy(data, buf, len);		data[len] = 0;		return	data;	}	return	NULL;}static	sdp_stream_t	*sdp_parse_m_symbol(char *data){	sdp_stream_t	*desc = new	sdp_stream_t;	char	buf[1024];	if(filter(data, "m=", buf))	{		desc -> id = strdup(buf);	}	else	{		cout << "sdp: no m= found." << endl;		delete	desc;		return	NULL;	}		return	desc;}static	int	sdp_parse_stream(sdp_stream_t *desc, FILE *rfile, char *buffer){	char	buf[1024], data[1024], *pdata;	char	decode[1024];	int		handled;	if(rfile != NULL && desc != NULL)	{		pdata = fgets(data, 1024, rfile);	}	else	{		cout << "parameters error." << endl;		return	-1;	}	while(pdata != NULL && data[0] != 'm')	{		handled = 0;		if(filter(pdata, "a=control:streamid=", buf))		{			desc -> stream_id = atoi(buf);			handled = 1;			pdata = fgets(data, 1024, rfile);			continue;		}		if(filter(pdata, "a=MaxBitRate:integer;", buf))		{			desc -> max_bit_rate = atoi(buf);			handled = 1;			pdata = fgets(data, 1024, rfile);			continue;		}		if(filter(pdata, "a=AvgBitRate:integer;", buf))		{			desc -> avg_bit_rate = atoi(buf);			handled = 1;			pdata = fgets(data, 1024, rfile);			continue;		}		if(filter(pdata, "a=MaxPacketSize:integer;", buf))		{			desc -> max_packet_size = atoi(buf);			handled = 1;			pdata = fgets(data, 1024, rfile);			continue;		}		if(filter(pdata, "a=AvgPacketSize:integer;", buf))		{			desc -> avg_packet_size = atoi(buf);			handled = 1;			pdata = fgets(data, 1024, rfile);			continue;		}		if(filter(pdata, "a=StartTime:integer;", buf)) 		{			desc -> start_time = atoi(buf);			handled = 1;			pdata = fgets(data, 1024, rfile);			continue;		}		if(filter(pdata, "a=Preroll:integer;", buf))		{			desc -> preroll = atoi(buf);			handled = 1;			pdata = fgets(data, 1024, rfile);			continue;		}		if(filter(pdata, "a=length:npt=", buf))		{			desc -> duration = (unsigned int)(atof(buf) * 1000);			handled = 1;			pdata = fgets(data, 1024, rfile);			continue;		}		if(filter(pdata, "a=StreamName:string;", buf))		{			desc -> stream_name = strdup(buf);			desc -> stream_name_size = strlen(desc -> stream_name);			handled = 1;			pdata = fgets(data, 1024, rfile);			continue;		}		if(filter(pdata, "a=mimetype:string;", buf))		{			desc -> mime_type = strdup(buf);			desc -> mime_type_size = strlen(desc -> mime_type);			handled = 1;			pdata = fgets(data, 1024, rfile);			continue;		}		if(filter(pdata, "a=OpaqueData:buffer;", buf)) 		{			desc -> opaque_data_size = base64decoder(decode, buf);			desc -> opaque_data = new char[desc -> opaque_data_size];			memcpy(desc -> opaque_data, decode, desc -> opaque_data_size);			handled = 1;			pdata = fgets(data, 1024, rfile);			continue;		}		if(filter(pdata, "a=ASMRuleBook:string;", buf))		{			desc -> asm_rule_book = strdup(buf);			desc -> asm_rule_book_length = strlen(buf);			handled = 1;			pdata = fgets(data, 1024, rfile);			continue;		}				if(pdata[0] != 'm')		{			printf("sdp stream parse: not handled: %s", data);			pdata = fgets(data, 1024, rfile);			continue;		}		else		{			memcpy(buffer, data, strlen(data));			return	1;		}	}	if(data[0] == 'm')	{		return	1;	}	return	0;}sdp_t	*sdp_parse(FILE *rfile){	sdp_t	*desc = new sdp_t;	sdp_stream_t	*stream;	char	buf[1024], data[1024], *pdata;	char	decode[1024];	int		handled = 0;	int		len;	if(rfile == NULL)	{		return	NULL;	}	if((pdata = fgets(data, 1024, rfile)) == NULL)	{		return	NULL;	}	while(pdata != NULL)	{		handled = 0;		if(filter(pdata, "a=Title:buffer;", buf))		{			base64decoder(decode, buf);			desc -> title = strdup(decode);			handled = 1;			pdata = fgets(data, 1024, rfile);			continue;		}		if(filter(pdata, "a=Author:buffer;", buf))		{			base64decoder(decode, buf);			desc -> author = strdup(decode);			handled = 1;			pdata = fgets(data, 1024, rfile);			continue;		}		if(filter(pdata, "a=Copyright:buffer;", buf))		{			base64decoder(decode, buf);			desc -> copyright = strdup(decode);			handled = 1;			pdata = fgets(data, 1024, rfile);			continue;		}		if(filter(pdata, "a=Abstract:buffer;", buf))		{			base64decoder(decode, buf);			desc -> abstract = strdup(decode);			handled = 1;			pdata = fgets(data, 1024, rfile);			continue;		}		if(filter(pdata, "a=StreamCount:integer;", buf))		{			desc -> stream_count = atoi(buf);			desc -> stream  = new sdp_pstream_t[desc -> stream_count];			handled = 1;			pdata = fgets(data, 1024, rfile);			continue;		}		if(filter(pdata, "a=Flags:integer;", buf))		{			desc -> flags = atoi(buf);			handled = 1;			pdata = fgets(data, 1024, rfile);			continue;		}		if(!handled)		{			if(pdata[0] == 'm')			{				goto header;			}			printf("sdp: not found: %s", data);			pdata = fgets(data, 1024, rfile);			continue;		}	}	delete	desc;	return	NULL;header:	do	{		stream = sdp_parse_m_symbol(data);		if(stream != NULL)		{			len = sdp_parse_stream(stream, rfile, data);			desc -> stream[stream -> stream_id] = stream;		}		else		{			delete	desc;			return	NULL;		}	}while(len == 1);	return	desc;}//	need to definatively delete all the dynamic memoryvoid sdp_free(sdp_t *desc) {	if(desc == NULL)	{		return	;	}		if(desc -> owner)		delete	desc -> owner;	if(desc -> session_name)		delete	desc -> session_name;	if(desc -> uri)		delete	desc -> uri;	if(desc -> email)		delete	desc -> email;	if(desc -> phone)		delete 	desc -> phone;	if(desc -> connection)		delete	desc -> connection;	if(desc -> bandwidth)		delete	desc -> bandwidth;	if(desc -> title)		delete	desc -> title;	if(desc -> author)		delete	desc -> author;	if(desc -> copyright)		delete	desc -> copyright;	if(desc -> keywords)		delete	desc -> keywords;	if(desc -> asm_rule_book)		delete	desc -> asm_rule_book;	if(desc -> abstract)		delete	desc -> abstract;	if(desc -> stream)	{		int	i = 0;		while(desc -> stream[i])		{			if(desc -> stream[i] -> id)				delete	desc -> stream[i] -> id;			if(desc -> stream[i] -> bandwidth)				delete	desc -> stream[i] -> bandwidth;			if(desc -> stream[i] -> range)				delete	desc -> stream[i] -> range;			if(desc -> stream[i] -> length)				delete	desc -> stream[i] -> length;			if(desc -> stream[i] -> rtpmap)				delete	desc -> stream[i] -> rtpmap;			if(desc -> stream[i] -> mimetype)				delete	desc -> stream[i] -> mimetype;			if(desc -> stream[i] -> stream_name)				delete	desc -> stream[i] -> stream_name;			if(desc -> stream[i] -> mime_type)				delete	desc -> stream[i] -> mime_type;			if(desc -> stream[i] -> opaque_data)				delete	desc -> stream[i] -> opaque_data;			if(desc -> stream[i] -> rmff_flags)				delete	desc -> stream[i] -> rmff_flags;						delete	desc -> stream[i];			++ i;		}		delete	desc -> stream;	}  	delete	desc;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品欧美一区二区在线观看| 国产欧美一区二区精品性色超碰| 日韩欧美高清在线| 亚洲三级免费电影| 激情综合色综合久久综合| 色婷婷亚洲一区二区三区| 久久影院午夜片一区| 婷婷久久综合九色综合伊人色| 国产99久久久久久免费看农村| 69p69国产精品| 一区二区三区**美女毛片| 国产一区 二区| 日韩限制级电影在线观看| 一级中文字幕一区二区| eeuss鲁片一区二区三区在线看 | 香蕉久久一区二区不卡无毒影院| 国产高清精品在线| 日韩精品一区二区三区swag| 婷婷综合五月天| 欧美色手机在线观看| 亚洲免费在线观看| 91同城在线观看| 国产精品狼人久久影院观看方式| 久久91精品国产91久久小草| 91精品国产一区二区三区| 亚洲电影一级片| 欧美久久久一区| 午夜精品福利一区二区三区蜜桃| 欧美视频日韩视频在线观看| 又紧又大又爽精品一区二区| 色婷婷久久久综合中文字幕| 1024亚洲合集| 色网站国产精品| 一级特黄大欧美久久久| 欧美性大战久久久| 五月婷婷久久丁香| 91精品国产高清一区二区三区| 日韩在线a电影| 日韩视频免费观看高清完整版| 日本v片在线高清不卡在线观看| 制服视频三区第一页精品| 日本欧美加勒比视频| 欧美va在线播放| 国产精品主播直播| 自拍av一区二区三区| 色国产综合视频| 午夜成人在线视频| 精品国产一区二区三区忘忧草 | 国产一区二三区好的| 久久久精品日韩欧美| 波多野结衣亚洲| 一级中文字幕一区二区| 日韩一区二区三区精品视频| 国产一区二区三区综合| 国产精品美女久久久久久久 | 国产一区二区免费视频| 国产拍揄自揄精品视频麻豆| 91美女视频网站| 亚洲大片一区二区三区| 精品国产网站在线观看| av在线播放不卡| 亚洲18女电影在线观看| 久久久久久97三级| 91国偷自产一区二区使用方法| 日韩精品亚洲一区| 国产女同互慰高潮91漫画| 日本丶国产丶欧美色综合| 久久疯狂做爰流白浆xx| 亚洲日本一区二区| 日韩精品自拍偷拍| 日本乱人伦一区| 久久99精品久久久久婷婷| 亚洲欧美一区二区三区久本道91| 欧美日韩国产小视频在线观看| 国产精品1024久久| 日韩中文字幕区一区有砖一区 | 久久97超碰色| 一区二区久久久久| 2020国产成人综合网| 色婷婷综合激情| 国产成人在线视频播放| 奇米精品一区二区三区在线观看一 | 国产乱码精品一区二区三区五月婷| 亚洲欧洲美洲综合色网| 精品日韩一区二区| 欧美日韩中文字幕一区二区| 国产精品白丝jk黑袜喷水| 丝袜美腿高跟呻吟高潮一区| 中文字幕制服丝袜成人av| 欧美大片在线观看| 欧美色中文字幕| 99久久夜色精品国产网站| 国产在线精品一区二区三区不卡| 亚洲在线视频一区| 成人免费视频在线观看| 亚洲国产精品激情在线观看| 日韩免费视频一区| 欧美一区二区三级| 欧美日韩亚洲综合在线 | 99精品视频一区二区| 欧美精品黑人性xxxx| 99精品久久免费看蜜臀剧情介绍| 国产曰批免费观看久久久| 美女爽到高潮91| 首页综合国产亚洲丝袜| 亚洲成人动漫在线观看| 亚洲制服丝袜av| 亚洲精品你懂的| 一区二区三区国产精品| 亚洲精品日韩专区silk| 亚洲欧美国产77777| 国产精品亲子乱子伦xxxx裸| 国产日韩亚洲欧美综合| 精品国产a毛片| 久久麻豆一区二区| 久久久久久电影| 国产日韩欧美激情| 欧美激情中文不卡| 国产精品白丝在线| 成人免费在线播放视频| 亚洲精品国产a久久久久久| 亚洲三级在线看| 亚洲一区二区三区视频在线播放| 亚洲资源中文字幕| 青青草91视频| 国产一区在线观看视频| 国产精品99久久久久| caoporen国产精品视频| 色婷婷综合久久| 欧美理论在线播放| 欧美本精品男人aⅴ天堂| 国产精品色一区二区三区| 一区二区三区四区视频精品免费| 亚洲高清视频在线| 精久久久久久久久久久| 国产sm精品调教视频网站| 色网站国产精品| 欧美一区二区播放| 国产婷婷一区二区| 曰韩精品一区二区| 国精产品一区一区三区mba视频 | 91麻豆精品在线观看| 在线观看免费亚洲| 日韩欧美专区在线| 欧美激情在线观看视频免费| 亚洲免费成人av| 轻轻草成人在线| www.av亚洲| 日韩欧美国产午夜精品| 久久免费视频一区| 亚洲午夜成aⅴ人片| 国产最新精品免费| 欧美亚一区二区| 久久―日本道色综合久久| 亚洲精品乱码久久久久| 国产最新精品精品你懂的| 99久久夜色精品国产网站| 91精品国产一区二区三区蜜臀 | 一区二区免费在线| 国产一区二区免费看| 欧美日韩免费一区二区三区视频 | 欧美国产精品一区二区| 午夜精品一区二区三区电影天堂| 国产成人在线色| 日韩欧美一级二级三级| 一区二区三区.www| 不卡电影一区二区三区| 日韩三级视频中文字幕| 一区二区三区四区蜜桃| 国产一区二区按摩在线观看| 欧美片在线播放| 亚洲三级免费观看| 国产精品亚洲第一| 精品蜜桃在线看| 午夜免费欧美电影| 在线日韩国产精品| 国产精品视频看| 国产精品99久久久久久久vr| 在线成人小视频| 亚洲久草在线视频| 99热精品国产| 亚洲国产精品激情在线观看 | 精品国产一区二区三区忘忧草| 亚洲一区在线视频观看| 成人免费看的视频| 精品免费日韩av| 免费观看一级欧美片| 欧美精品一卡二卡| 亚洲国产精品一区二区久久| 97久久精品人人澡人人爽| 中文字幕av免费专区久久| 国产不卡视频一区| 久久久综合九色合综国产精品| 久久精品免费观看| 日韩视频不卡中文| 九九久久精品视频| 2021久久国产精品不只是精品| 久久99国产精品免费| 精品少妇一区二区三区| 狠狠色伊人亚洲综合成人|