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

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

?? serverdlg.cpp

?? 采用DirecShow通過網絡傳輸實現遠程視頻動態播放,
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
		if (SUCCEEDED(CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
			IID_IGraphBuilder, (void **)&mGraph)))
		{
			mGraph->QueryInterface(IID_IMediaControl, (void **)&mMediaControl);
			mGraph->QueryInterface(IID_IMediaSeeking, (void **)&mSeeking);
			return TRUE;
		}
		mGraph = NULL;
	}
	return FALSE;

}

BOOL CServerDlg::AfterBuildGraph()
{
	SOCKET videosocket=mVideo.GetSocket();
	if(videosocket!=INVALID_SOCKET)
	{
		mVideoSender->SetStreamSocket(videosocket);
	}
	else
	{
		return FALSE;
		MessageBox("video socket fail");
	}
	
	SOCKET audiosocket=mAudio.GetSocket();
	if(audiosocket!=INVALID_SOCKET)
	{
		mAudioSender->SetStreamSocket(audiosocket);
	}
	else
	{
		return FALSE;
		MessageBox("audio socket fail");
	}
	

	SetDisplayWindow(mVideoWnd.m_hWnd);

	if (SUCCEEDED(mMediaControl->Run()))
	{
		mSliderTimer=SetTimer(1,2000,NULL);
		mState=PLAY;
		return TRUE;

	}

	return FALSE;
}

BOOL CServerDlg::SetDisplayWindow(HWND inWindow)
{	
	HRESULT hr = NOERROR;
	IVideoWindow  *		mVideoWindow;
	hr = mGraph->QueryInterface(IID_IVideoWindow, (void **)&mVideoWindow);
	if (mVideoWindow)
	{
		mVideoWindow->put_Visible(OAFALSE);
		mVideoWindow->put_Owner((OAHWND)inWindow);
		RECT windowRect;
		::GetClientRect(inWindow, &windowRect);
		mVideoWindow->put_Left(0);
		mVideoWindow->put_Top(0);
		mVideoWindow->put_Width(windowRect.right - windowRect.left);
		mVideoWindow->put_Height(windowRect.bottom - windowRect.top);
		mVideoWindow->put_WindowStyle(WS_CHILD|WS_CLIPCHILDREN|WS_CLIPSIBLINGS);
		mVideoWindow->put_MessageDrain((OAHWND) inWindow);
		if (inWindow != NULL)
		{
			mVideoWindow->put_Visible(OATRUE);
		}
		else
		{
			mVideoWindow->put_Visible(OAFALSE);
		}
		mVideoWindow->Release();
		return TRUE;
	}
	mVideoWindow->Release();
	return FALSE;
}

void CServerDlg::Deactivate()
{
	if (mGraph && mMediaControl)
	{		
		mMediaControl->Stop();	
	}

	KillTimer(mSliderTimer);
	mProgress.SetPos(0);
	SAFE_RELEASE(mFile);
	SAFE_RELEASE(mSplitter);
	SAFE_RELEASE(mInfinitePin);
	SAFE_RELEASE(mAudioInfinitePin);
	SAFE_RELEASE(mTempInfinitePin);
	SAFE_RELEASE(mVideoRenderer);
	SAFE_RELEASE(mAudioRenderer);
	SAFE_RELEASE(mVideoSender);
	SAFE_RELEASE(mAudioSender);
	SAFE_RELEASE(mVideoDecom);
	SAFE_RELEASE(mAudioDecom);

	SAFE_RELEASE(mGraph);
	SAFE_RELEASE(mMediaControl);
	SAFE_RELEASE(mSeeking);
}

void CServerDlg::OnDestroy() 
{
	CDialog::OnDestroy();
	
	Deactivate();
}

BOOL CServerDlg::CreateAVIFilters()
{
	HRESULT hr = NOERROR;
	BOOL  pass = FALSE;
	IPin * pOut = NULL;
	IPin * pIn  = NULL;
	IFileSourceFilter * mFileFilter;

	if (SUCCEEDED(CoCreateInstance(CLSID_MYFILESOURCEFILTER, NULL, CLSCTX_INPROC_SERVER,
		IID_IFileSourceFilter, (void **)&mFileFilter)))
	{
		WCHAR playingID[200];
		MultiByteToWideChar(CP_ACP,0,mPlayingMedia.mFilePath,-1,playingID,200);
		if(SUCCEEDED(mFileFilter->Load(playingID,NULL)))
		{
			if(SUCCEEDED(mFileFilter->QueryInterface(IID_IBaseFilter,(void **)&mFile)))
			{				
					mGraph->AddFilter(mFile,L"File");
					pass=TRUE;
			}	
		}
		mFileFilter->Release();
	}

	if(pass)
	{
		pass=FALSE;
		if (SUCCEEDED(CoCreateInstance(CLSID_MYAVISPLITTER, NULL, CLSCTX_INPROC_SERVER,
				IID_IBaseFilter, (void **)&mSplitter)))
		{
			if (SUCCEEDED(mGraph->AddFilter(mSplitter,L"Splitter")))
				pass=TRUE;
		}
	}

	if(pass)
	{
		pass=FALSE;
		if (SUCCEEDED(CoCreateInstance(CLSID_MYINFINITEPIN, NULL, CLSCTX_INPROC_SERVER,
				IID_IBaseFilter, (void **)&mInfinitePin)))
		{
			if (SUCCEEDED(mGraph->AddFilter(mInfinitePin,L"InfinitePin")))
				pass=TRUE;
		}
	}

	if(pass)
	{
		pass=FALSE;
		if (SUCCEEDED(CoCreateInstance(CLSID_VideoRenderer, NULL, CLSCTX_INPROC_SERVER,
				IID_IBaseFilter, (void **)&mVideoRenderer)))
		{
			if (SUCCEEDED(mGraph->AddFilter(mVideoRenderer,L"VideoRenderer")))
				pass=TRUE;
		}
	}

	if(pass)
	{
	
		pass=FALSE;
		mVideoSender = new CFilterNetSender(NULL, &hr);
		IBaseFilter * pFilter = NULL;
		mVideoSender->QueryInterface(IID_IBaseFilter, (void**)&pFilter);
		if (SUCCEEDED(mGraph->AddFilter(pFilter, L"Video Sender")))
	        pass=TRUE;
	}

	if(pass)
	{
		
		pass=FALSE;
		if (SUCCEEDED(CoCreateInstance(CLSID_MYINFINITEPIN, NULL, CLSCTX_INPROC_SERVER,
				IID_IBaseFilter, (void **)&mTempInfinitePin)))
		{
			if (SUCCEEDED(mGraph->AddFilter(mTempInfinitePin,L"TempInfinitePin")))
				pass=TRUE;
		}
	}

	if(pass)
	{
		pass=FALSE;
		if (SUCCEEDED(CoCreateInstance(CLSID_DSoundRender, NULL, CLSCTX_INPROC_SERVER,
				IID_IBaseFilter, (void **)&mAudioRenderer)))
		{
			if (SUCCEEDED(mGraph->AddFilter(mAudioRenderer,L"AudioRenderer")))
				pass=TRUE;
		}
	}

	if(pass)
	{
		pass=FALSE;
		mAudioSender = new CFilterNetSender(NULL, &hr);
		IBaseFilter * pFilter = NULL;
		mAudioSender->QueryInterface(IID_IBaseFilter, (void**)&pFilter);
		if (SUCCEEDED(mGraph->AddFilter(pFilter, L"Audio Sender")))
	        pass=TRUE;
	}

	if(pass)
	{
		pOut=UFilterUtils::GetPin(mFile,FALSE,"Output");
		pIn=UFilterUtils::GetPin(mSplitter,TRUE,"input");
		if (SUCCEEDED(mGraph->Connect(pOut,pIn)))
			pass=TRUE;
	}

	if(pass)
	{
		pOut=UFilterUtils::GetPin(mSplitter,FALSE,"Stream");
		pIn=UFilterUtils::GetPin(mInfinitePin,TRUE,"Input");
		if (SUCCEEDED(mGraph->Connect(pOut,pIn)))
			pass=TRUE;
	}

	if(pass)
	{
		pass=FALSE;
		pOut=UFilterUtils::GetPin(mInfinitePin,FALSE,"Output1");
		pIn=UFilterUtils::GetPin(mVideoRenderer,TRUE,"Input");
		if (SUCCEEDED(mGraph->Connect(pOut,pIn)))
			pass=TRUE;
		
	}

	if(pass)
	{
		pass=FALSE;
		pOut=UFilterUtils::GetPin(mInfinitePin,FALSE,"Output2");
		pIn=mVideoSender->GetPin(0);
		if (SUCCEEDED(mGraph->Connect(pOut,pIn)))
			pass=TRUE;
	}

	if(pass)
	{
		
		pass=FALSE;
		if (SUCCEEDED(CoCreateInstance(CLSID_MYINFINITEPIN, NULL, CLSCTX_INPROC_SERVER,
				IID_IBaseFilter, (void **)&mAudioInfinitePin)))
		{
			if (SUCCEEDED(mGraph->AddFilter(mAudioInfinitePin,L"AudioInfinitePin")))
				pass=TRUE;
		}
	}
	if(pass)
	{
		pass=FALSE;
		pOut=UFilterUtils::GetPin(mSplitter,FALSE,"01");
		pIn=UFilterUtils::GetPin(mAudioInfinitePin,TRUE,"Input");
		if (SUCCEEDED(mGraph->Connect(pOut,pIn)))
		pass=TRUE;
	}

		if(pass)
	{
		pass=FALSE;
		pOut=UFilterUtils::GetPin(mAudioInfinitePin,FALSE,"Output1");
		pIn=UFilterUtils::GetPin(mAudioRenderer,TRUE,"Audio");
		if (SUCCEEDED(mGraph->Connect(pOut,pIn)))
			pass=TRUE;
	}

	if(pass)
	{
		pass=FALSE;
		pOut=UFilterUtils::GetPin(mAudioInfinitePin,FALSE,"Output2");
		pIn=mAudioSender->GetPin(0);
		if (SUCCEEDED(mGraph->Connect(pOut,pIn)))
			pass=TRUE;
	}
	return pass;
}

BOOL CServerDlg::CreateREALFilters()
{
	HRESULT hr = NOERROR;
	BOOL  pass = FALSE;
	IPin * pOut = NULL;
	IPin * pIn  = NULL;
	IFileSourceFilter * mFileFilter;

	if (SUCCEEDED(CoCreateInstance(CLSID_MYFILESOURCEFILTER, NULL, CLSCTX_INPROC_SERVER,
		IID_IFileSourceFilter, (void **)&mFileFilter)))
	{
		WCHAR playingID[200];
		MultiByteToWideChar(CP_ACP,0,mPlayingMedia.mFilePath,-1,playingID,200);
		if(SUCCEEDED(mFileFilter->Load(playingID,NULL)))
		{
			if(SUCCEEDED(mFileFilter->QueryInterface(IID_IBaseFilter,(void **)&mFile)))
			{				
					mGraph->AddFilter(mFile,L"File");
					pass=TRUE;
			}	
		}
		mFileFilter->Release();
	}

	if(pass)
	{
		pass=FALSE;
		if (SUCCEEDED(CoCreateInstance(CLSID_MYREALSPLITTER, NULL, CLSCTX_INPROC_SERVER,
				IID_IBaseFilter, (void **)&mSplitter)))
		{
			if (SUCCEEDED(mGraph->AddFilter(mSplitter,L"Splitter")))
				pass=TRUE;
		}
	}

	if(pass)
	{
		
		pass=FALSE;
		if (SUCCEEDED(CoCreateInstance(CLSID_MYINFINITEPIN, NULL, CLSCTX_INPROC_SERVER,
				IID_IBaseFilter, (void **)&mInfinitePin)))
		{
			if (SUCCEEDED(mGraph->AddFilter(mInfinitePin,L"InfinitePin")))
				pass=TRUE;
		}
	}

	if(pass)
	{
		pass=FALSE;
		if (SUCCEEDED(CoCreateInstance(CLSID_VideoRenderer, NULL, CLSCTX_INPROC_SERVER,
				IID_IBaseFilter, (void **)&mVideoRenderer)))
		{
			if (SUCCEEDED(mGraph->AddFilter(mVideoRenderer,L"VideoRenderer")))
				pass=TRUE;
		}
	}

	if(pass)
	{
	
		pass=FALSE;
		mVideoSender = new CFilterNetSender(NULL, &hr);
		IBaseFilter * pFilter = NULL;
		mVideoSender->QueryInterface(IID_IBaseFilter, (void**)&pFilter);
		if (SUCCEEDED(mGraph->AddFilter(pFilter, L"Video Sender")))
	        pass=TRUE;
	}

	if(pass)
	{
		
		pass=FALSE;
		if (SUCCEEDED(CoCreateInstance(CLSID_MYINFINITEPIN, NULL, CLSCTX_INPROC_SERVER,
				IID_IBaseFilter, (void **)&mTempInfinitePin)))
		{
			if (SUCCEEDED(mGraph->AddFilter(mTempInfinitePin,L"TempInfinitePin")))
				pass=TRUE;
		}
	}
	if(pass)
	{
		
		pass=FALSE;
		if (SUCCEEDED(CoCreateInstance(CLSID_MYREALAUDIODECOM, NULL, CLSCTX_INPROC_SERVER,
				IID_IBaseFilter, (void **)&mAudioDecom)))
		{
			if (SUCCEEDED(mGraph->AddFilter(mAudioDecom,L"AudioDeocm")))
				pass=TRUE;
		}
	}


	if(pass)
	{
		pass=FALSE;
		if (SUCCEEDED(CoCreateInstance(CLSID_DSoundRender, NULL, CLSCTX_INPROC_SERVER,
				IID_IBaseFilter, (void **)&mAudioRenderer)))
		{
			if (SUCCEEDED(mGraph->AddFilter(mAudioRenderer,L"AudioRenderer")))
				pass=TRUE;
		}
	}

	if(pass)
	{
		pass=FALSE;
		mAudioSender = new CFilterNetSender(NULL, &hr);
		IBaseFilter * pFilter = NULL;
		mAudioSender->QueryInterface(IID_IBaseFilter, (void**)&pFilter);
		if (SUCCEEDED(mGraph->AddFilter(pFilter, L"Audio Sender")))
	        pass=TRUE;
	}

	if(pass)
	{
		pOut=UFilterUtils::GetPin(mFile,FALSE,"Output");
		pIn=UFilterUtils::GetPin(mSplitter,TRUE,"Input");
		if (SUCCEEDED(mGraph->Connect(pOut,pIn)))
			pass=TRUE;
	}
	if(pass)
	{
		pOut=UFilterUtils::GetPin(mSplitter,FALSE,"Output 01");
		pIn=UFilterUtils::GetPin(mInfinitePin,TRUE,"Input");
		if (SUCCEEDED(mGraph->Connect(pOut,pIn)))
			pass=TRUE;
	}

	if(pass)
	{
		pass=FALSE;
		pOut=UFilterUtils::GetPin(mInfinitePin,FALSE,"Output1");
		pIn=UFilterUtils::GetPin(mVideoRenderer,TRUE,"Input");
		if (SUCCEEDED(mGraph->Connect(pOut,pIn)))
			pass=TRUE;
		
	}

	if(pass)
	{
		pass=FALSE;
		pOut=UFilterUtils::GetPin(mInfinitePin,FALSE,"Output2");
		pIn=mVideoSender->GetPin(0);
		if (SUCCEEDED(mGraph->Connect(pOut,pIn)))
			pass=TRUE;
	}

	if(pass)
	{
		
		pass=FALSE;
		if (SUCCEEDED(CoCreateInstance(CLSID_MYINFINITEPIN, NULL, CLSCTX_INPROC_SERVER,
				IID_IBaseFilter, (void **)&mAudioInfinitePin)))
		{
			if (SUCCEEDED(mGraph->AddFilter(mAudioInfinitePin,L"AudioInfinitePin")))
				pass=TRUE;
		}
	}
	if(pass)
	{
		pass=FALSE;
		pOut=UFilterUtils::GetPin(mSplitter,FALSE,"Output 00");
		pIn=UFilterUtils::GetPin(mAudioInfinitePin,TRUE,"Input");
		if (SUCCEEDED(mGraph->Connect(pOut,pIn)))
			pass=TRUE;
	}

	if(pass)
	{
		pass=FALSE;
		pOut=UFilterUtils::GetPin(mAudioInfinitePin,FALSE,"Output1");
		pIn=UFilterUtils::GetPin(mAudioDecom,TRUE,"XForm In");
		if (SUCCEEDED(mGraph->Connect(pOut,pIn)))
			pass=TRUE;
	}
		if(pass)
	{
		pass=FALSE;
		pOut=UFilterUtils::GetPin(mAudioDecom,FALSE,"XForm Out");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线亚洲高清视频| 国产人久久人人人人爽| 91豆麻精品91久久久久久| 成人晚上爱看视频| 成人免费视频国产在线观看| 国产成人av电影| 岛国av在线一区| 成人av免费在线| 99精品黄色片免费大全| 99亚偷拍自图区亚洲| 91美女蜜桃在线| aaa欧美色吧激情视频| 91欧美激情一区二区三区成人| 99精品视频在线免费观看| 不卡电影一区二区三区| 99精品偷自拍| 欧美日韩色一区| 日韩欧美国产一区二区三区| 精品国产乱码久久久久久牛牛| 久久麻豆一区二区| 中文字幕在线不卡国产视频| 亚洲精品视频在线观看网站| 亚洲韩国一区二区三区| 日韩高清中文字幕一区| 韩国中文字幕2020精品| 成人永久免费视频| 色综合久久综合中文综合网| 欧美日韩精品一区二区天天拍小说| 7777精品伊人久久久大香线蕉完整版| 日韩久久久精品| 亚洲国产电影在线观看| 亚洲裸体xxx| 天堂蜜桃一区二区三区| 国产精品亚洲专一区二区三区| www.视频一区| 538prom精品视频线放| 精品福利一二区| 最新日韩av在线| 五月综合激情网| 国产一区视频在线看| 99国产精品视频免费观看| 欧美精品乱码久久久久久按摩 | 欧美一二区视频| 久久久久久免费毛片精品| 亚洲女同女同女同女同女同69| 亚洲国产美女搞黄色| 麻豆精品国产传媒mv男同| 粉嫩高潮美女一区二区三区| 欧美在线小视频| 国产亚洲短视频| 午夜精品免费在线| 国产精品一区二区三区99| 在线亚洲人成电影网站色www| 日韩欧美综合在线| 亚洲男同性视频| 久久99精品久久久久婷婷| 一本一道综合狠狠老| 精品国产乱码久久久久久久久| 亚洲免费在线电影| 国产美女精品人人做人人爽| 欧美日韩三级在线| 国产精品不卡在线| 美女网站一区二区| 在线精品亚洲一区二区不卡| 久久亚洲精华国产精华液| 午夜激情一区二区三区| 91视频在线看| 久久亚洲欧美国产精品乐播 | 欧美性大战久久| 国产免费观看久久| 日韩精品一级二级| 色偷偷一区二区三区| 久久美女高清视频| 蜜桃视频一区二区三区| 欧美亚洲一区二区在线观看| 欧美国产综合色视频| 极品少妇一区二区| 777奇米四色成人影色区| 一区二区三区精品| 波多野结衣中文字幕一区 | 亚洲视频一区二区在线| 国内一区二区在线| 9191精品国产综合久久久久久| 亚洲视频一区在线| 成人中文字幕合集| 久久精品夜夜夜夜久久| 美女在线视频一区| 91精品国产乱码| 亚洲成a人v欧美综合天堂下载| 色综合久久天天综合网| 国产精品久久三区| 国产69精品久久久久毛片| 精品免费视频一区二区| 看电影不卡的网站| 欧美一级夜夜爽| 视频在线观看国产精品| 欧美人xxxx| 亚洲成人自拍一区| 欧美性极品少妇| 亚洲国产欧美一区二区三区丁香婷| 一本大道综合伊人精品热热| 日韩美女精品在线| 91在线播放网址| 一区在线中文字幕| 91欧美激情一区二区三区成人| 亚洲欧美在线观看| 91亚洲精华国产精华精华液| 中文字幕一区二区三区不卡| 99久久精品99国产精品| 亚洲欧美aⅴ...| 在线观看亚洲成人| 午夜伦理一区二区| 日韩限制级电影在线观看| 蜜桃精品在线观看| 精品欧美黑人一区二区三区| 国产伦理精品不卡| 欧美韩国一区二区| 色综合激情五月| 午夜在线成人av| 日韩欧美高清在线| 国产高清无密码一区二区三区| 国产精品私人影院| 日本乱人伦aⅴ精品| 亚洲成av人**亚洲成av**| 日韩一区二区免费在线观看| 国产综合一区二区| 国产精品久久久久久久蜜臀| 日本道色综合久久| 视频一区欧美精品| 精品99999| 99麻豆久久久国产精品免费优播| 亚洲日穴在线视频| 欧美精品aⅴ在线视频| 国内一区二区在线| 亚洲私人影院在线观看| 欧美老人xxxx18| 国产一区不卡精品| 综合网在线视频| 6080亚洲精品一区二区| 国产一区二区三区日韩| 亚洲乱码日产精品bd | 午夜精品久久一牛影视| 精品国产一区二区三区av性色| 成人丝袜高跟foot| 肉丝袜脚交视频一区二区| 久久色.com| 91豆麻精品91久久久久久| 久久9热精品视频| 亚洲欧洲色图综合| 日韩一区二区视频| www.欧美日韩国产在线| 日本不卡123| 国产精品全国免费观看高清| 欧美人与禽zozo性伦| 成人美女在线视频| 日韩精品一二区| 国产精品天美传媒| 欧美一区二区三区色| av电影在线观看一区| 久久不见久久见免费视频7| 综合久久久久综合| 精品国免费一区二区三区| 色偷偷成人一区二区三区91| 久久99深爱久久99精品| 亚洲国产精品麻豆| 国产亚洲一区字幕| 91精品麻豆日日躁夜夜躁| 99久久综合狠狠综合久久| 麻豆91免费看| 亚洲综合精品自拍| 国产精品久久久久一区| 日韩欧美电影一二三| 91福利小视频| 9l国产精品久久久久麻豆| 国产一区二区三区不卡在线观看 | 久久亚洲私人国产精品va媚药| 欧美性猛交一区二区三区精品| 成人黄色777网| 久久99国产精品麻豆| 丝袜美腿成人在线| 一区二区三区免费网站| 国产精品免费av| 国产日韩欧美高清在线| 日韩女优av电影在线观看| 欧美日韩国产bt| 欧美综合在线视频| 99久久精品一区二区| 国产风韵犹存在线视精品| 美女视频免费一区| 石原莉奈一区二区三区在线观看| 亚洲欧美日韩综合aⅴ视频| 中文字幕欧美日本乱码一线二线 | 麻豆精品国产91久久久久久| 五月婷婷激情综合| 亚洲一区二区免费视频| 一区二区三区欧美日韩| 亚洲天堂福利av| 中文字幕一区二区三区四区不卡 | 亚洲国产精品精华液ab| 久久久亚洲午夜电影|