Creación de superficies de vídeo DXVA-HD

La aplicación debe crear una o varias superficies de Direct3D para usarlas para los fotogramas de entrada. Estos deben asignarse en el grupo de memoria especificado por el miembro InputPool de la estructura DXVAHD_VPDEVCAPS . Se pueden usar los siguientes tipos de superficie:

  • Superficie de vídeo creada llamando a IDXVAHD_Device::CreateVideoSurface y especificando el tipo de superficie DXVAHD_SURFACE_TYPE_VIDEO_INPUT o DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE . Este tipo de superficie es equivalente a una superficie sin formato fuera de pantalla.
  • Superficie de destino de representación del descodificador, creada llamando a IDirectXVideoAccelerationService::CreateSurface y especificando el tipo de superficie DXVA2_VideoDecoderRenderTarget . Este tipo de superficie se usa para la descodificación DXVA.
  • Superficie sin formato fuera de pantalla.

En el código siguiente se muestra cómo asignar una superficie de vídeo mediante 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