IDXGIFactoryMedia::CreateDecodeSwapChainForCompositionSurfaceHandle 方法 (dxgi1_3.h)

为现有 DirectComposition 图柄创建 YUV 交换链。 交换链是使用预先存在的缓冲区创建的,所需的描述性元素很少。 相反,此方法需要 DirectComposition 图柄和 IDXGIResource 缓冲区来保存解码的帧数据。 交换链格式由 IDXGIResource 子资源的格式确定。

语法

HRESULT CreateDecodeSwapChainForCompositionSurfaceHandle(
  [in]           IUnknown                    *pDevice,
  [in, optional] HANDLE                      hSurface,
  [in]           DXGI_DECODE_SWAP_CHAIN_DESC *pDesc,
  [in]           IDXGIResource               *pYuvDecodeBuffers,
  [in, optional] IDXGIOutput                 *pRestrictToOutput,
  [out]          IDXGIDecodeSwapChain        **ppSwapChain
);

参数

[in] pDevice

指向交换链的 Direct3D 设备的指针。 此参数不能为 NULL。 组合交换链不支持软件驱动程序 (如 D3D_DRIVER_TYPE_REFERENCE)。

[in, optional] hSurface

现有 DirectComposition 图面的句柄。 此参数不能为 NULL

[in] pDesc

指向交换链说明 DXGI_DECODE_SWAP_CHAIN_DESC 结构的指针。 此参数不能为 NULL

[in] pYuvDecodeBuffers

指向 IDXGIResource 接口的指针,该接口表示包含 CreateDecodeSwapChainForCompositionSurfaceHandle 解码信息的资源。

[in, optional] pRestrictToOutput

指向要限制内容的交换链 的 IDXGIOutput 接口的指针。 如果交换链移动到其他输出,则内容为黑色。 可以选择将此参数设置为使用 DXGI_PRESENT_RESTRICT_TO_OUTPUT 限制此输出内容的输出目标。 如果交换链移动到其他输出,则内容为黑色。

还必须在当前调用中传递 DXGI_PRESENT_RESTRICT_TO_OUTPUT 标志,以强制内容在任何其他输出上显示为黑屏。 如果要将内容限制为其他输出,则必须创建新的交换链。 但是,可以根据 DXGI_PRESENT_RESTRICT_TO_OUTPUT 标志有条件地限制内容。

如果不想将内容限制为输出目标,请将此参数设置为 NULL

[out] ppSwapChain

指向变量的指针,该变量接收指向此方法创建的交换链的 IDXGIDecodeSwapChain 接口的指针。

返回值

CreateDecodeSwapChainForCompositionSurfaceHandle 返回:

  • S_OK成功创建交换链。
  • E_OUTOFMEMORY内存不可用以完成操作。
  • DXGI_ERROR_INVALID_CALL 调用应用程序是否提供无效数据,例如,如果 pDescpYuvDecodeBuffersppSwapChainNULL
  • 可能是 DXGI_ERROR 主题中介绍的其他错误代码,这些错误代码由传递给 pDevice 的设备类型定义。

备注

通过 pYuvDecodeBuffers 参数提供的 IDXGIResource 必须指向至少一个子资源,并且必须使用 D3D11_BIND_DECODER 标志创建所有子资源。

要求

   
最低受支持的客户端 Windows 8.1 [仅限桌面应用]
最低受支持的服务器 Windows Server 2012 R2 [仅限桌面应用]
目标平台 Windows
标头 dxgi1_3.h
Library Dxgi.lib

请参阅

IDXGIFactoryMedia