ARDeskTop上で動画再生(その3)

次にDirectShowでなにもしなければ、かってに開いてしまう映像トラックのウインドウを出なくする。
新たにNull Rendererフィルタを追加してVideo Rendererと入れ替えれば、映像なし・音声のみで動画ファイルが再生される。

void CCVVideoManager::TurnOffVideo(void)
{
	IBaseFilter* pNullRenderer = 0;
	IBaseFilter* pFilter = 0;
	IBaseFilter* pVideoRenderer = 0;
	IPin* pinIn = 0;
	IPin* pinOut = 0;

	//NULL Rendererを追加
	CoCreateInstance(CLSID_NullRenderer, NULL,CLSCTX_INPROC_SERVER,
		IID_IBaseFilter, (LPVOID *) &pNullRenderer);
	pGraphBuilder->AddFilter(pNullRenderer, L"Null Renderer");

	//Video Rendererを探す
	pGraphBuilder->FindFilterByName(L"Video Renderer", &pVideoRenderer);

	//Video Rendererの入力ピンを探す
	pVideoRenderer->FindPin(L"VMR Input0", &pinIn);

	//出力されているピンを探す
	pinIn->ConnectedTo(&pinOut);

	//NULL Rendererに接続
	pNullRenderer->FindPin(L"In", &pinIn);
	pinOut->Connect(pinIn, NULL);

	//Video Rendererを除去
	pGraphBuilder->RemoveFilter(pVideoRenderer);
	pVideoRenderer->Release();
}

これでARDeskTop上で動画の単純再生ができるようになった。
OpenCVで動画をキャプチャしているので早送りは出来ても巻き戻しはちょっと厳しいかもしれない。