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 in dem Vom InputPool-Member der DXVAHD _ VPDEVCAPS-Struktur angegebenen Speicherpool zugeordnet werden. Die folgenden Oberflächentypen können verwendet werden:

  • Eine Videooberfläche, die durch Aufrufen von IDXVAHD _ Device::CreateVideoSurface und Angeben des DXVAHD _ SURFACE TYPE VIDEO _ _ _ INPUT- oder DXVAHD _ SURFACE TYPE VIDEO INPUT _ _ _ _ PRIVATE Surface-Typs erstellt wurde. Dieser Oberflächentyp entspricht einer einfachen Oberfläche im Off-Screen-Bereich.
  • Eine Renderzieloberfläche des Decoders, 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 im Off-Screen-Bildschirm.

Der folgende Code zeigt, wie Sie mit CreateVideoSurface eine Videooberfläche 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
        );

DXVA-HD