【问题标题】:Flash crashes when stopping directshow source filter停止 directshow 源过滤器时 Flash 崩溃
【发布时间】:2010-10-04 08:29:52
【问题描述】:

这是调用堆栈:

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过滤器都存在这个问题,如何解决?

【问题讨论】:

    标签: c++ flash crash directshow


    【解决方案1】:

    我相信 vcam.ax 的源代码是here,所以最好的选择可能是在本地编译源代码,然后附加到调试器中崩溃的进程。然后你可以在 DoBufferProcessingLoop() 实现中放置一个断点,重新创建崩溃,你应该能够弄清楚你为什么会崩溃。

    【讨论】:

      【解决方案2】:

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

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

      这可能会解决您的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多