IDirectXVideoProcessor::VideoProcessBlt 方法 (dxva2api.h)
对一个或多个输入样本执行视频处理操作,并将结果写入 Direct3D9 图面。
语法
HRESULT VideoProcessBlt(
[in] IDirect3DSurface9 *pRenderTarget,
[in] const DXVA2_VideoProcessBltParams *pBltParams,
[in] const DXVA2_VideoSample *pSamples,
[in] UINT NumSamples,
[out] HANDLE *pHandleComplete
);
参数
[in] pRenderTarget
指向 Direct3D 图面的 IDirect3DSurface9 接口的指针。 视频处理操作的输出将写入此图面。 图面可以是以下任一类型:
- 使用 DXVA2_VideoProcessRenderTarget 标志调用 IDirectXVideoAccelerationService::CreateSurface 创建的图面。 还可以使用 DXVA2_VideoSoftwareRenderTarget 标志,但仅当设备 GUID DXVA2_VideoProcSoftwareDevice (软件视频处理设备) 时。
- 从具有 D3DUSAGE_RENDERTARGET 用法标志的 Direct3D 设备创建的图面。
- Direct3D 交换链。
[in] pBltParams
指向描述要执行的视频处理操作 的DXVA2_VideoProcessBltParams 结构的指针。
[in] pSamples
指向包含输入样本的 DXVA2_VideoSample 结构的数组的指针。 数组中必须至少有一个元素。
最大输入样本数由头文件 dxva2api.h 中定义的常 量MAX_DEINTERLACE_SURFACES给出。
[in] NumSamples
pSamples 数组中的元素数。
[out] pHandleComplete
保留;设置为 NULL。
返回值
该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。
返回代码 | 说明 |
---|---|
|
方法成功。 |
|
内部驱动程序错误。 |
|
参数无效。 |
注解
当方法返回时,操作可能未完成。
如果方法返回E_INVALIDARG,检查以下内容:
- NumSamples) (输入样本数必须小于或等于MAX_DEINTERLACE_SURFACES。
- Direct3D 图面必须是 VideoProcessBlt 的有效目标。 有关详细信息,请参阅 pRT 参数的说明。
- pBltParams 中给定的 TargetFrame (呈现时间) 必须与主流中当前图片的开始和结束时间匹配。 具体而言,它必须小于结束时间且大于或等于开始时间。 请注意,如果 pSamples 数组包含向后引用图片,则 pSamples 中的第一个示例可能不是当前图片。 有关详细信息,请参阅 输入示例顺序。
- pBltParams 中给定的 TargetRect) (目标矩形不能大于 pRT) (目标图面。
- pBltParams 中给定的 constrictionSize) (限制大小不能小于零或大于目标矩形。
- 背景色的 alpha 分量必须是 opqaue。
- pBltParams 中给定的 ProcAmp 值必须有效。 对于驱动程序支持的任何 ProcAmp 设置,这些值必须位于 IDirectXVideoProcessor::GetProcAmpRange 方法返回的范围内。
- pBltParams 中给定的干扰和详细信息筛选器必须有效。 对于驱动程序支持的任何筛选器,这些值必须位于 IDirectXVideoProcessor::GetFilterPropertyRange 方法返回的范围内。
- pBltParams 中给定的 alpha 值必须在包含 [0...1] 的范围内。
- 对于 pSamples 中给出的每个输入样本:
- 开始时间不能大于结束时间。
- 必须提供有效的 IDirect3DSurface9 指针。
- 源矩形不能大于输入图面。
- 目标矩形不能大于目标图面。
- 平面 alpha 必须在包含 [0...1] 的范围内。
- 对于 (源、目标和目标) 的所有矩形,矩形不能 (左 > 右或上 > 下) 反转,也不能具有负值。
要求
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | dxva2api.h |