Summary of Filter Threading
The following methods are called on the streaming thread:
The following methods are called on the application thread:
- State changes: IBaseFilter::JoinFilterGraph, IMediaFilter::Pause, IMediaFilter::Run, IMediaFilter::Stop, IQualityControl::SetSink.
- Reference clock: IMediaFilter::GetSyncSource, IMediaFilter::SetSyncSource.
- Pin operations: IBaseFilter::FindPin, IPin::Connect, IPin::ConnectedTo, IPin::ConnectionMediaType, IPin::Disconnect, IPin::ReceiveConnection.
- Allocator functions: IMemInputPin::GetAllocator, IMemInputPin::NotifyAllocator.
- Flushing: IPin::BeginFlush, IPin::EndFlush.
This list is not exhaustive. When you implement a filter, you must consider which methods change the filter state, and which methods perform streaming operations.