创建 DXVA-HD 视频图面
应用程序必须创建一个或多个要用于输入帧的 Direct3D 图面。 必须在由 DXVAHD_VPDEVCAPS 结构的 InputPool 成员指定的内存池中分配这些资源。 可以使用以下图面类型:
- 通过调用 IDXVAHD_Device::CreateVideoSurface 并指定 DXVAHD_SURFACE_TYPE_VIDEO_INPUT 或 DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE 图面类型创建的视频图面。 此图面类型等效于屏幕外普通表面。
- 通过调用 IDirectXVideoAccelerationService::CreateSurface 并指定 DXVA2_VideoDecoderRenderTarget 图面类型创建的解码器呈现目标图面。 此图面类型用于 DXVA 解码。
- 屏幕外普通图面。
以下代码演示如何使用 CreateVideoSurface 分配视频图面:
// Create the video surface for the primary video stream.
hr = pDXVAHD->CreateVideoSurface(
VIDEO_WIDTH,
VIDEO_HEIGHT,
VIDEO_FORMAT,
caps.InputPool,
0, // Usage
DXVAHD_SURFACE_TYPE_VIDEO_INPUT,
1, // Number of surfaces to create
&pSurf, // Array of surface pointers
NULL
);
相关主题