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

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

?? cmediainfo.cpp

?? 采用DirecShow通過網絡傳輸實現遠程視頻動態播放,
?? CPP
字號:
//
// CMediaInfo.cpp
//

/*-----------------------------------------------------*\
			HQ Tech, Make Technology Easy!       
 More information, please go to http://hqtech.nease.net.
/*-----------------------------------------------------*/
#include <streams.h>
#include "stdafx.h"
#include "CMediaInfo.h"
#include "GlobalDefs.h"

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

IMPLEMENT_SERIAL(CMediaInfo, CObject, 1)
/////////////////////////////////////////////////////////////////////////////
CMediaInfo::CMediaInfo()
{
	mFilePath[0]  = '\0';
	mProgramId    = 0;
	mFileType     = 0;
	mFileSize     = 0;
}

CMediaInfo::CMediaInfo(const CMediaInfo& inMedia)
{
	Clone(inMedia);
}

CMediaInfo::~CMediaInfo()
{
}

void CMediaInfo::Serialize(CArchive& ar)
{
	CObject::Serialize(ar); 

	CString str;
	if (ar.IsStoring())
	{
		str = mFilePath;
		ar << str;
		ar << mProgramId;
		ar << mFileType;
		ar << mFileSize;

	}
	else
	{
		ar >> str;
		strcpy(mFilePath, str);
		ar >> mProgramId;
		ar >> mFileType;
		ar >> mFileSize;
	}
}

CMediaInfo& CMediaInfo::operator=(const CMediaInfo& inMedia)
{
	Clone(inMedia);
	return *this;
}

void CMediaInfo::Clone(const CMediaInfo& inMedia)
{
	strcpy(mFilePath, inMedia.mFilePath);
	mProgramId    = inMedia.mProgramId;
	mFileType     = inMedia.mFileType;
	mFileSize     = inMedia.mFileSize;
}

void CMediaInfo::CopyTo(struct Program_List * outInfo)
{
	memcpy(outInfo->file_path, mFilePath, MAX_FILE_PATH);
	outInfo->pid		   = mProgramId;
	outInfo->file_type     = mFileType;
	outInfo->file_size     = mFileSize;
}

void CMediaInfo::CopyFrom(struct Program_List * inInfo)
{
	memcpy(mFilePath, inInfo->file_path, MAX_FILE_PATH);
	mProgramId    = inInfo->pid;
	mFileType     = inInfo->file_type;
	mFileSize     = inInfo->file_size;
}

BOOL CMediaInfo::SetFilePath(const char * inFile)
{
	if (ParseFile(inFile))
	{
		strcpy(mFilePath, inFile);
		return TRUE;
	}
	return FALSE;
}

void CMediaInfo::SetProgramId(long inPID)
{
	mProgramId = inPID;
}

BOOL CMediaInfo::ParseFile(const char * inFile)
{
	// At first, get the file size
	mFileSize = 0;
	CFileStatus  fileStatus;
	if (CFile::GetStatus(inFile, fileStatus))
	{
		mFileSize = fileStatus.m_size;
	}

	// Get the file extension
	CString strExt = strrchr(inFile, '.');
	if (strExt.CompareNoCase(".mpeg") == 0 ||
		strExt.CompareNoCase(".mpg") == 0 ||
		strExt.CompareNoCase(".vob") == 0)
	{
		// Further checking...
		CheckMpegFile(inFile);
	}
	else if (strExt.CompareNoCase(".rm") == 0||
		strExt.CompareNoCase(".rmvb") == 0)
	{
		// Further checking...
		mFileType = FT_REAL;
	}
	else if (strExt.CompareNoCase(".avi") == 0)
	{
		// Further checking...
		mFileType = FT_AVI;
	}
	else if (strExt.CompareNoCase(".mp3") == 0)
	{
		mFileType = FT_MP3;
	}
	else
	{
		AfxMessageBox("This file type is not supported!");
		return FALSE;
	}
	
	return TRUE;
}

// Try to connect to microsoft mpeg1 stream splitter.
// If connection succeeded, mpeg1 file. Otherwise, mpeg2 file.
void CMediaInfo::CheckMpegFile(const char * inFile)
{


	mFileType = FT_MPEG1;      // Default
	IGraphBuilder * pBuilder = NULL;
	CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
		IID_IGraphBuilder, (void **) &pBuilder);
	if (pBuilder)
	{
		// Create a file source filter
		IBaseFilter * pSource = NULL;
		WCHAR  wcFilePath[MAX_PATH];
		MultiByteToWideChar(CP_ACP, 0, inFile, -1, wcFilePath, MAX_PATH);
		pBuilder->AddSourceFilter(wcFilePath, L"Source", &pSource);
		pSource->Release();

		// Create microsoft MPEG-1 Stream Splitter
		IBaseFilter * pSplitter = NULL;
		CoCreateInstance(CLSID_MPEG1Splitter , NULL, CLSCTX_INPROC_SERVER,
			IID_IBaseFilter, (void **)&pSplitter);
		pBuilder->AddFilter(pSplitter, L"MPEG-1 Splitter");
		pSplitter->Release();

		// Try to connect them...
		IPin * pOut = GetPinByDirection(pSource, PINDIR_OUTPUT);
		IPin * pIn  = GetPinByDirection(pSplitter, PINDIR_INPUT);
		HRESULT hr  = pBuilder->ConnectDirect(pOut, pIn, NULL);
		if (FAILED(hr))
		{
			mFileType = FT_MPEG2; 
			// Attention here! 1M data at the end of the file!
		}

		pBuilder->RemoveFilter(pSplitter);
		pBuilder->RemoveFilter(pSource);
		pBuilder->Release();
	}

}

IPin * CMediaInfo::GetPinByDirection(IBaseFilter * inFilter, 
									 PIN_DIRECTION inDirection)
{
	IPin * foundPin = NULL;
	if (inFilter)
	{
		IEnumPins * pinEnum = 0;
		if (SUCCEEDED(inFilter->EnumPins(&pinEnum)))
		{
			pinEnum->Reset();

			IPin * pin = 0;
			ULONG fetchCount = 0;
			while (!foundPin && SUCCEEDED(pinEnum->Next(1, &pin, &fetchCount)) && 
				fetchCount)
			{
				if (pin)
				{
					PIN_INFO pinInfo;
					if (SUCCEEDED(pin->QueryPinInfo(&pinInfo)))
					{
						pinInfo.pFilter->Release();
						if (pinInfo.dir == inDirection)
						{
							foundPin = pin;
						}
					}
					// If found pin, we keep pin reference.
					// If not, we release it here.
					if (!foundPin)
					{
						pin->Release();
					}
					pin = 0;
				}
			}
			pinEnum->Release();
		}
	}

	// We don't keep outstanding reference count
	if (foundPin)
	{
		foundPin->Release();
	}
	return foundPin;
}

//DEL void CMediaInfo::CheckAviFile(const char * inFile)
//DEL {
//DEL 	CAviParser parser;
//DEL 	if (parser.SetAviFile(inFile))
//DEL 	{
//DEL 		mFileType = FT_AVI;
//DEL 
//DEL 		parser.Parse();
//DEL 		mCheckOffset2 = (long) parser.m_idx1Pos;
//DEL 	}
//DEL }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩视频一区二区三区在线播放| 在线观看日韩高清av| 日韩欧美在线观看一区二区三区| 成人免费一区二区三区视频| 91免费视频观看| 尤物av一区二区| 国产乱子伦一区二区三区国色天香| 在线亚洲一区观看| 午夜av一区二区三区| 日韩欧美中文一区二区| 国精品**一区二区三区在线蜜桃| 精品对白一区国产伦| 成人禁用看黄a在线| 亚洲一区视频在线观看视频| 成人福利视频网站| 亚洲国产精品一区二区久久恐怖片 | 一本色道亚洲精品aⅴ| 午夜久久久久久| 久久精品欧美一区二区三区不卡| 不卡的看片网站| 奇米影视一区二区三区| 国产欧美一区二区精品忘忧草| 色系网站成人免费| 日本欧美韩国一区三区| 亚洲欧洲一区二区三区| 欧美xxxxx牲另类人与| 在线观看一区日韩| 丰满白嫩尤物一区二区| 国产一区久久久| 日韩精品91亚洲二区在线观看| 国产精品超碰97尤物18| 日韩一级在线观看| 91精品欧美一区二区三区综合在| 成人h动漫精品| 黄色日韩网站视频| 久久国产精品免费| 欧美a级一区二区| 免费观看日韩电影| 亚洲成人激情自拍| 婷婷中文字幕综合| 亚洲蜜臀av乱码久久精品| 欧美国产一区二区| 亚洲婷婷国产精品电影人久久| 久久影院视频免费| 欧美一区午夜视频在线观看| 91麻豆精品国产91久久久久| 欧美日韩成人在线| 欧美tk—视频vk| 国产精品久久毛片av大全日韩| 亚洲日本欧美天堂| 亚洲第一搞黄网站| 高清日韩电视剧大全免费| 成人h动漫精品一区二区| 欧美精品丝袜中出| 亚洲日本成人在线观看| 免费观看日韩av| 国产福利电影一区二区三区| 色综合色狠狠天天综合色| 91精品国产一区二区| 国产亚洲成av人在线观看导航| 综合网在线视频| 国内精品久久久久影院色| 精品一区二区在线播放| 91国内精品野花午夜精品| 国产三级欧美三级日产三级99| 亚洲黄一区二区三区| 国产乱码精品1区2区3区| 欧美午夜在线观看| 亚洲区小说区图片区qvod| 韩国女主播成人在线| 欧美美女喷水视频| 亚洲国产中文字幕| 97精品久久久午夜一区二区三区| 精品福利一二区| 国内精品久久久久影院一蜜桃| 91精品福利在线一区二区三区 | 欧美羞羞免费网站| 一区二区三区蜜桃| 国产伦精品一区二区三区视频青涩| 欧美三区在线视频| 亚洲欧美日韩一区| 一道本成人在线| 亚洲一区二区中文在线| 欧美日韩大陆一区二区| 亚洲黄色片在线观看| 欧美日韩一区二区三区四区五区| 亚洲高清视频的网址| 91麻豆精品国产无毒不卡在线观看 | 26uuu久久天堂性欧美| 久久99国产精品尤物| 久久久久久麻豆| 91在线精品一区二区| 亚洲国产精品天堂| 久久久久久97三级| 91成人免费网站| 亚洲国产精品视频| 国产午夜精品久久久久久免费视| av高清不卡在线| 美女尤物国产一区| 亚洲欧洲精品天堂一级| 欧美日韩综合色| 国产成人av影院| 日韩**一区毛片| 亚洲欧美精品午睡沙发| 精品国产一区a| 欧美一区二区三区视频免费 | 精品国产乱码久久久久久闺蜜 | 成人免费在线观看入口| 欧美日韩精品福利| 成人免费视频一区| 久久国产精品第一页| 一区二区三区欧美日| 国产精品毛片久久久久久久| 日韩精品专区在线影院观看 | 国产经典欧美精品| 精彩视频一区二区三区| 国产一区二区三区免费观看| 蜜桃视频一区二区三区在线观看| 国产亚洲女人久久久久毛片| 国产日韩一级二级三级| 一区二区三区四区乱视频| 亚洲精品成人悠悠色影视| 亚洲成av人片观看| 美脚の诱脚舐め脚责91| 国产成人在线电影| 欧美三级蜜桃2在线观看| 欧美一区二区网站| 国产亚洲欧美激情| 日韩不卡免费视频| 91视频国产资源| 日韩欧美久久一区| 亚洲欧美日本在线| 国产一区免费电影| 欧美视频第二页| 国产精品国产自产拍高清av王其| 午夜不卡在线视频| 色综合色综合色综合| 久久久久久免费网| 日本午夜精品视频在线观看| av激情成人网| 久久九九影视网| 麻豆免费精品视频| 制服丝袜亚洲网站| 亚洲一区在线看| 色综合久久久久久久久| 国产精品久久久久影院| 国产真实乱对白精彩久久| 欧美一级免费大片| 天堂蜜桃91精品| 欧美丰满高潮xxxx喷水动漫| 亚洲一区二区视频在线| 欧美在线小视频| 亚洲一区在线观看免费| 在线观看一区二区视频| 亚洲欧美日韩国产另类专区| 色94色欧美sute亚洲线路一ni| 中文字幕日韩欧美一区二区三区| 国产91清纯白嫩初高中在线观看| 久久久激情视频| 91在线码无精品| 日本在线不卡一区| 国产日韩三级在线| 日本韩国精品一区二区在线观看| 夜色激情一区二区| 91精品国产乱码久久蜜臀| 国产制服丝袜一区| 亚洲婷婷在线视频| 日韩欧美国产综合一区| 波多野结衣中文字幕一区| 亚洲一区日韩精品中文字幕| 91精品久久久久久蜜臀| 欧美日韩亚洲综合| 丁香一区二区三区| 亚洲成av人影院| 国产精品久久三| xvideos.蜜桃一区二区| 欧美在线free| 成人激情图片网| 激情国产一区二区 | 伊人开心综合网| 国产日韩欧美麻豆| 91精品国产免费| 91蝌蚪porny成人天涯| 免费看黄色91| 亚洲高清中文字幕| 亚洲精品视频在线观看免费| 国产精品久久久久久户外露出| 欧美一区二区三区人| 欧美性xxxxx极品少妇| 欧美亚一区二区| 在线观看www91| 欧美日本不卡视频| 欧美精品三级日韩久久| 欧美高清dvd| 欧美一卡二卡在线观看| 日韩午夜激情免费电影| 精品久久久久一区二区国产| 国产亚洲午夜高清国产拍精品| 久久色视频免费观看| 久久精品亚洲一区二区三区浴池|