ColorSpaceConverter RenderlessMode
hi @ all,
i will use ColorSpaceConverter in Renderless Mode but when i add the
Filter my Video play only one Frame.
Here is my Code:
HRESULT hr = NULL;
IVMRMixerControl9 *m_pMixerControl = NULL;
IBaseFilter *m_pAviDecoder = NULL;
IBaseFilter *m_pColorSpaceCoverter = NULL;
ICaptureGraphBuilder2 *m_pCaptureGraphBuilder2 = NULL;
hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, (void**)&m_pGraphBuilder);
if (SUCCEEDED(hr))
{
hr = CoCreateInstance(CLSID_VideoMixingRenderer9, NULL,
CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void**)&m_pVMR9);
}
CoCreateInstance(CLSID_Colour, NULL, CLSCTX_INPROC_SERVER,
IID_IBaseFilter, (void **)&m_pColorSpaceCoverter);
if(!m_pColorSpaceCoverter)
{
return 0;
}
if (SUCCEEDED(hr))
{
hr = m_pVMR9->QueryInterface(IID_IVMRFilterConfig9,
reinterpret_cast<void**>(&m_pFilterConfig));
}
if (SUCCEEDED(hr))
{
hr = m_pFilterConfig->SetRenderingMode( VMR9Mode_Renderless );
}
if (SUCCEEDED(hr))
{
hr = m_pFilterConfig->SetNumberOfStreams(2);
}
if (SUCCEEDED(hr))
{
hr = SetAllocatorPresenter(m_pVMR9);
}
if (SUCCEEDED(hr))
{
hr = m_pGraphBuilder->AddFilter(m_pVMR9, L"Video Mixing
Renderer 9");
}
if (SUCCEEDED(hr))
{
hr = m_pGraphBuilder-
>AddFilter(m_pColorSpaceCoverter,L"ColorSpaceConverter");
}
if (SUCCEEDED(hr))
{
hr = m_pGraphBuilder->QueryInterface(IID_IMediaControl,
reinterpret_cast<void**>(&m_pMediaControl));
}
if (SUCCEEDED(hr))
{
hr = m_pGraphBuilder->QueryInterface(IID_IMediaSeeking,
reinterpret_cast<void**>(&m_pMediaSeeking));
}
if (SUCCEEDED(hr))
{
hr = m_pVMR9->QueryInterface(IID_IVMRMixerControl9,
(void**)&m_pMixerControl);
}
m_pMixerControl->SetMixingPrefs(MixerPref9_RenderTargetYUV);
if (SUCCEEDED(hr))
{
hr = m_pGraphBuilder->RenderFile(m_pFile, NULL );
}
if (SUCCEEDED(hr))
{
hr = m_pMediaControl->Run();
}
return hr;
date: Tue, 22 Jul 2008 05:20:21 -0700 (PDT)
author: xyz44