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.
- Os threads de streaming e de aplicativo
- Pausando
- Recebendo e entregando amostras
- Entregando o fim do fluxo
- Liberando dados
- Parando
- Obtendo buffers
- Threads de streaming e o Gerenciador de Grafo de Filtro
- Resumo do threading de filtro
Tópicos relacionados