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

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

?? rtptimeutilities.h

?? jrtp庫
?? H
字號:
/*  This file is a part of JRTPLIB  Copyright (c) 1999-2007 Jori Liesenborgs  Contact: jori.liesenborgs@gmail.com  This library was developed at the "Expertisecentrum Digitale Media"  (http://www.edm.uhasselt.be), a research center of the Hasselt University  (http://www.uhasselt.be). The library is based upon work done for   my thesis at the School for Knowledge Technology (Belgium/The Netherlands).  Permission is hereby granted, free of charge, to any person obtaining a  copy of this software and associated documentation files (the "Software"),  to deal in the Software without restriction, including without limitation  the rights to use, copy, modify, merge, publish, distribute, sublicense,  and/or sell copies of the Software, and to permit persons to whom the  Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included  in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL  THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS  IN THE SOFTWARE.*//** * \file rtptimeutilities.h */#ifndef RTPTIMEUTILITIES_H#define RTPTIMEUTILITIES_H#include "rtpconfig.h"#include "rtptypes.h"#ifndef WIN32	#include <sys/time.h>	#include <time.h>#else		#ifndef _WIN32_WCE        	#include <sys/timeb.h>        #endif // _WIN32_WINCE#endif // WIN32#define RTP_NTPTIMEOFFSET									2208988800UL/** * This is a simple wrapper for the most significant word (MSW) and least  * significant word (LSW) of an NTP timestamp. */class RTPNTPTime{public:	/** This constructor creates and instance with MSW \c m and LSW \c l. */	RTPNTPTime(uint32_t m,uint32_t l)							{ msw = m ; lsw = l; }	/** Returns the most significant word. */	uint32_t GetMSW() const								{ return msw; }	/** Returns the least significant word. */	uint32_t GetLSW() const								{ return lsw; }private:	uint32_t msw,lsw;};/** This class is used to specify wallclock time, delay intervals etc. *  This class is used to specify wallclock time, delay intervals etc.  *  It stores a number of seconds and a number of microseconds. */class RTPTime{public:	/** Returns an RTPTime instance representing the current wallclock time. 	 *  Returns an RTPTime instance representing the current wallclock time. This is expressed 	 *  as a number of seconds since 00:00:00 UTC, January 1, 1970.	 */	static RTPTime CurrentTime();	/** This function waits the amount of time specified in \c delay. */	static void Wait(const RTPTime &delay);			/** Creates an RTPTime instance representing \c t, which is expressed in units of seconds. */	RTPTime(double t);	/** Creates an instance that corresponds to \c ntptime. 	 *  Creates an instance that corresponds to \c ntptime.  If	 *  the conversion cannot be made, both the seconds and the	 *  microseconds are set to zero.	 */	RTPTime(RTPNTPTime ntptime);	/** Creates an instance corresponding to \c seconds and \c microseconds. */	RTPTime(uint32_t seconds,uint32_t microseconds)					{ sec = seconds; microsec = microseconds; }	/** Returns the number of seconds stored in this instance. */	uint32_t GetSeconds() const										{ return sec; }	/** Returns the number of microseconds stored in this instance. */	uint32_t GetMicroSeconds() const								{ return microsec; }	/** Returns the time stored in this instance, expressed in units of seconds. */	double GetDouble() const 										{ return (((double)sec)+(((double)microsec)/1000000.0)); }	/** Returns the NTP time corresponding to the time stored in this instance. */	RTPNTPTime GetNTPTime() const;	RTPTime &operator-=(const RTPTime &t);	RTPTime &operator+=(const RTPTime &t);	bool operator<(const RTPTime &t) const;	bool operator>(const RTPTime &t) const;	bool operator<=(const RTPTime &t) const;	bool operator>=(const RTPTime &t) const;private:#if (defined(WIN32) || defined(_WIN32_WCE))	static inline unsigned __int64 CalculateMicroseconds(unsigned __int64 performancecount,unsigned __int64 performancefrequency);#endif // WIN32 || _WIN32_WCE	uint32_t sec,microsec;};inline RTPTime::RTPTime(double t){	sec = (uint32_t)t;	double t2 = t-((double)sec);	t2 *= 1000000.0;	microsec = (uint32_t)t2;}inline RTPTime::RTPTime(RTPNTPTime ntptime){	if (ntptime.GetMSW() < RTP_NTPTIMEOFFSET)	{		sec = 0;		microsec = 0;	}	else	{		sec = ntptime.GetMSW() - RTP_NTPTIMEOFFSET;				double x = (double)ntptime.GetLSW();		x /= (65536.0*65536.0);		x *= 1000000.0;		microsec = (uint32_t)x;	}}#if (defined(WIN32) || defined(_WIN32_WCE))inline unsigned __int64 RTPTime::CalculateMicroseconds(unsigned __int64 performancecount,unsigned __int64 performancefrequency){	unsigned __int64 f = performancefrequency;	unsigned __int64 a = performancecount;	unsigned __int64 b = a/f;	unsigned __int64 c = a%f; // a = b*f+c => (a*1000000)/f = b*1000000+(c*1000000)/f	return b*1000000ui64+(c*1000000ui64)/f;}inline RTPTime RTPTime::CurrentTime(){	static int inited = 0;	static unsigned __int64 microseconds, initmicroseconds;	static LARGE_INTEGER performancefrequency;	unsigned __int64 emulate_microseconds, microdiff;	SYSTEMTIME systemtime;	FILETIME filetime;	LARGE_INTEGER performancecount;	QueryPerformanceCounter(&performancecount);    	if(!inited){		inited = 1;		QueryPerformanceFrequency(&performancefrequency);		GetSystemTime(&systemtime);		SystemTimeToFileTime(&systemtime,&filetime);		microseconds = ( ((unsigned __int64)(filetime.dwHighDateTime) << 32) + (unsigned __int64)(filetime.dwLowDateTime) ) / 10ui64;		microseconds-= 11644473600000000ui64; // EPOCH		initmicroseconds = CalculateMicroseconds(performancecount.QuadPart, performancefrequency.QuadPart);	}    	emulate_microseconds = CalculateMicroseconds(performancecount.QuadPart, performancefrequency.QuadPart);	microdiff = emulate_microseconds - initmicroseconds;	return RTPTime((uint32_t)((microseconds + microdiff) / 1000000ui64),((uint32_t)((microseconds + microdiff) % 1000000ui64)));}inline void RTPTime::Wait(const RTPTime &delay){	DWORD t;	t = ((DWORD)delay.GetSeconds())*1000+(((DWORD)delay.GetMicroSeconds())/1000);	Sleep(t);}class RTPTimeInitializer{public:	RTPTimeInitializer();	void Dummy() { dummy++; }private:	int dummy;};extern RTPTimeInitializer timeinit;#else // unix styleinline RTPTime RTPTime::CurrentTime(){	struct timeval tv;		gettimeofday(&tv,0);	return RTPTime((uint32_t)tv.tv_sec,(uint32_t)tv.tv_usec);}inline void RTPTime::Wait(const RTPTime &delay){	struct timespec req,rem;	req.tv_sec = (time_t)delay.sec;	req.tv_nsec = ((long)delay.microsec)*1000;	nanosleep(&req,&rem);}#endif // WIN32inline RTPTime &RTPTime::operator-=(const RTPTime &t){ 	sec -= t.sec; 	if (t.microsec > microsec)	{		sec--;		microsec += 1000000;	}	microsec -= t.microsec;	return *this;}inline RTPTime &RTPTime::operator+=(const RTPTime &t){ 	sec += t.sec; 	microsec += t.microsec;	if (microsec >= 1000000)	{		sec++;		microsec -= 1000000;	}	return *this;}inline RTPNTPTime RTPTime::GetNTPTime() const{	uint32_t msw = sec+RTP_NTPTIMEOFFSET;	uint32_t lsw;	double x;	      	x = microsec/1000000.0;	x *= (65536.0*65536.0);	lsw = (uint32_t)x;	return RTPNTPTime(msw,lsw);}inline bool RTPTime::operator<(const RTPTime &t) const{	if (sec < t.sec)		return true;	if (sec > t.sec)		return false;	if (microsec < t.microsec)		return true;	return false;}inline bool RTPTime::operator>(const RTPTime &t) const{	if (sec > t.sec)		return true;	if (sec < t.sec)		return false;	if (microsec > t.microsec)		return true;	return false;}inline bool RTPTime::operator<=(const RTPTime &t) const{	if (sec < t.sec)		return true;	if (sec > t.sec)		return false;	if (microsec <= t.microsec)		return true;	return false;}inline bool RTPTime::operator>=(const RTPTime &t) const{	if (sec > t.sec)		return true;	if (sec < t.sec)		return false;	if (microsec >= t.microsec)		return true;	return false;}#endif // RTPTIMEUTILITIES_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本aⅴ亚洲精品中文乱码| 成人美女在线视频| 精品国产乱码久久久久久蜜臀| 日韩成人午夜电影| 国产女同互慰高潮91漫画| 色欧美日韩亚洲| 麻豆视频观看网址久久| 国产三级三级三级精品8ⅰ区| 色综合色狠狠天天综合色| 蜜臀久久99精品久久久久久9| 国产精品久久久久7777按摩| 日韩欧美二区三区| 一本大道av一区二区在线播放| 日本不卡视频一二三区| 亚洲免费大片在线观看| 国产日韩精品一区二区三区| 91精品国产乱| 777久久久精品| 69堂成人精品免费视频| 国产成人av福利| 久久爱另类一区二区小说| 亚洲成人免费av| 成人免费视频在线观看| 国产午夜精品久久久久久久 | 一区二区成人在线| 国产精品免费aⅴ片在线观看| 久久综合狠狠综合久久激情| 欧美mv日韩mv国产| 久久夜色精品一区| 久久精品免费在线观看| 久久婷婷成人综合色| 国产精品久久久久久福利一牛影视 | 亚洲国产精品一区二区www| 亚洲一区二区精品3399| 亚洲国产精品一区二区久久恐怖片| 亚洲一区二区在线免费观看视频| 午夜精品福利一区二区三区av| 亚洲国产精品尤物yw在线观看| 亚洲制服丝袜一区| 麻豆国产欧美日韩综合精品二区| 蜜臀va亚洲va欧美va天堂| 91蜜桃婷婷狠狠久久综合9色| 欧美日韩国产影片| 亚洲精品在线免费观看视频| 国产精品美女视频| 日韩二区三区在线观看| 国产a区久久久| 日韩欧美国产一二三区| 亚洲另类在线视频| 国产一区在线视频| 91福利视频久久久久| 久久亚区不卡日本| 视频一区二区国产| 91视频在线看| 国产精品萝li| 国产成人啪免费观看软件| 欧美一区二区三区四区五区| 伊人婷婷欧美激情| 成人一区二区三区| 久久久久久久久久久久久久久99| 香港成人在线视频| 精品视频免费看| 水蜜桃久久夜色精品一区的特点| 色哟哟精品一区| 中文字幕亚洲区| 成人教育av在线| 亚洲特级片在线| 97se亚洲国产综合自在线不卡| 日本一区二区三级电影在线观看 | 欧美亚洲一区二区在线观看| 亚洲日本一区二区| 欧美中文字幕亚洲一区二区va在线| 国产精品免费视频网站| 欧美综合一区二区三区| 免费成人美女在线观看.| 日韩视频123| 成a人片亚洲日本久久| 亚洲免费观看高清完整版在线 | 免费高清视频精品| 久久精品夜夜夜夜久久| 成人在线综合网站| 亚洲韩国一区二区三区| 日韩欧美国产系列| 国产91综合网| 视频一区视频二区中文字幕| 精品欧美久久久| 91精彩视频在线观看| 久久精品国产999大香线蕉| 国产偷国产偷亚洲高清人白洁| 99re6这里只有精品视频在线观看| 亚洲va韩国va欧美va| 久久久噜噜噜久噜久久综合| 欧洲精品在线观看| 成人一区二区三区视频在线观看| 三级不卡在线观看| 日韩一区在线免费观看| 日韩美女主播在线视频一区二区三区| 成人免费视频caoporn| 日韩av电影一区| 亚洲精品乱码久久久久久| 亚洲国产高清在线| 久久女同性恋中文字幕| 91精品国产高清一区二区三区蜜臀| aaa欧美大片| 99精品热视频| 色婷婷av一区二区三区gif | 欧美亚洲丝袜传媒另类| 91一区一区三区| 一本大道久久a久久精二百| 成人精品免费网站| 国产69精品一区二区亚洲孕妇| 国产成人亚洲综合a∨猫咪| 激情五月播播久久久精品| 国产伦理精品不卡| 国产成人午夜电影网| 99re成人精品视频| 在线免费观看视频一区| 欧美群妇大交群的观看方式| 91麻豆精品国产91久久久久久 | 久久亚洲一区二区三区四区| 欧美xxxxxxxxx| 国产清纯白嫩初高生在线观看91| 欧美激情一区三区| 亚洲主播在线观看| 久久99九九99精品| 不卡av电影在线播放| 欧美一区二区三区在线看| 国产性色一区二区| 亚洲午夜激情网站| 91亚洲精品久久久蜜桃网站| 在线不卡a资源高清| 久久久三级国产网站| 一二三区精品福利视频| 久久成人免费网| 欧美高清精品3d| 一区免费观看视频| 蜜臀av性久久久久蜜臀aⅴ| 91在线观看免费视频| 精品久久一区二区| 亚洲成人www| 一本到三区不卡视频| 国产精品美女久久福利网站| 精品一区二区精品| 欧美一区二区免费| 亚洲一区在线观看视频| 99久免费精品视频在线观看| 久久这里只有精品首页| 老司机精品视频在线| 91麻豆精品国产91久久久久| 亚洲一区电影777| 欧美日韩中文字幕一区二区| 亚洲精品亚洲人成人网| 日本道精品一区二区三区| 亚洲精品欧美专区| 91在线国产福利| 亚洲自拍欧美精品| 678五月天丁香亚洲综合网| 亚洲高清不卡在线观看| 欧美精品色综合| 肉丝袜脚交视频一区二区| 正在播放亚洲一区| 日韩精品亚洲一区二区三区免费| 欧美群妇大交群的观看方式| 欧美aⅴ一区二区三区视频| 欧美一区二区成人6969| 粉嫩嫩av羞羞动漫久久久| 亚洲欧洲www| 91精品在线免费观看| 高清久久久久久| 亚洲国产精品一区二区尤物区| 国产精品视频一二| 欧美日韩在线播放三区四区| 精品一区二区三区在线观看国产| 中文av一区特黄| 欧美麻豆精品久久久久久| 国产成人精品免费网站| 日韩综合一区二区| 中文字幕一区二区在线观看| 日韩欧美一区二区免费| 色综合亚洲欧洲| 国产成人亚洲精品青草天美| 青青草97国产精品免费观看| 自拍av一区二区三区| 欧美精品一区在线观看| 欧美二区在线观看| 9l国产精品久久久久麻豆| 国产高清在线观看免费不卡| 青青草原综合久久大伊人精品 | 综合欧美一区二区三区| 国产视频一区二区在线观看| 欧美一区二区福利在线| 欧美日韩黄色一区二区| 欧美日韩一级视频| 欧美日韩亚洲另类| 欧美嫩在线观看| 欧美日韩小视频| 欧美伦理电影网| 精品日韩欧美一区二区| 久久久久综合网| 国产精品三级电影|