视频处理器 MFT
视频处理器 MFT 是 Microsoft 媒体基础转换 (MFT),它执行色彩空间转换、视频大小调整、去隔行、帧速率转换、旋转、裁剪、空间左视图和右视图解包以及镜像。
CLSID
CLSID_VideoProcessorMFT
接口
输入格式
- MFVideoFormat_ARGB32
- MFVideoFormat_AYUV
- MFVideoFormat_I420
- 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_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。
要求
要求 | 值 |
---|---|
Header |
|
另请参阅