线程和关键部分

[与此页面关联的功能 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 筛选器