IDirectXVideoAccelerationService::CreateSurface 方法 (dxva2api.h)

创建 DirectX 视频加速 (DXVA) 视频处理器或 DXVA 解码器呈现目标。

语法

HRESULT CreateSurface(
  [in]      UINT              Width,
  [in]      UINT              Height,
  [in]      UINT              BackBuffers,
  [in]      D3DFORMAT         Format,
  [in]      D3DPOOL           Pool,
  [in]      DWORD             Usage,
  [in]      DWORD             DxvaType,
  [out]     IDirect3DSurface9 **ppSurface,
  [in, out] HANDLE            *pSharedHandle
);

参数

[in] Width

图面的宽度(以像素为单位)。

[in] Height

图面的高度(以像素为单位)。

[in] BackBuffers

后台缓冲区的数目。 方法创建 BackBuffers + 1 个图面。

[in] Format

像素格式,指定为 D3DFORMAT 值或 FOURCC 代码。 有关详细信息,请参阅 Direct3D 文档。

[in] Pool

要在其中创建图面的内存池,指定为 D3DPOOL 值。 有关详细信息,请参阅 Direct3D 文档。 解码器通常应使用值D3DPOOL_DEFAULT。

[in] Usage

保留。 将此值设置为零。

[in] DxvaType

要创建的图面的类型。 使用以下值之一。

含义
DXVA2_VideoDecoderRenderTarget
视频解码器呈现目标。
DXVA2_VideoProcessorRenderTarget
视频处理器呈现目标。 用于 IDirectXVideoProcessor::VideoProcessBlt 操作。
DXVA2_VideoSoftwareRenderTarget
软件呈现目标。 此表面类型适用于软件 DXVA 设备。

[out] ppSurface

调用方分配的 IDirect3DSurface9 指针数组的地址。 数组的大小必须为 1 + BackBuffers , (足以容纳后台缓冲区以及一个前缓冲区) 。 方法使用 IDirect3DSurface9 指针填充数组。 调用方必须释放所有接口指针。 此外,前缓冲区在每个后台缓冲区上保留引用计数。 因此,在删除前缓冲区之前,永远不会删除后台缓冲区。

[in, out] pSharedHandle

指向用于在 Direct3D 设备之间共享图面的句柄的指针。 将此参数设置为 NULL

返回值

该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。

返回代码 说明
S_OK
方法成功。
D3DERR_INVALIDCALL
参数无效
E_FAIL
DirectX 视频加速管理器未初始化。
E_POINTER
NULL 指针参数。

备注

如果方法返回 E_FAIL,请尝试调用 IDirect3DDeviceManager9::ResetDevice 以重置 DirectX 视频加速管理器。

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 dxva2api.h

另请参阅

DirectX 视频加速 2.0

IDirectXVideoAccelerationService