停止 directshow 源过滤器时 Flash 崩溃

发布于 2024-09-26 10:50:39 字数 908 浏览 6 评论 0原文

这是调用堆栈:

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 过滤器都存在此问题,如何修复?

Here's the callstack :

0480b000()
vcam.ax!CSourceStream::DoBufferProcessingLoop() + 0xe1 bytes
vcam.ax!CSourceStream::ThreadProc() + 0x13e bytes
vcam.ax!CAMThread::InitialThreadProc() + 0x51 bytes
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

This problem exists for most directshow filters ,how to fix?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

路还长,别太狂 2024-10-03 10:50:39

我相信 vcam.ax 的源代码位于此处,因此最好的选择可能是编译本地源代码,然后附加到调试器中崩溃的进程。然后,您可以在 DoBufferProcessingLoop() 实现中放置一个断点,重新创建崩溃,您应该能够找出崩溃的原因。

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. Then you can put a breakpoint in the DoBufferProcessingLoop() implementation, recreate the crash, and you should be able figure out why you're crashing.

演多会厌 2024-10-03 10:50:39

我使用过 vcom.ax 并遇到了与您相同的问题。我通过以下步骤解决它。
在以下函数的第一行添加 CAutoLock cAutoLock(&m_cSharedState);

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

这可能会解决您的问题。

I'v used vcom.ax and encountered the same problem as yours. I solve it by following step.
Add 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文