线程和关键部分

[与此页面关联的功能(DirectShow)是一项旧功能。 它已被 MediaPlayerIMFMediaEngine取代,并在媒体基金会 音频/视频捕获。 这些功能已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获,而不是 DirectShow。 Microsoft建议重写使用旧 API 的现有代码,以尽可能使用新 API。]

本部分介绍 DirectShow 筛选器中的线程处理,以及避免在自定义筛选器中崩溃或死锁的步骤。

本节中的示例使用伪代码来说明需要编写的代码。 它们假定自定义筛选器使用派生自 DirectShow 基类的类,如下所示:

  • CMyInputPin:派生自 CBaseInputPin
  • CMyOutputPin:派生自 CBaseOutputPin
  • CMyFilter:派生自 CBaseFilter
  • CMyInputAllocator:输入引脚的分配器,派生自 CMemAllocator。 并非每个筛选器都需要自定义分配器。 对于许多筛选器,CMemAllocator 类已足够。

本节包含以下主题。

适用于筛选器开发人员的 数据流

编写 DirectShow 筛选器