Compartilhar via


Threads e seções críticas

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Esta seção descreve o threading nos filtros do DirectShow e as etapas que você deve seguir para evitar falhas ou deadlocks em um filtro personalizado.

Os exemplos nesta seção usam pseudocódigo para ilustrar o código que você precisará escrever. Eles pressupõem que um filtro personalizado esteja usando classes derivadas das classes base do DirectShow, da seguinte maneira:

  • CMyInputPin: derivado de CBaseInputPin.
  • CMyOutputPin: derivado de CBaseOutputPin.
  • CMyFilter: derivado de CBaseFilter.
  • CMyInputAllocator: o alocador do pino de entrada, derivado de CMemAllocator. Nem todo filtro precisa de um alocador personalizado. Para muitos filtros, a classe CMemAllocator é suficiente.

Esta seção contém os seguintes tópicos.

Fluxo de Dados para desenvolvedores de filtro

Escrevendo filtros do DirectShow