View Single Post
Old 19th September 2007, 10:38   #551  |  Link
MasterNobody
Registered User
 
Join Date: Jul 2007
Posts: 552
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.
MasterNobody is offline