Share via


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