视频处理器 MFT 是一种Microsoft媒体基础转换(MFT),用于执行颜色空间转换、视频调整大小、反交错、帧速率转换、旋转、裁剪、空间左右视图解压缩和镜像。
CLSID
CLSID_VideoProcessorMFT
接口
输入格式
- MFVideoFormat_ABGR32
- MFVideoFormat_ARGB32
- MFVideoFormat_AYUV
- MFVideoFormat_I420
- MFVideoFormat_I422
- MFVideoFormat_I444
- MFVideoFormat_IYUV
- MFVideoFormat_NV11
- MFVideoFormat_NV12
- MFVideoFormat_RGB24
- MFVideoFormat_RGB32
- MFVideoFormat_RGB555
- MFVideoFormat_RGB565
- MFVideoFormat_RGB8
- MFVideoFormat_UYVY
- MFVideoFormat_v410
- MFVideoFormat_Y216
- MFVideoFormat_Y41P
- MFVideoFormat_Y41T
- MFVideoFormat_Y42T
- MFVideoFormat_YUY2
- MFVideoFormat_YV12
- MFVideoFormat_YVYU
输出格式
- MFVideoFormat_ARGB32
- MFVideoFormat_AYUV
- MFVideoFormat_I420
- MFVideoFormat_I422
- MFVideoFormat_I444
- MFVideoFormat_IYUV
- MFVideoFormat_NV12
- MFVideoFormat_RGB24
- MFVideoFormat_RGB32
- MFVideoFormat_RGB555
- MFVideoFormat_RGB565
- MFVideoFormat_UYVY
- MFVideoFormat_Y216
- MFVideoFormat_YUY2
- MFVideoFormat_YV12
不支持输入和输出格式的每个组合。 若要测试是否支持转换,请设置输入类型,然后调用 IMFTransform::GetOutputAvailableType。
有关这些格式的详细信息,请参阅 视频子类型 GUID。
注解
可以通过以下方法之一创建视频处理器的实例:
- 通过调用 MFTEnumEx。 视频处理器在 MFT_CATEGORY_VIDEO_PROCESSOR 类别下注册。
- 通过调用 COM 函数 CoCreateInstance 向其传递 CLSID CLSID_VideoProcessorMFT。
以下备注与使用 视频处理器 MFT 中的源矩形和目标矩形有关。 源和目标矩形使用 IMFVideoProcessorControl::SetDestinationRectangle 和 SetSourceRectangle 设置,有时使用 IMFMediaEngineEx::UpdateVideoStream。
- 应对齐和舍入源矩形,以满足输入到视频处理器的帧的颜色格式的要求。 这一点很重要,因为 420 和 422 等格式对可以创建和访问的维度和偏移量有要求。 例如,输入格式为 420 时,{1、0、319、240} (左、上、右、下)的源矩形将舍入为 {2、0、320、240}。
- 目标矩形和源矩形始终都固定在各自的帧内,源矩形位于源框架和目标框架的目标矩形中。 这意味着负值没有意义,它们将始终固定到 0。
- 源矩形位于目标框架的坐标系中,减去任何目标矩形。 这意味着旋转等转换在源矩形上是“撤消的”。 因此,无需知道视频是否已旋转或 3D 解包。 例如,可以在视频标记的顶部绘制一个矩形,获取相对坐标(相对于视频标记),规范化它们(范围 0 到 1),并将其作为源矩形向下传递,即使视频正在旋转也是如此。
视频处理器支持使用 Microsoft Direct3D 11 进行 GPU 加速的视频处理。 有关详细信息,请参阅 MF_SA_D3D11_AWARE。
立体声视频
视频处理器支持 3D 视频帧上的视图解压缩作:
如果输入帧包含在同一帧中打包的两个视图,则视频处理器可以将视图拆分为单独的缓冲区,或提取基本视图并放弃第二个视图。 若要启用视图解压缩,请将 MF_ENABLE_3DVIDEO_OUTPUT 属性设置为 MF3DVideoOutputType_Stereo 或 MF3DVideoOutputType_BaseView。
要求
要求 | 价值 |
---|---|
标题 |
|
另请参阅