[英]Flash crashes when stopping directshow source filter
这是调用栈:
0480b000()
vcam.ax!CSourceStream :: DoBufferProcessingLoop()+ 0xe1个字节
vcam.ax!CSourceStream :: ThreadProc()+ 0x13e字节
vcam.ax!CAMThread :: InitialThreadProc()+ 0x51字节
kernel32.dll!7c80b713()
调用堆栈来自以下线程:
0 > 0x000015b8 Worker Thread CAMThread::InitialThreadProc 0480b000 Normal 0
拆卸代码:
017D0B5B push edx
017D0B5C mov eax,dword ptr [ecx+8]
017D0B5F call eax
017D0B61 cmp esi,esp
017D0B63 call @ILT+2525(__RTC_CheckEsp) (17C49E2h)
017D0B68 cmp dword ptr [ebp-2Ch],0
017D0B6C je CSourceStream::DoBufferProcessingLoop+10Ah (17D0B8Ah)
017D0B6E mov eax,dword ptr [ebp-2Ch]
017D0B5F call eax
行存在问题
大多数DirectShow过滤器存在此问题,如何解决?
我相信vcam.ax的源代码在这里 ,所以最好的选择可能是在本地编译源代码,然后附加到在调试器中崩溃的进程。 然后,您可以在DoBufferProcessingLoop()实现中放置一个断点,重新创建崩溃,并且您应该能够弄清楚崩溃的原因。
我使用过vcom.ax,遇到了与您相同的问题。 我按照以下步骤解决。 添加CAutoLock cAutoLock(&m_cSharedState);
在以下功能的第一行:
CVCamStream::CVCamStream() //constructor
CVCamStream::~CVCamStream() //distructor
HRESULT CVCamStream::FillBuffer(IMediaSample *pms)
HRESULT CVCamStream::OnThreadCreate()
这样可以解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.