H.264 视频解码器

Media Foundation H.264 视频解码器是一种 媒体基础转换 ,支持解码基线、主配置文件和高配置文件,最高级别为 5.1。

H.264 视频解码器公开以下接口。

若要创建解码器的实例,请执行下列操作之一:

输入类型

输入类型必须至少包含以下两个属性:

Attribute 说明
MF_MT_MAJOR_TYPE MFMediaType_Video
MF_MT_SUBTYPE MFVideoFormat_H264 或MFVideoFormat_H264_ES

 

如果输入类型仅包含这两个属性,则解码器将提供充当占位符的默认输出类型。 当解码器收到足够多的输入样本以生成输出帧时,它会通过从 IMFTransform::P rocessOutput 返回MF_E_TRANSFORM_STREAM_CHANGE来发出格式更改信号。 有关处理格式更改的详细信息,请参阅 ProcessOutput 文档。

若要避免初始格式更改,请在输入类型中提供尽可能多的信息,包括:

Attribute 说明
MF_MT_FRAME_RATE 帧速率。
MF_MT_FRAME_SIZE 框架尺寸。
MF_MT_INTERLACE_MODE 交错模式。 注意: 在 H.264 视频中,隔行扫描结构可以动态更改,因此建议 MFVideoInterlace_MixedInterlaceOrProgressive此属性的值。 视频基本流中的交错信息优先于媒体类型。 有关详细信息,请参阅 视频交错
MF_MT_PIXEL_ASPECT_RATIO 像素纵横比。

 

输入类型必须在输出类型之前设置。 在设置输入类型之前,编码器的 IMFTransform::SetOutputType 方法返回 MF_E_TRANSFORM_TYPE_NOT_SET

输出类型

解码器支持以下输出子类型:

  • MFVideoFormat_I420
  • MFVideoFormat_IYUV
  • MFVideoFormat_NV12
  • MFVideoFormat_YUY2
  • MFVideoFormat_YV12

有关这些子类型的详细信息,请参阅 视频子类型 GUID

转换属性

H.264 解码器实现 IMFTransform::GetAttributes 方法。 应用程序可以使用此方法获取或设置以下属性。

Attribute 说明
CODECAPI_AVDecVideoAcceleration_H264 启用或禁用硬件加速。
CODECAPI_AVDecVideoThumbnailGenerationMode 启用或禁用缩略图生成模式。
MF_SA_D3D_AWARE 指示解码器支持 DirectX 视频加速 (DXVA) 。 将 视为只读。

 

在 Windows 8 中,H.264 解码器还支持以下属性。

Attribute 说明
CODECAPI_AVLowLatencyMode 启用或禁用低延迟解码模式。
CODECAPI_AVDecNumWorkerThreads 设置解码器使用的工作线程数。
CODECAPI_AVDecVideoMaxCodedWidth 设置解码器将接受作为输入类型的最大图片宽度。
CODECAPI_AVDecVideoMaxCodedHeight 设置解码器将接受作为输入类型的最大图片高度。
MF_SA_MINIMUM_OUTPUT_SAMPLE_COUNT 指定输出样本的最大数目。
MFT_DECODER_EXPOSE_OUTPUT_TYPES_IN_NATIVE_ORDER 指定解码器是否公开 IYUV/I420 输出类型 (适合在其他格式之前转码) 。

 

在 Windows 8 中,H.264 解码器支持 ICodecAPI 接口。 此接口提供用于设置以下编解码器属性的交替 API。

格式约束

解码器支持以下格式:

设置 格式
配置文件/级别 基线、主配置文件和高配置文件,最高级别为 5.1。 (有关详细信息,请参阅ITU-T H.264 规范。)
色度格式 4:2:0 色度或单色
最小分辨率 48 × 48 像素
最大分辨率 4096 × 2304 像素
DXVA 加速的最大保证分辨率为 1920 × 1088 像素;在更高的分辨率下,如果受基础硬件支持,则使用 DXVA 进行解码;否则,解码是使用软件完成的。
注意: 在 Windows 7 中,软件解码和 DXVA 解码支持的最大分辨率为 1920 × 1088 像素。
DXVA 解码器支持 DXVA 版本 2,但不支持 DXVA 版本 1。 DXVA 解码仅支持主兼容基线、主比特流和高配置文件位流。 (主兼容基线位流定义为 profile_idc=66 和 constrained_set1_flag=1.)

 

输入数据必须符合 ISO/IEC 14496-10 的附件 B。 数据必须包含开始代码。 解码器跳过字节,直到在字节流中 (SPS) 和图片参数集 (PPS) 找到有效的序列参数集。

解码器不支持胶片粒度技术。

注意

以前版本的文档错误地指出,Windows Server 2008 R2 支持解码器。

 

如果安装了适用于 Windows Vista 的平台更新补充,则 H.264 视频解码器在 Windows Vista 上可用,但只能通过使用 源读取器在 Windows Vista 上访问。

要求

要求
最低受支持的客户端
Windows 7 [仅限桌面应用]
最低受支持的服务器
无受支持的版本
DLL
Msmpeg2vdec.dll

请参阅

编解码器对象

Media Foundation 中的 MPEG-4 支持

Media Foundation 中支持的媒体格式

视频媒体类型