前面的建置都沒問題, S_OK, 為什麼 QueryInterface 時, 就會傳回 No Interface ?
兩個問題
1. 你需要先設定混合的 video stream 數量
hr=pConfig->SetNumberOfStreams(1);
if(FAILED(hr))
DXShowError(hr);
2. 指定顯示的視窗
hr=pWC->SetVideoClippingWindow(hWnd);
if(FAILED(hr))
DXShowError(hr);
然後, 才能取得混合控制器.
3.
hr=m_pVR->QueryInterface(IID_IVMRMixerControl,
(LPVOID *)&m_pMixer);
所以, 請把程式放在 SetVideoClippingWindow 後面.
如:
----------------------------- code ----------------------------------
hr=AddFilterByCLSID(pBuilder,CLSID_VideoMixingRenderer9,
_T("Video Render 9"),&m_pVR);
hr = m_pVR->QueryInterface(IID_IVMRFilterConfig9,
(LPVOID *)&pConfig);
hr=pConfig->SetRenderingMode(VMR9Mode_Windowless);
hr = m_pVR->QueryInterface(IID_IVMRWindowlessControl9,
(LPVOID *)&pWC);
if(hWnd !=0){
hr=pConfig->SetNumberOfStreams(1);
hr=pWC->SetVideoClippingWindow(hWnd);
hr=pWC->SetVideoPosition(NULL,&recDec);
}
hr=m_pVR->QueryInterface(IID_IVMRMixerControl9,
(LPVOID *)&m_pMixer);
------------------ code --------------------
by Jing
沒有留言:
張貼留言