简体   繁体   English

停止DirectShow Source过滤器时Flash崩溃

[英]Flash crashes when stopping directshow source filter

Here's the callstack : 这是调用栈:

0480b000() 0480b000()
vcam.ax!CSourceStream::DoBufferProcessingLoop() + 0xe1 bytes vcam.ax!CSourceStream :: DoBufferProcessingLoop()+ 0xe1个字节
vcam.ax!CSourceStream::ThreadProc() + 0x13e bytes vcam.ax!CSourceStream :: ThreadProc()+ 0x13e字节
vcam.ax!CAMThread::InitialThreadProc() + 0x51 bytes vcam.ax!CAMThread :: InitialThreadProc()+ 0x51字节
kernel32.dll!7c80b713() kernel32.dll!7c80b713()

The callstack is from this thread: 调用堆栈来自以下线程:

0    >    0x000015b8    Worker Thread    CAMThread::InitialThreadProc    0480b000    Normal    0

disassembly code: 拆卸代码:

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]

Problem exists at the line 017D0B5F call eax 017D0B5F call eax行存在问题

This problem exists for most directshow filters ,how to fix? 大多数DirectShow过滤器存在此问题,如何解决?

I believe vcam.ax's source code is here , so probably the best option is to compile the source code locally and then attach to the process that's crashing in the debugger. 我相信vcam.ax的源代码在这里 ,所以最好的选择可能是在本地编译源代码,然后附加到在调试器中崩溃的进程。 Then you can put a breakpoint in the DoBufferProcessingLoop() implementation, recreate the crash, and you should be able figure out why you're crashing. 然后,您可以在DoBufferProcessingLoop()实现中放置一个断点,重新创建崩溃,并且您应该能够弄清楚崩溃的原因。

I'v used vcom.ax and encountered the same problem as yours. 我使用过vcom.ax,遇到了与您相同的问题。 I solve it by following step. 我按照以下步骤解决。 Add CAutoLock cAutoLock(&m_cSharedState); 添加CAutoLock cAutoLock(&m_cSharedState); on the first Line of following function: 在以下功能的第一行:

  • CVCamStream::CVCamStream() //constructor
  • CVCamStream::~CVCamStream() //distructor
  • HRESULT CVCamStream::FillBuffer(IMediaSample *pms)
  • HRESULT CVCamStream::OnThreadCreate()

This may solve your problem. 这样可以解决您的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM