Writing a Custom MFT
This section describes how to write a custom Media Foundation Transform (MFT).
MFT Checklist
When you implement a custom MFT, use the following checklist to determine the requirements:
MFT | Requirements |
---|---|
All MFTs | All MFTs must implement IMFTransform. The following topics give more information about implementing this interface: |
Encoders and decoders | Requirements: See Implementing a Codec MFT. Recommended: Implement IMFQualityAdvise or IMFQualityAdvise2, to support quality-of-service (QoS) notifications. |
Video decoders and video processors | Optional: Support DirectX Video Acceleration. |
Hardware codecs | See Hardware MFTs. |
To make your MFT discoverable by applications... | See Registering and Enumerating MFTs. |
Asynchronous data processing | The default MFT model uses synchronous (blocking) calls to process data. For some MFTs, asynchronous processing can be more efficient. However, it is also more complex to implement. For more information, see Asynchronous MFTs. |
Rate control, trick mode, or reverse playback | See Implementing Rate Control. |
If your MFT creates threads... | Implement the IMFRealTimeClient interface. |
If your MFT has licensing restrictions... | Consider using the field-of-use mechanism. See Field of Use Restrictions. |
If you are porting an existing DirectX Media Object (DMO)... | See Comparison of MFTs and DMOs. |
This section contains the following topics:
- Time Stamps and Durations
- Handling Stream Changes
- Implementing a Codec MFT
- Direct3D-Aware MFTs
- Hardware MFTs
- Codec Merit