Resumo do threading de filtro
[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.]
Os métodos a seguir são chamados no thread de streaming:
- IMemInputPin::Receive
- IMemInputPin::ReceiveMultiple
- IPin::EndOfStream
- IPin::NewSegment
- IMemAllocator::GetBuffer
Os seguintes métodos são chamados no thread do aplicativo:
- Alterações de estado: IBaseFilter::JoinFilterGraph, IMediaFilter::P ause, IMediaFilter::Run, IMediaFilter::Stop, IQualityControl::SetSink.
- Relógio de referência: IMediaFilter::GetSyncSource, IMediaFilter::SetSyncSource.
- Operações de pin: IBaseFilter::FindPin, IPin::Connect, IPin::ConnectedTo, IPin::ConnectionMediaType, IPin::D isconnect, IPin::ReceiveConnection.
- Funções de alocador: IMemInputPin::GetAllocator, IMemInputPin::NotifyAllocator.
- Flushing: IPin::BeginFlush, IPin::EndFlush.
Esta lista não é exaustiva. Ao implementar um filtro, você deve considerar quais métodos alteram o estado do filtro e quais métodos executam operações de streaming.