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
要创建的图面的类型。 使用以下值之一。
值 | 含义 |
---|---|
|
视频解码器呈现目标。 |
|
视频处理器呈现目标。 用于 IDirectXVideoProcessor::VideoProcessBlt 操作。 |
|
软件呈现目标。 此表面类型适用于软件 DXVA 设备。 |
[out] ppSurface
调用方分配的 IDirect3DSurface9 指针数组的地址。 数组的大小必须为 1 + BackBuffers , (足以容纳后台缓冲区以及一个前缓冲区) 。 方法使用 IDirect3DSurface9 指针填充数组。 调用方必须释放所有接口指针。 此外,前缓冲区在每个后台缓冲区上保留引用计数。 因此,在删除前缓冲区之前,永远不会删除后台缓冲区。
[in, out] pSharedHandle
指向用于在 Direct3D 设备之间共享图面的句柄的指针。 将此参数设置为 NULL。
返回值
该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。
返回代码 | 说明 |
---|---|
|
方法成功。 |
|
参数无效 |
|
DirectX 视频加速管理器未初始化。 |
|
NULL 指针参数。 |
备注
如果方法返回 E_FAIL,请尝试调用 IDirect3DDeviceManager9::ResetDevice 以重置 DirectX 视频加速管理器。
要求
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | dxva2api.h |