Erstellen von DXVA-HD-Videooberflächen
Die Anwendung muss eine oder mehrere Direct3D-Oberflächen erstellen, die für die Eingabeframes verwendet werden sollen. Diese müssen im Speicherpool zugeordnet werden, der vom InputPool-Member der DXVAHD_VPDEVCAPS-Struktur angegeben wird. Die folgenden Oberflächentypen können verwendet werden:
- Eine Videooberfläche, die durch Aufrufen von IDXVAHD_Device::CreateVideoSurface und Angabe des DXVAHD_SURFACE_TYPE_VIDEO_INPUT oder DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE Oberflächentyps erstellt wird. Dieser Oberflächentyp entspricht einer einfachen Oberfläche außerhalb des Bildschirms.
- Eine Decoder-Renderzieloberfläche, die durch Aufrufen von IDirectXVideoAccelerationService::CreateSurface und Angeben des DXVA2_VideoDecoderRenderTarget Oberflächentyps erstellt wird. Dieser Oberflächentyp wird für die DXVA-Decodierung verwendet.
- Eine einfache Oberfläche außerhalb des Bildschirms.
Der folgende Code zeigt, wie Sie eine Videooberfläche mithilfe von CreateVideoSurface zuordnen:
// 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
);
Zugehörige Themen