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
);
Tópicos relacionados