H.264 Video Decoder
The Media Foundation H.264 video decoder is a Media Foundation Transform that supports decoding of Baseline, Main, and High profiles, up to level 5.1.
The H.264 video decoder exposes the following interfaces.
- ICodecAPI (supported in Windows 8)
- IMFGetService
- IMFQualityAdvise
- IMFQualityAdvise2
- IMFRateControl
- IMFRateSupport
- IMFRealTimeClient
- IMFTransform
To create an instance of the decoder, do one of the following:
- Call the MFTEnum or MFTEnumEx function.
- Call CoCreateInstance. The CLSID for the decoder is CLSID_CMSH264DecoderMFT, declared in wmcodecdsp.h.
Input Types
The input type must contain at least the following two attributes:
Attribute | Description |
---|---|
MF_MT_MAJOR_TYPE | MFMediaType_Video |
MF_MT_SUBTYPE | MFVideoFormat_H264 or MFVideoFormat_H264_ES |
If the input type contains only these two attributes, the decoder will offer a default output type, which acts as a placeholder. When the decoder receives enough input samples to produce an output frame, it signals a format change by returning MF_E_TRANSFORM_STREAM_CHANGE from IMFTransform::ProcessOutput. See the ProcessOutput documentation for details about handling format changes.
To avoid an initial format change, provide as much information in the input type as possible, including:
Attribute | Description |
---|---|
MF_MT_FRAME_RATE | Frame rate. |
MF_MT_FRAME_SIZE | Frame dimensions. |
MF_MT_INTERLACE_MODE | Interlace mode. Note: In H.264 video, the interlace structure can change dynamically, so the recommended value of this attribute is MFVideoInterlace_MixedInterlaceOrProgressive. Interlace information in the video elementary stream takes precedence over the media type. For more information, see Video Interlacing. |
MF_MT_PIXEL_ASPECT_RATIO | Pixel aspect ratio. |
The input type must be set before the output type. Until the input type is set, the encoder's IMFTransform::SetOutputType method returns MF_E_TRANSFORM_TYPE_NOT_SET.
Output Types
The decoder supports the following output subtypes:
- MFVideoFormat_I420
- MFVideoFormat_IYUV
- MFVideoFormat_NV12
- MFVideoFormat_YUY2
- MFVideoFormat_YV12
For more information about these subtypes, see Video Subtype GUIDs.
Transform Attributes
The H.264 decoder implements the IMFTransform::GetAttributes method. Applications can use this method to get or set the following attributes.
Attribute | Description |
---|---|
CODECAPI_AVDecVideoAcceleration_H264 | Enables or disables hardware acceleration. |
CODECAPI_AVDecVideoThumbnailGenerationMode | Enables or disables thumbnail generation mode. |
MF_SA_D3D_AWARE | Indicates that the decoder supports DirectX Video Acceleration (DXVA). Treat as read-only. |
In Windows 8, the H.264 decoder also supports the following attributes.
Attribute | Description |
---|---|
CODECAPI_AVLowLatencyMode | Enables or disables low-latency decoding mode. |
CODECAPI_AVDecNumWorkerThreads | Sets the number of worker threads used by the decoder. |
CODECAPI_AVDecVideoMaxCodedWidth | Sets the maximum picture width that the decoder will accept as an input type. |
CODECAPI_AVDecVideoMaxCodedHeight | Sets the maximum picture height that the decoder will accept as an input type. |
MF_SA_MINIMUM_OUTPUT_SAMPLE_COUNT | Specifies the maximum number of output samples. |
MFT_DECODER_EXPOSE_OUTPUT_TYPES_IN_NATIVE_ORDER | Specifies whether a decoder exposes IYUV/I420 output types (suitable for transcoding) before other formats. |
In Windows 8, the H.264 decoder supports the ICodecAPI interface. This interface provides an alternative API for setting the following codec properties.
- CODECAPI_AVDecVideoMaxCodedWidth
- CODECAPI_AVDecVideoAcceleration_H264
- CODECAPI_AVDecVideoMaxCodedHeight
- CODECAPI_AVDecVideoMaxCodedWidth
- CODECAPI_AVDecVideoThumbnailGenerationMode
Format Constraints
The decoder supports the following formats:
Setting | Format |
---|---|
Profiles/Levels | Baseline, Main, and High profiles, up to level 5.1. (See ITU-T H.264 specification for details.) |
Chroma Formats | 4:2:0 chroma or monochrome |
Minimum Resolution | 48 × 48 pixels |
Maximum Resolution | 4096 × 2304 pixels The maximum guaranteed resolution for DXVA acceleration is 1920 × 1088 pixels; at higher resolutions, decoding is done with DXVA, if it is supported by the underlying hardware, otherwise, decoding is done with software. Note: In Windows 7, the maximum supported resolution is 1920 × 1088 pixels for both software and DXVA decoding. |
DXVA | The decoder supports DXVA version 2, but not DXVA version 1. DXVA decoding is supported only for Main-compatible Baseline, Main, and High profile bitstreams. (Main-compatible Baseline bitstreams are defined as profile_idc=66 and constrained_set1_flag=1.) |
Input data must conform to Annex B of ISO/IEC 14496-10. The data must include the start codes. The decoder skips bytes until it finds a valid sequence parameter set (SPS) and picture parameter set (PPS) in the byte stream.
The decoder does not support Film Grain Technology.
Note
A previous version of the documentation incorrectly stated that the decoder is supported on Windows Server 2008 R2.
If Platform Update Supplement for Windows Vista is installed, the H.264 video decoder is available on Windows Vista, but is accessible on Windows Vista only by using the Source Reader.
Requirements
Requirement | Value |
---|---|
Minimum supported client |
Windows 7 [desktop apps only] |
Minimum supported server |
None supported |
DLL |
|
See also