Поделиться через


Потоки и критические разделы

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

В этом разделе описываются потоки в фильтрах DirectShow и действия, которые следует предпринять, чтобы избежать сбоев или взаимоблокировок в пользовательском фильтре.

В примерах в этом разделе используется псевдокод для иллюстрации кода, который необходимо написать. Предполагается, что пользовательский фильтр использует классы, производные от базовых классов DirectShow, следующим образом:

  • CMyInputPin: производный от CBaseInputPin.
  • CMyOutputPin: производный от CBaseOutputPin.
  • CMyFilter: производный от CBaseFilter.
  • CMyInputAllocator: распределителем входного контакта, производным от CMemAllocator. Не каждый фильтр нуждается в пользовательском распределителе. Для многих фильтров достаточно класса CMemAllocator .

Этот раздел содержит следующие подразделы.

Поток данных для разработчиков фильтров

Написание фильтров DirectShow