Criando superfícies de vídeo DXVA-HD

O aplicativo deve criar uma ou mais superfícies Direct3D para usar para os quadros de entrada. Eles devem ser alocados no pool de memória especificado pelo membro InputPool da estrutura DXVAHD_VPDEVCAPS . Os seguintes tipos de superfície podem ser usados:

  • Uma superfície de vídeo criada chamando IDXVAHD_Device::CreateVideoSurface e especificando o tipo de superfície DXVAHD_SURFACE_TYPE_VIDEO_INPUT ou DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE . Esse tipo de superfície é equivalente a uma superfície simples fora da tela.
  • Uma superfície de destino de renderização do decodificador, criada chamando IDirectXVideoAccelerationService::CreateSurface e especificando o tipo de superfície DXVA2_VideoDecoderRenderTarget . Esse tipo de superfície é usado para decodificação DXVA.
  • Uma superfície simples fora da tela.

O código a seguir mostra como alocar uma superfície de vídeo usando 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