H.264 视频解码器
Media Foundation H.264 视频解码器是一种 媒体基础转换 ,支持解码基线、主配置文件和高配置文件,最高级别为 5.1。
H.264 视频解码器公开以下接口。
- Windows 8) 支持 ICodecAPI (
- IMFGetService
- IMFQualityAdvise
- IMFQualityAdvise2
- IMFRateControl
- IMFRateSupport
- IMFRealTimeClient
- IMFTransform
若要创建解码器的实例,请执行下列操作之一:
- 调用 MFTEnum 或 MFTEnumEx 函数。
- 调用 CoCreateInstance。 解码器的 CLSID CLSID_CMSH264DecoderMFT,在 wmcodecdsp.h 中声明。
输入类型
输入类型必须至少包含以下两个属性:
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。
- CODECAPI_AVDecVideoMaxCodedWidth
- CODECAPI_AVDecVideoAcceleration_H264
- CODECAPI_AVDecVideoMaxCodedHeight
- CODECAPI_AVDecVideoMaxCodedWidth
- CODECAPI_AVDecVideoThumbnailGenerationMode
格式约束
解码器支持以下格式:
设置 | 格式 |
---|---|
配置文件/级别 | 基线、主配置文件和高配置文件,最高级别为 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 |
|
请参阅