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

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

?? cxvid.cpp

?? VC++視頻開發(fā)實例集錦(包括“遠程視頻監(jiān)控”"語音識別系統(tǒng)"等13個經(jīng)典例子)
?? CPP
字號:
// 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;

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

	//得到這個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個視頻幀
	}

	//一切正常
	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];

	//記錄分析的開始時間
	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é)束時間
	clock_t fin = clock();
	//得到分析的時間
	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
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩限制级电影在线观看| 日本道免费精品一区二区三区| 天堂资源在线中文精品| 一区二区在线免费| 久久机这里只有精品| heyzo一本久久综合| 欧美性猛交一区二区三区精品| 精品国产免费久久| 亚洲私人影院在线观看| 美国一区二区三区在线播放| 丰满岳乱妇一区二区三区| 欧美日韩亚洲另类| 中文字幕亚洲一区二区va在线| 日韩精品电影一区亚洲| 日韩一区二区三区视频在线观看| 欧美a级理论片| 欧亚一区二区三区| 中文字幕佐山爱一区二区免费| 99国产精品视频免费观看| 久久久国产综合精品女国产盗摄| 天天免费综合色| 精品国产一区二区三区忘忧草| 国产精品99久久久| 日韩精品一区二区三区四区| 午夜成人在线视频| 精品国免费一区二区三区| 成人久久18免费网站麻豆| 精品久久久网站| 蜜桃一区二区三区在线| 国产欧美一区二区精品婷婷| 伦理电影国产精品| 国产精品久久久久久久久免费樱桃 | 国产午夜精品美女毛片视频| 久久国产精品一区二区| 国产精品国产三级国产aⅴ入口 | 91视频你懂的| 亚洲欧洲精品一区二区精品久久久 | 久久66热偷产精品| 日韩视频免费观看高清完整版| 国产传媒欧美日韩成人| 久久婷婷综合激情| 国产精品资源在线| 亚洲国产精品尤物yw在线观看| 在线成人av影院| 亚洲成精国产精品女| 777欧美精品| 水蜜桃久久夜色精品一区的特点| 国产日韩三级在线| 91精品国产全国免费观看| 日本美女视频一区二区| 欧美大胆人体bbbb| 91成人在线观看喷潮| 国产精品18久久久久久vr| 亚洲午夜精品网| 国产人久久人人人人爽| 欧美一区二区二区| 欧美在线观看你懂的| 成人激情开心网| 亚洲人成人一区二区在线观看| 91成人免费在线| 国产91精品露脸国语对白| 免费在线看一区| 亚洲成人先锋电影| 自拍偷拍亚洲欧美日韩| 国产精品色哟哟| 色偷偷88欧美精品久久久| 五月激情综合色| 樱花影视一区二区| 国产精品视频在线看| 精品国产制服丝袜高跟| 欧美一区二区三区日韩| 欧美日韩免费一区二区三区视频| 99久久99久久免费精品蜜臀| 国产91综合一区在线观看| 九九精品一区二区| 另类小说欧美激情| 蜜桃视频在线观看一区| 日本三级亚洲精品| 秋霞影院一区二区| 日韩高清在线一区| 偷拍一区二区三区| 丝袜美腿亚洲一区| 午夜精品一区二区三区免费视频 | 亚洲成av人片在线观看| 夜夜亚洲天天久久| 久久久久久久综合狠狠综合| 欧美一区二区三区在线电影| 欧美日韩mp4| av电影在线观看一区| 成人av片在线观看| 99久久精品情趣| 91免费在线视频观看| 一本久道中文字幕精品亚洲嫩 | 视频精品一区二区| 日韩av不卡在线观看| 日本视频免费一区| 九九视频精品免费| 国产一区二区不卡在线| 亚洲国产成人tv| 亚洲成av人影院| 精品在线观看免费| 国产精品99久久久久久久女警| 高清在线不卡av| 91麻豆免费观看| 欧美日韩国产首页在线观看| 欧美一区二区免费视频| 精品黑人一区二区三区久久| 欧美激情一区二区三区在线| 日韩视频永久免费| 欧美国产日韩亚洲一区| 亚洲欧美日韩国产一区二区三区 | 亚洲男同性恋视频| 婷婷综合久久一区二区三区| 精品一区二区三区久久久| 国产高清成人在线| 欧美在线三级电影| 精品国产免费久久 | 成人一二三区视频| 日本伦理一区二区| 日韩限制级电影在线观看| 久久蜜桃一区二区| 一区二区三区在线视频观看58| 日韩电影在线观看一区| 懂色av一区二区夜夜嗨| 欧美三区在线视频| 久久久99久久| 亚洲一二三级电影| 国产在线精品一区在线观看麻豆| 奇米一区二区三区| caoporm超碰国产精品| 欧美喷潮久久久xxxxx| 久久免费精品国产久精品久久久久| 最新国产精品久久精品| 乱中年女人伦av一区二区| 色视频成人在线观看免| 日韩欧美123| 一区二区三区四区精品在线视频 | 精品国产免费人成电影在线观看四季| 综合自拍亚洲综合图不卡区| 久久精品av麻豆的观看方式| 在线精品视频小说1| 国产欧美日韩精品a在线观看| 一区二区三区日韩欧美精品| 国产凹凸在线观看一区二区| 69堂成人精品免费视频| 亚洲啪啪综合av一区二区三区| 久久66热偷产精品| 91精品国产免费| 亚洲精品精品亚洲| 国产激情91久久精品导航 | 色噜噜狠狠一区二区三区果冻| 精品国产一区二区三区四区四| 五月天激情综合| 色先锋资源久久综合| 久久久久久久网| 麻豆精品视频在线观看视频| 欧美系列亚洲系列| 亚洲乱码精品一二三四区日韩在线| 国产一区二区免费在线| 日韩色视频在线观看| 五月激情综合婷婷| 欧美男男青年gay1069videost | 成年人网站91| 精品一二三四区| 亚洲午夜一区二区| 日韩精品在线一区二区| 成人激情视频网站| 久88久久88久久久| 久久久国际精品| 欧美三区在线观看| 成人激情免费网站| 国内成+人亚洲+欧美+综合在线 | 国产麻豆视频精品| 久久久美女艺术照精彩视频福利播放 | 色综合久久久久综合体桃花网| 成人欧美一区二区三区视频网页| 麻豆久久久久久| 制服丝袜亚洲网站| 一区二区三区精密机械公司| 老汉av免费一区二区三区| 成人aa视频在线观看| 亚洲第一主播视频| 欧美一级二级三级乱码| 经典三级视频一区| 亚洲精品菠萝久久久久久久| 亚洲一区国产视频| 久久久久一区二区三区四区| 国产99久久久国产精品免费看| 国产精品你懂的在线欣赏| 成人听书哪个软件好| xnxx国产精品| 色综合久久六月婷婷中文字幕| 亚洲一区二区三区不卡国产欧美| 欧美一区二视频| 日韩avvvv在线播放| 琪琪久久久久日韩精品| 国产日韩欧美一区二区三区综合| 欧美一区二区在线不卡| 91丨porny丨蝌蚪视频| 激情文学综合丁香|