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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cxvid.cpp

?? < VC++視頻音頻開發(fā)>> 這本書的源碼
?? CPP
字號(hào):
// CXvid.cpp: implementation of the CXvid class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "XvidQuantsParser.h"
#include "CXvid.h"
#include <time.h>

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CXvid::CXvid()
{
	quants		= NULL;
	isOpened	= false;
	isAnalysed	= false;
}

//------------------------------------------------------------------------------
CXvid::~CXvid()
{
	if (quants != NULL)
	{
		delete[] quants;
		quants = NULL;
	}
}


//------------------------------------------------------------------------------
//打開Xvid文件
int CXvid::Open(CString filepath)
{
	HIC hic;				// HIC和ICINFO定義在VfW.H - Video for Windows頭文件
	ICINFO icinfo;			// 一般在\Microsoft Visual Studio\VC98\Include\目錄下
	
	//InputFileAVI類
	InputFileAVI* inputAVI = new InputFileAVI(false);
	inputAVI->Init((char*)(LPCTSTR)filepath);
	
	VideoSourceAVI* inputVideoAVI;
	inputVideoAVI = (VideoSourceAVI*)inputAVI->videoSrc;

	//驗(yàn)證XVID中的fourCC
	hic = inputVideoAVI->getDecompressorHandle();		//得到當(dāng)前文件的解碼器句柄
	ICGetInfo(hic, &icinfo, sizeof(ICINFO));
	if(!icinfo.fccHandler == mmioFOURCC('X','V','I','D'))
	{
		AfxMessageBox("Not a valid Xvid AVI File!");
		return 1;
	}

	//得到這個(gè)AVI文件的信息
	//得到每秒鐘的幀數(shù)
	fps		= (float)inputVideoAVI->streamInfo.dwRate / (float)inputVideoAVI->streamInfo.dwScale;
	height	= inputVideoAVI->getImageFormat()->biHeight;	//視頻的高度
	width	= inputVideoAVI->getImageFormat()->biWidth;		//視頻的寬度
	nframes	= inputVideoAVI->lSampleLast;					//幀的數(shù)目

	if (nframes < 100)
	{
		return 2;				//不允許小于100個(gè)視頻幀
	}

	//一切正常
	avipath	= filepath;			//設(shè)置文件路徑
	delete inputAVI;
	
	isAnalysed	= false;		//文件還沒有被分析
	isOpened = true;			//文件已經(jīng)打開
	return 0;
}

//------------------------------------------------------------------------------
//分析Xvid文件
int CXvid::Analyze(CProgressCtrl &progress, CEdit &edit, bool log, int start, int stop)
{
	//如果沒有打開Xvid文件
	if (!isOpened)
	{
		AfxMessageBox("No Xvid AVI file opened!");
		return 1;
	}

	COleDateTime objOle;
	CString strTime;
	char buflog[50];

	LONG lActualBytes;
	UCHAR* b=NULL;

	int pbjump	= (stop-start)/100;
	int pbcount = 0;
	int pbpos	= 0;

	icount=0; pcount=0;
	nsum=0; isum=0; psum=0;
	nmax=0; nmin=32;

	nfsmax = 0; nfsmin = 999999999;
	ifsmax = 0; ifsmin = 999999999;
	pfsmax = 0; pfsmin = 999999999;

	InputFileAVI *inputAVI = new InputFileAVI(false);
	inputAVI->Init((char*)(LPCTSTR)avipath);
	
	VideoSourceAVI *inputVideoAVI;
	inputVideoAVI = (VideoSourceAVI*) inputAVI->videoSrc;

	progress.SetRange(0, 100);
	progress.SetPos(0);
	
	//如果打開了分析日志
	if (log)
	{
		logfile.Open("analysis.log");
		logfile.Print("--------------------------------------------------------------------------------------\n");
		logfile.Print("Generated by Xvid Quants Parser v1.0\n");
		logfile.Print("--------------------------------------------------------------------------------------\n");
		logfile.Print("File: \t");
		logfile.Print((char*)(LPCTSTR)avipath);
		logfile.Print("\n");
		logfile.Print("Frames:\t");
		_itoa(nframes, buflog, 10);
		logfile.Print(buflog);
		logfile.Print("\n");
		logfile.Print("Start:\t");
		_itoa(start, buflog, 10);
		logfile.Print(buflog);
		logfile.Print("\n");
		logfile.Print("End:\t");
		_itoa(stop, buflog, 10);
		logfile.Print(buflog);
		logfile.Print("\n");
		logfile.Print("Length:\t");
		_itoa(stop-start, buflog, 10);
		logfile.Print(buflog);
		logfile.Print("\n");
		logfile.Print("--------------------------------------------------------------------------------------\n");
		logfile.Print("Quantizer log:\n");
		logfile.Print("--------------------------------------------------------------------------------------\n");
	}
	//---------------------------------------------------------------------------
	//刪除以前的quants數(shù)組
	if (quants != NULL)
	{
		delete[] quants;
		quants = NULL;
	}
	//創(chuàng)建新的quants數(shù)組
	quants = new QUANTS[stop-start];

	//記錄分析的開始時(shí)間
	clock_t debut = clock();

	// 開始分析
	for (int i=start; i<stop; i++)
	{
		//得到幀的大小等數(shù)據(jù)
		inputVideoAVI->read(i, 1, NULL, 0, &lActualBytes, NULL);
		b = new UCHAR[lActualBytes];
		//把幀的數(shù)據(jù)讀入到b中
		inputVideoAVI->read(i, 1, b, lActualBytes, &lActualBytes, NULL);

		//檢查幀大小的最小/最大值
		quants[i-start].framesize = lActualBytes;
		if (lActualBytes>nfsmax) nfsmax = lActualBytes;
		if (lActualBytes<nfsmin) nfsmin = lActualBytes;
		// 如果是關(guān)鍵幀-I幀
		if (inputVideoAVI->isKey(i))
		{
			quants[i-start].isIFrame = true;
			icount++;
			
			//檢查I幀大小的最小/最大值
			if (lActualBytes>ifsmax) ifsmax = lActualBytes;
			if (lActualBytes<ifsmin) ifsmin = lActualBytes;

			if (b[24] == 0x28)
			{
				isum += b[27]>>1;
				nsum += b[27]>>1;
				quants[i-start].qvalue = b[27]>>1;
				if (b[27]>>1 > nmax) nmax = b[27]>>1;
				if (b[27]>>1 < nmin) nmin = b[27]>>1;
			}
			else
			{
				isum += (b[27] & 0x3E)>>2;
				nsum += (b[27] & 0x3E)>>2;
				quants[i-start].qvalue = (b[27] & 0x3E)>>2;
				if ((b[27] & 0x3E)>>2 > nmax) nmax = (b[27] & 0x3E)>>2;
				if ((b[27] & 0x3E)>>2 < nmin) nmin = (b[27] & 0x3E)>>2;
			}
			//如果打開了分析日志
			if (log)
			{
				objOle = COleDateTime::GetCurrentTime();
				strTime = objOle.Format("%H:%M:%S");
				sprintf(buflog, "%s - %d\tIF:Q%d\t%d\n", strTime, i+1, quants[i-start].qvalue, lActualBytes);
			}
			
		}
		else										//如果不是關(guān)鍵幀(I幀)
		{
			quants[i-start].isIFrame = false;
			pcount++;

			if (lActualBytes>pfsmax) pfsmax = lActualBytes;
			if (lActualBytes<pfsmin) pfsmin = lActualBytes;

			if (b[4] == 0x68)
			{
				psum += b[7];
				nsum += b[7];
				quants[i-start].qvalue = b[7];
				if (b[7] > nmax) nmax = b[7];
				if (b[7] < nmin) nmin = b[7];
			}
			else
			{
				psum += (b[7] & 0x3E)>>1;
				nsum += (b[7] & 0x3E)>>1;
				quants[i-start].qvalue = (b[7] & 0x3E)>>1;
				if ((b[7] & 0x3E)>>1 > nmax) nmax = (b[7] & 0x3E)>>1;
				if ((b[7] & 0x3E)>>1 < nmin) nmin = (b[7] & 0x3E)>>1;
			}
			//如果打開了分析日志
			if (log)
			{
				objOle = COleDateTime::GetCurrentTime();
				strTime = objOle.Format("%H:%M:%S");
				sprintf(buflog, "%s - %d\tPF:Q%d\t%d\n", strTime, i+1, quants[i-start].qvalue, lActualBytes);
			}
			
		}

		//如果打開了分析日志
		if (log) logfile.Print(buflog);
		

		if (b!=NULL)
		{
			delete[] b;
			b=NULL;
		}

		if (pbcount == pbjump)
		{
			pbcount = 0;
			pbpos++;
			progress.SetPos(pbpos);

			char buf[50];
			sprintf(buf, "Analyzing: %d %% Completed", i*100/(stop-start-1));
			edit.SetSel(0, edit.LineLength());
			edit.ReplaceSel(buf);
		}
		pbcount++;
	}

	//記錄分析的結(jié)束時(shí)間
	clock_t fin = clock();
	//得到分析的時(shí)間
	long temps = fin - debut;
	
	char buf[50];
	if (temps > 1000)
		sprintf(buf, "Analyzed %d frames in %d seconds", nframes, temps/1000);
	else
		sprintf(buf, "Analyzed %d frames in %d milliseconds", (stop-start), temps);

	edit.SetSel(0, edit.LineLength());
	edit.ReplaceSel(buf);

	navg = (float)nsum/(stop-start);
	pavg = (float)psum/pcount;
	iavg = (float)isum/icount;

	//如果打開了分析日志
	if (log)
	{
		logfile.Print("--------------------------------------------------------------------------------------\n");
		logfile.Print("End of log\n");
		logfile.Print("--------------------------------------------------------------------------------------\n");
		logfile.Close();
	}
	

	delete inputAVI;
	isAnalysed = true;
	return 0;	
}

//------------------------------------------------------------------------------
void CXvid::Close(void)
{
	if (quants != NULL)
	{
		delete[] quants;
		quants = NULL;
	}

	isOpened	= false;
	isAnalysed	= false;
}

//------------------------------------------------------------------------------
void CXvid::SetQuantsArray(CXvid::QUANTS* qvalues, int nelem)
{
	if (quants != NULL)
	{
		delete[] quants;
		quants = NULL;
	}

	quants = qvalues;
	nframes = nelem;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲bt欧美bt精品777| 成人一道本在线| 亚洲高清视频的网址| 综合久久一区二区三区| 国产日韩欧美一区二区三区乱码| 精品少妇一区二区三区免费观看 | 欧美一区永久视频免费观看| 欧美在线观看视频一区二区三区| 91女厕偷拍女厕偷拍高清| 色综合久久综合网97色综合| 91免费视频观看| 在线观看av不卡| 欧美日韩在线直播| 777久久久精品| 精品三级av在线| 久久精品男人的天堂| 国产精品欧美经典| 亚洲靠逼com| 视频在线在亚洲| 久久国内精品自在自线400部| 精品一区二区三区免费| 国产成人精品三级| aaa亚洲精品| 欧美日本视频在线| 欧美大片在线观看| 中文子幕无线码一区tr| 亚洲日本欧美天堂| 五月天国产精品| 看国产成人h片视频| 国产69精品久久99不卡| 99re这里只有精品6| 欧美日韩精品三区| 精品国产一区二区在线观看| 国产人久久人人人人爽| 一区二区三区欧美视频| 奇米色777欧美一区二区| 国产酒店精品激情| 91精品福利在线| 日韩精品中文字幕在线一区| 国产精品久久久久影院色老大| 亚洲综合视频在线观看| 国产一区二区精品久久91| 91在线小视频| 日韩精品一区二区三区视频| 综合色天天鬼久久鬼色| 青草av.久久免费一区| 成人爱爱电影网址| 91精品国产乱码久久蜜臀| 国产精品全国免费观看高清| 婷婷中文字幕综合| 成人午夜电影久久影院| 欧美疯狂做受xxxx富婆| 中文字幕中文字幕一区二区| 日韩av一区二| 91网上在线视频| 欧美va亚洲va国产综合| 一区二区三区精品在线观看| 国产剧情一区在线| 在线不卡一区二区| 亚洲免费观看高清完整版在线 | 精品福利av导航| 亚洲福利一区二区三区| 丁香激情综合国产| 91精品国产aⅴ一区二区| 日韩毛片高清在线播放| 经典三级在线一区| 欧美日韩国产乱码电影| 中文字幕视频一区二区三区久| 男男视频亚洲欧美| 欧美三区在线观看| 亚洲同性同志一二三专区| 韩国精品免费视频| 日韩一区和二区| 亚洲五月六月丁香激情| 北岛玲一区二区三区四区| 精品成a人在线观看| 日韩专区中文字幕一区二区| 91女人视频在线观看| 国产欧美一区二区精品婷婷 | 99在线视频精品| 久久久久一区二区三区四区| 日本不卡视频在线| 欧美日韩国产小视频| 亚洲免费在线播放| eeuss国产一区二区三区| 久久久无码精品亚洲日韩按摩| 青青青爽久久午夜综合久久午夜 | 国产亚洲欧美在线| 加勒比av一区二区| 日韩三级在线观看| 欧美a级理论片| 欧美高清你懂得| 视频一区视频二区中文字幕| 欧美伊人久久大香线蕉综合69| 亚洲欧美日韩系列| 97精品超碰一区二区三区| 国产精品欧美一区喷水| 成人黄色小视频| 国产精品家庭影院| av动漫一区二区| 日韩伦理电影网| 色婷婷一区二区| 亚洲午夜久久久久久久久电影网 | 国产91精品在线观看| 久久免费电影网| 国产成人精品1024| 国产欧美一区二区三区在线看蜜臀 | 亚洲日本va在线观看| 91麻豆精品在线观看| 亚洲人一二三区| 欧美亚洲免费在线一区| 亚洲一卡二卡三卡四卡| 欧美日本在线视频| 日本特黄久久久高潮| 精品国产污网站| 国产一区二区导航在线播放| 国产色产综合色产在线视频| eeuss国产一区二区三区| 亚洲欧美一区二区三区国产精品| 色视频成人在线观看免| 亚洲国产成人av| 日韩欧美另类在线| 国产老肥熟一区二区三区| 国产精品无码永久免费888| 91免费精品国自产拍在线不卡| 亚洲综合在线免费观看| 欧美一区二区三区在线视频| 国内精品国产三级国产a久久| 欧美极品少妇xxxxⅹ高跟鞋| 一本一道波多野结衣一区二区| 亚洲成人手机在线| 欧美成人一区二区三区片免费| 国产伦理精品不卡| 亚洲欧美欧美一区二区三区| 欧美日韩一区成人| 国产在线精品免费av| 中文字幕在线不卡一区二区三区| 欧美私人免费视频| 激情都市一区二区| 亚洲免费在线视频一区 二区| 欧美日韩免费高清一区色橹橹 | 伊人色综合久久天天人手人婷| 欧美日韩黄色一区二区| 精品亚洲国产成人av制服丝袜| 亚洲国产成人在线| 欧美精三区欧美精三区| 国产精品白丝jk黑袜喷水| 一区二区在线观看av| 精品久久久久香蕉网| 国产精品美女久久福利网站| 色狠狠综合天天综合综合| 久久国产三级精品| 一区精品在线播放| 日韩精品专区在线| 日本道精品一区二区三区| 狠狠色狠狠色综合| 亚洲最新视频在线观看| 久久色在线观看| 欧美日韩大陆一区二区| 成人综合婷婷国产精品久久蜜臀 | 99天天综合性| 免费xxxx性欧美18vr| 亚洲日本在线观看| 久久只精品国产| 9191久久久久久久久久久| 成人黄色在线看| 狠狠色狠狠色综合| 亚洲成人先锋电影| 亚洲人成7777| 国产日韩精品久久久| 欧美一区二区在线免费播放| 一本大道久久a久久精品综合| 国产真实乱偷精品视频免| 五月天视频一区| 亚洲色欲色欲www| 国产亚洲一二三区| 欧美变态tickle挠乳网站| 欧美三级资源在线| 91网站在线播放| 成人av动漫在线| 国产精品18久久久久久久久| 男人的j进女人的j一区| 亚洲福利视频一区二区| 一区二区三区在线观看动漫| 欧美极品少妇xxxxⅹ高跟鞋 | 国产精品全国免费观看高清 | 国内精品视频666| 青青国产91久久久久久| 午夜精品爽啪视频| 亚洲国产欧美在线| 一区二区三区高清不卡| 中文字幕在线不卡国产视频| 国产三级欧美三级日产三级99 | 日本视频一区二区三区| 亚洲国产日韩综合久久精品| 亚洲九九爱视频| 一区二区在线观看视频在线观看| 亚洲欧洲日产国产综合网| 国产精品国产三级国产aⅴ无密码| 国产三级精品视频|