I found the reason of MPC freeze when trying to view DVD (.ifo) or .vob files with standard Microsoft source filters qdvd.dll/mpg2splt.ax (NOT internal MPEG PS/TS/PVA source filter) with Haali Video Render dxr.dll. It caused by deadlock in
Code:
STDMETHODIMP CFGManager::EnumFilters(IEnumFilters** ppEnum)
{
if(!m_pUnkInner) return E_UNEXPECTED;
CAutoLock cAutoLock(this);
return CComQIPtr<IFilterGraph2>(m_pUnkInner)->EnumFilters(ppEnum);
}
because sometimes (most of the times) it at first called by Haali Video Render (NOT main thread) and during it execution it is called from MPEG-2 Splitter/Demultiplexer (main thread). For myself I have made patched version (where I fill with NOPs calls of EnterCriticalSection/LeaveCriticalSection of this function) which works without freeze. May be somebody can find more correct workaround for this problem than removing critical section.