My DirectShow application is working on Win7. When I switched it to Win2008 R2 server it failed to initialize NullRender filter with an error code -2147221164 (which is 0x80040154
REGDB_E_CLASSNOTREG
"Class not registered").
HRESULT CDirectShowGraph::AddFilterToGraph(CComPtr<IBaseFilter>& spFilter, GUID filterGuid, LPCWSTR filterName)
{
HRESULT hr = S_OK;
//Create the filter
hr = spFilter.CoCreateInstance(filterGuid);
if (FAILED(hr))
{
CDirectShowGraph::Msg(TEXT("[CDirectShowGraph::AddFilterToGraph] Failed to initialize filter \"%s\" hr=0x%x"), filterName, hr);
return hr;
}
//Add the filter to the graph
if (FAILED(hr = m_spGraph->AddFilter(spFilter, filterName)))
{
CDirectShowGraph::Msg(TEXT("[CDirectShowGraph::AddFilterToGraph] Adding filter failed \"%s\" hr=0x%x"), filterName, hr);
return hr;
}
return hr;
}
...
m_DirectShowGraph.AddFilterToGraph( m_spNullRenderer, CLSID_NullRenderer, L"NullRender")
I have also tried reinstalling Windows SDK.
Even GraphEdit crashes, when I expand the DirectShow Filters node. I tried DirectShowFilterManager (http://www.softella.com/dsfm/index.en.htm) and it also does not show NullRender in the list. However, on Win7 NullRender is appearing.
Microsoft took Null Renderer out of Win Server 2008 (along with other filters like Sample Grabber - all hosted by qedit.dll
). You need to look for replacement, which, for example, can be a similar filter/sample in one of old Platform SDKs.
See also: