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

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

?? clientdlg.cpp

?? 采用DirecShow通過網絡傳輸實現遠程視頻動態播放,
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

void CClientDlg::OnBtnPlay() 
{
	if(mControll.IsConnected())
	{
		if(mState=STOP)
		{
			int index = mProgramListCtrl.GetNextItem(-1, LVNI_SELECTED);
			if (index >= 0)
			{
				CString pid = mProgramListCtrl.GetItemText(index, 3);
				mPlayingPID = atol(pid);
				CMediaInfo     media;
				POSITION pos = mPrgrmList.GetHeadPosition();
				while (pos)
				{
					media  = mPrgrmList.GetNext(pos);
					if (media.mProgramId == mPlayingPID)
					{
						mMediaType=media.mFileType;
						break;
					}
				}
				Deactivate();
				if(ConnectVideoSocket()&&ConnectAudioSocket())
				{
					SendMediaControlCommand(Cmd_RequestPlay);
					Activate();
				}
				else
				{
					MessageBox("fail to connect!");
				}
			}
		}
		else if(mState=PAUSE)
		{
			mMediaControl->Run();
			mState=PLAY;
			SendSimpleCommand(Cmd_RequestResume);
		}
	}
}
BOOL CClientDlg::SendMediaControlCommand(long inCommand)
{
	if(mControll.IsConnected())
	{
		char  buf[MAX_COMMAND_SIZE];
		long  len  = sizeof(Net_Command) + sizeof(Media_Control);
		long * pCmd = (long *) buf;
		*pCmd = inCommand;
		*pCmd = htonl(*pCmd);
		pCmd++;
		Media_Control * pData = (Media_Control *) pCmd;
		pData->program_id = mPlayingPID;
		pData->my_hton();
		return mControll.Send(buf, len);
	}
	return FALSE;
}

BOOL CClientDlg::ConnectVideoSocket()
{

	if(	(!mVideo.ConnectTo(mServerIP,SERVER_VIDEO_PORT)))
	{
		MessageBox("Fail to connect to video socket");
		return FALSE;
	}
	return TRUE;

}

BOOL CClientDlg::ConnectAudioSocket()
{

	if(	(!mAudio.ConnectTo(mServerIP,SERVER_AUDIO_PORT)))
	{
		MessageBox("Fail to connect to audio socket");
		return FALSE;
	}
	return TRUE;

}

BOOL CClientDlg::Activate()
{
	BOOL pass=CreateGraph();
	if(pass)
	{		
		pass=CreateFilters();
	}
	if(pass)
	{
		pass=AfterBuildGraph();
	}
	return pass;
}

BOOL CClientDlg::CreateGraph()
{
	if (!mGraph)
	{
		if (SUCCEEDED(CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
			IID_IGraphBuilder, (void **)&mGraph)))
		{
			mGraph->QueryInterface(IID_IMediaControl, (void **)&mMediaControl);
			return TRUE;
		}
		mGraph = NULL;
	}
	return FALSE;

}

BOOL CClientDlg::CreateFilters()
{
	HRESULT hr = NOERROR;
	BOOL  pass = FALSE;
	IBaseFilter * pFilter = NULL;
	mVideoReceiver = new CFilterNetReceiver(NULL, &hr);
	mVideoReceiver->QueryInterface(IID_IBaseFilter, (void**)&pFilter);
	if (SUCCEEDED(mGraph->AddFilter(pFilter, L"Video Receiver")))
	{
		mVideoReceiver->AddMsgReceiver(this);
		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;
		mAudioReceiver = new CFilterNetReceiver(NULL, &hr);
		mAudioReceiver->QueryInterface(IID_IBaseFilter, (void**)&pFilter);
		if (SUCCEEDED(mGraph->AddFilter(pFilter, L"Audio Receiver")))
		{
			mAudioReceiver->AddMsgReceiver(this);
			pass=TRUE;
		}
	}
	if(mPlayingPID==FT_REAL)
	{
		if(pass)
		{
			pass=FALSE;
			if (SUCCEEDED(CoCreateInstance(CLSID_MYREALAUDIODECOM, NULL, CLSCTX_INPROC_SERVER,
					IID_IBaseFilter, (void **)&mAudioDecom)))
			{
				if (SUCCEEDED(mGraph->AddFilter(mAudioDecom,L"AudioDecom")))
					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;
		}
	}
	return pass;

}

BOOL CClientDlg::AfterBuildGraph()
{
	IMediaFilter *pMediaFilter = 0;
	mGraph->QueryInterface(IID_IMediaFilter, (void**)&pMediaFilter);
    pMediaFilter->SetSyncSource(NULL);
	pMediaFilter->Release();

	SOCKET videosocket=mVideo.GetSocket();
	if(videosocket!=INVALID_SOCKET)
	{
		mVideoReceiver->SetStreamSocket(videosocket);
		mVideoReceiver->StartReceiving();
	}else
	{
		MessageBox("video socket fail");
	}	

	SOCKET audiosocket=mAudio.GetSocket();
	if(audiosocket!=INVALID_SOCKET)
	{
		mAudioReceiver->SetStreamSocket(audiosocket);
		mAudioReceiver->StartReceiving();
	}
	else
	{
		MessageBox("audio socket fail");
	}	
	return TRUE;

}

BOOL CClientDlg::CompleteVideoReceivingGraph()
{
	BOOL   pass = FALSE;
	IPin * pOut = NULL;
	IPin * pIn  = NULL;

	pOut = mVideoReceiver->GetPin(0);
    pIn=UFilterUtils::GetPin(mVideoRenderer,TRUE,"Input");
    if (SUCCEEDED(mGraph->Connect(pOut,pIn)))
	{
		pass=TRUE;
	}
	SetDisplayWindow(mVideoWnd.m_hWnd);

	mVideoIsOK=TRUE;
	if(mVideoIsOK&&mAudioIsOK)
	{
		mMediaControl->Run();
	    mState=PLAY;
	}
	return TRUE;
}

BOOL CClientDlg::CompleteAudioReceivingGraph()
{
	BOOL   pass = FALSE;
	IPin * pOut = NULL;
	IPin * pIn  = NULL;

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

	mAudioIsOK=TRUE;
	if(mVideoIsOK&&mAudioIsOK)
	{
		mMediaControl->Run();
	    mState=PLAY;
	}
	return TRUE;
}

BOOL CClientDlg::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 CClientDlg::Deactivate()
{

	if (mGraph && mMediaControl)
	{		
		mMediaControl->Stop();	
	}

	mSliderTimer.SetPos(0);
	SAFE_RELEASE(mVideoRenderer);
	SAFE_RELEASE(mAudioRenderer);
	SAFE_RELEASE(mVideoReceiver);
	SAFE_RELEASE(mAudioReceiver);
	SAFE_RELEASE(mVideoDecom);
	SAFE_RELEASE(mAudioDecom);

	SAFE_RELEASE(mGraph);
	SAFE_RELEASE(mMediaControl);
	mState=STOP;

}

void CClientDlg::OnDestroy() 
{
	SendSimpleCommand(Cmd_RequestTCPDisconnect);
	mControll.Detach();
	CDialog::OnDestroy();
	
	Deactivate();	
}

void CClientDlg::OnBtnStop() 
{
	Deactivate();
	SendSimpleCommand(Cmd_RequestStop);
}

void CClientDlg::OnBtndisconnect() 
{
	SendSimpleCommand(Cmd_RequestTCPDisconnect);
	mControll.Detach();
	mBtnDisconnect.EnableWindow(FALSE);
	mBtnConnect.EnableWindow(TRUE);
	
}

void CClientDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	SendProgress(mSliderTimer.GetPos());	
	CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}

void CClientDlg::SendProgress(int pos)
{
	if(mControll.IsConnected())
	{
		char  buf[MAX_COMMAND_SIZE];
		long  len  = sizeof(Net_Command) + sizeof(Media_Progress);
		long * pCmd = (long *) buf;
		*pCmd = Cmd_SetProgress;
		*pCmd = htonl(*pCmd);
		pCmd++;
		Media_Progress * pData = (Media_Progress *) pCmd;
		pData->program_Progress = pos;
		pData->my_hton();
		mControll.Send(buf, len);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美激情在线| 91免费观看国产| 一区二区三区在线视频免费观看| 欧美色图激情小说| 9l国产精品久久久久麻豆| 日日噜噜夜夜狠狠视频欧美人| 久久婷婷国产综合精品青草| 在线视频你懂得一区二区三区| 蜜臀av一区二区在线免费观看| 亚洲精品欧美二区三区中文字幕| 日韩欧美一级精品久久| 欧美视频在线观看一区| 91小视频免费观看| 国产精品主播直播| 国产一区二三区| 久草精品在线观看| 老司机午夜精品| 麻豆国产精品一区二区三区| 日韩精品乱码av一区二区| 怡红院av一区二区三区| 国产精品久久久久久久久动漫| 久久免费的精品国产v∧| 精品日产卡一卡二卡麻豆| 91精品国产综合久久精品图片 | 在线精品视频小说1| 成人av在线资源| 成人蜜臀av电影| 99国产精品一区| 91麻豆国产香蕉久久精品| 97成人超碰视| 欧美午夜不卡视频| 欧美日韩国产综合一区二区三区 | 中文字幕高清不卡| 最新欧美精品一区二区三区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美国产禁国产网站cc| 亚洲欧美日韩综合aⅴ视频| 一区二区三区在线不卡| 亚洲成人动漫av| 国产精品一区在线观看你懂的| 国产不卡一区视频| 欧美日韩不卡一区| 精品精品国产高清a毛片牛牛| 国产精品欧美综合在线| 一区二区三区色| 麻豆精品视频在线观看| 99久久久国产精品免费蜜臀| 91成人免费在线| 久久久综合激的五月天| 亚洲精品成人精品456| 国产一区欧美二区| 欧美艳星brazzers| 国产欧美日韩在线看| 香蕉av福利精品导航| a美女胸又www黄视频久久| 欧美日韩成人在线| 国产精品国产馆在线真实露脸| 日韩av午夜在线观看| 在线观看成人小视频| 国产亚洲1区2区3区| 免费在线看成人av| 欧美亚男人的天堂| 亚洲人亚洲人成电影网站色| 精品一区二区国语对白| 56国语精品自产拍在线观看| 一色桃子久久精品亚洲| 国产不卡视频一区二区三区| 日韩欧美一级片| 全国精品久久少妇| 6080yy午夜一二三区久久| 午夜婷婷国产麻豆精品| 欧美日韩一级二级三级| 亚洲欧洲日产国码二区| 国产成人亚洲精品青草天美| 日韩精品一区二| 国内精品久久久久影院色| 91精品国产综合久久精品性色| 亚洲综合成人在线视频| 不卡一卡二卡三乱码免费网站| 国产日韩精品一区二区三区| 国产精品一区三区| 国产精品色一区二区三区| 99在线精品观看| 一个色在线综合| 欧美一激情一区二区三区| 免费黄网站欧美| 久久久三级国产网站| aaa欧美日韩| 婷婷六月综合亚洲| 26uuu国产一区二区三区| 国产福利一区二区三区视频在线| 欧美韩国日本一区| 欧美制服丝袜第一页| 激情小说欧美图片| 国产精品三级av| 欧美三级在线看| 国产一区二区三区在线观看免费视频 | 粉嫩av一区二区三区粉嫩| 亚洲欧洲av另类| 日韩视频一区二区三区| 成人福利在线看| 青青草成人在线观看| 国产精品福利一区二区三区| 欧美三级电影在线看| 成人免费毛片高清视频| 午夜精品一区二区三区电影天堂| 久久久久久久久免费| 在线观看不卡视频| 成人动漫在线一区| 欧美a级一区二区| 伊人性伊人情综合网| 欧美激情一区在线观看| 日韩一区二区三区在线| 色狠狠综合天天综合综合| 国产精品一级黄| 久久精品国产一区二区三| 亚洲国产一区二区在线播放| 国产精品第四页| 欧美高清在线视频| 欧美国产日产图区| 欧美极品少妇xxxxⅹ高跟鞋| 久久综合久久久久88| 精品国产自在久精品国产| 91精品国产综合久久香蕉麻豆| 91在线一区二区| 色综合天天综合网天天看片| 成人黄色777网| 一本久久a久久免费精品不卡| 成人一级片网址| 91麻豆产精品久久久久久| 91在线免费视频观看| 成人黄动漫网站免费app| 成人午夜电影久久影院| 成人av午夜影院| 色综合久久66| 欧美老人xxxx18| 欧美大白屁股肥臀xxxxxx| 精品嫩草影院久久| 国产欧美一区二区三区在线老狼 | 中文字幕不卡在线播放| 中文av一区二区| 亚洲小说春色综合另类电影| 亚洲国产另类精品专区| 午夜精品福利一区二区蜜股av| 日韩电影在线观看电影| 精品一区二区在线看| 成人手机电影网| 欧美午夜电影网| 欧美不卡一区二区三区四区| 久久久久久亚洲综合| 国产精品免费丝袜| 亚洲国产精品一区二区www在线| 亚洲一区二区在线免费观看视频| 日韩电影免费在线观看网站| 久草这里只有精品视频| 欧美日韩一级片在线观看| 国产欧美日韩在线看| 日本女人一区二区三区| av一二三不卡影片| 日韩女优毛片在线| 亚洲一区二区在线播放相泽 | 国产日韩一级二级三级| 亚洲国产一区二区a毛片| 国产91精品入口| 久久九九久久九九| 麻豆国产精品官网| 欧美日韩黄色影视| 亚洲国产你懂的| 欧美日韩中文字幕一区二区| 国产精品久久久久久久浪潮网站| 久久精品国产网站| 欧美一区二区三区四区五区| 一区二区三区免费网站| 91碰在线视频| 亚洲欧美另类在线| 成人国产免费视频| 国产精品萝li| www.亚洲免费av| 亚洲女性喷水在线观看一区| 91毛片在线观看| 一区二区三区久久| 欧美性猛交xxxxxx富婆| 亚洲国产欧美另类丝袜| 91精品国产全国免费观看| 日韩av中文字幕一区二区三区| 欧美欧美欧美欧美| 蜜桃视频在线一区| 久久久一区二区三区| 大桥未久av一区二区三区中文| 国产精品久久久久久久久果冻传媒| 成人国产免费视频| 丝袜国产日韩另类美女| 久久蜜桃av一区二区天堂| 国产不卡在线视频| 午夜电影网一区| 国产亚洲综合在线| 91福利社在线观看| 国产伦精一区二区三区| 一区二区三区欧美亚洲| 日韩欧美第一区|