Esempio n. 1
0
/******************************Public*Routine******************************\
* AddVideoMixingRendererToFG
*
\**************************************************************************/
HRESULT
CMovie::AddVideoMixingRendererToFG()
{
	IBaseFilter* pBF = NULL;
	HRESULT hRes = CoCreateInstance(CLSID_VideoMixingRenderer9, NULL, CLSCTX_INPROC,
		IID_IBaseFilter, (LPVOID *)&pBF);

	if(SUCCEEDED(hRes))
	{
		hRes = m_Fg->AddFilter(pBF, L"Video Mixing Renderer 9");

		if(SUCCEEDED(hRes))
		{
			// Test VMRConfig, VMRMonitorConfig
			IVMRFilterConfig9* pConfig;
			HRESULT hRes2 = pBF->QueryInterface(IID_IVMRFilterConfig9, (LPVOID *)&pConfig);
			if(SUCCEEDED(hRes2))
			{
				hRes2 = pConfig->SetNumberOfStreams(2);
				hRes2 = pConfig->SetRenderingMode(VMR9Mode_Windowless);
				hRes2 = pConfig->SetRenderingPrefs(RenderPrefs_AllowOverlays);
				pConfig->Release();
			}

			IVMRMonitorConfig9* pMonitorConfig;
			HRESULT hRes3 = pBF->QueryInterface(IID_IVMRMonitorConfig9, (LPVOID *)&pMonitorConfig);
			if(SUCCEEDED(hRes3))
			{
				UINT iCurrentMonitor;
				HRESULT hr4 = pMonitorConfig->GetMonitor(&iCurrentMonitor);
				pMonitorConfig->Release();
			}

			hRes = pBF->QueryInterface(IID_IVMRWindowlessControl9, (LPVOID *)&m_Wc);
		}
	}

	if(pBF)
	{
		pBF->Release();
	}

	if(SUCCEEDED(hRes))
	{
		HRESULT hr = m_Wc->SetVideoClippingWindow(m_hwndApp);
		hr = m_Wc->SetAspectRatioMode(VMR_ARMODE_LETTER_BOX);
	}
	else
	{
		if(m_Wc)
		{
			m_Wc->Release();
			m_Wc = NULL;
		}
	}

	return hRes;
}
/******************************Public*Routine******************************\
* SetRenderingMode
*
\**************************************************************************/
static HRESULT SetRenderingMode( IBaseFilter* pBaseFilter, VMR9Mode mode )
{
    // Test VMRConfig, VMRMonitorConfig
    IVMRFilterConfig9* pConfig;

    HRESULT hr = pBaseFilter->QueryInterface(IID_IVMRFilterConfig9, (LPVOID *)&pConfig);
    if(SUCCEEDED(hr))
    {
        hr = pConfig->SetRenderingMode(mode);
        hr = pConfig->SetRenderingPrefs(RenderPrefs_ForceOverlays|RenderPrefs_AllowOverlays);
        pConfig->Release();
    }
    return hr;
}