Создание видео surface DXVA-HD
Приложение должно создать одну или несколько поверхностей Direct3D, которые будут использоваться для входных кадров. Они должны быть выделены в пуле памяти, заданном членом InputPoolструктуры DXVAHD_VPDEVCAPS . Можно использовать следующие типы поверхностей:
- Область видео, созданная путем вызова 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
);
Связанные темы