创建 DXVA-HD 视频图面

应用程序必须创建一个或多个要用于输入帧的 Direct3D 图面。 必须在由 DXVAHD_VPDEVCAPS 结构的 InputPool 成员指定的内存池中分配这些资源。 可以使用以下图面类型:

  • 通过调用 IDXVAHD_Device::CreateVideoSurface 并指定 DXVAHD_SURFACE_TYPE_VIDEO_INPUTDXVAHD_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
        );

DXVA-HD