Informationen zu DXVA 2.0
DirectX Video Acceleration (DXVA) ist eine API und eine entsprechende DDI für die Verwendung der Hardwarebeschleunigung, um die Videoverarbeitung zu beschleunigen. Softwarecodecs und Softwarevideoprozessoren können DXVA verwenden, um bestimmte CPU-intensive Vorgänge an die GPU auszulagern. Beispielsweise kann ein Softwaredecoder die inverse diskrete Kosinustransformation (iDCT) an die GPU auslagern.
In DXVA werden einige Decodierungsvorgänge vom Grafikhardwaretreiber implementiert. Dieser Satz von Funktionen wird als Zugriffstaste bezeichnet. Andere Decodierungsvorgänge werden von der Anwendungssoftware im Benutzermodus implementiert, die als Hostdecoder oder Softwaredecoder bezeichnet wird. (Die Begriffe Hostdecoder und Softwaredecoder sind gleichwertig.) Die vom Accelerator ausgeführte Verarbeitung wird als Offhostverarbeitung bezeichnet. In der Regel verwendet der Accelerator die GPU, um einige Vorgänge zu beschleunigen. Immer wenn die Zugriffstaste einen Decodierungsvorgang ausführt, muss der Hostdecoder den Zugriffstastenpuffern übermitteln, die die zum Ausführen des Vorgangs erforderlichen Informationen enthalten.
Die DXVA 2-API erfordert Windows Vista oder höher. Die DXVA 1-API wird aus Gründen der Abwärtskompatibilität weiterhin in Windows Vista unterstützt. Es wird eine Emulationsebene bereitgestellt, die zwischen beiden Versionen der API und der entgegengesetzten Version der DDI konvertiert:
- Wenn der Grafiktreiber dem Windows Display Driver Model (WDDM) entspricht, werden DXVA 1-API-Aufrufe in DXVA 2-DDI-Aufrufe konvertiert.
- Wenn die Grafiktreiber das ältere Windows XP Display Driver Model (XPDM) verwenden, werden DXVA 2-API-Aufrufe in DXVA 1 DDI-Aufrufe konvertiert.
Die folgende Tabelle zeigt die Betriebssystemanforderungen und die unterstützten Videorenderer für jede Version der DXVA-API.
| API-Version | Requirements (Anforderungen) | Videorenderer-Unterstützung |
|---|---|---|
| DXVA 1 | Windows 2000 oder höher | Overlay Mixer, VMR-7, VMR-9 (nur DirectShow) |
| DXVA 2 | Windows Vista | EVR (DirectShow und Media Foundation) |
In DXVA 1 muss der Softwaredecoder über den Videorenderer auf die API zugreifen. Es gibt keine Möglichkeit, die DXVA 1-API zu verwenden, ohne den Videorenderer aufzurufen. Diese Einschränkung wurde mit DXVA 2 aufgehoben. Mit DXVA 2 kann der Hostdecoder (oder eine beliebige Anwendung) direkt über die IDirectXVideoDecoderService-Schnittstelle auf die API zugreifen.
In der DXVA 1-Dokumentation werden die Decodierungsstrukturen beschrieben, die für die folgenden Videostandards verwendet werden:
- ITU-T Rec. H.261
- ITU-T Rec. H.263
- MPEG-1-Video
- MPEG-2-Hauptprofilvideo
Die folgenden Spezifikationen definieren DXVA-Erweiterungen für andere Videostandards:
- DXVA-Spezifikation für H.264/AVC-Decodierung
- DXVA-Spezifikation für H.264/MPEG-4 AVC Multiview Video Coding (MVC), einschließlich Stereo High Profile
- DXVA-Spezifikation für MPEG-1-VLD und kombinierte MPEG-1/MPEG-2-VLD-Videodecodierung.
- DXVA-Spezifikation für Off-Host VLD-Modus für MPEG-4 Part 2 Video Decoding
- DXVA-Spezifikation für Windows Media Video® v8-, v9- und vA-Decodierung (einschließlich SMPTE 421M "VC-1")
- DirectX Video Acceleration (DXVA) Specification for H.264/MPEG-4 Scalable Video Coding (SVC) Off-Host VLD Mode Decoding
- DirectX-Videobeschleunigungsspezifikation für VP8- und VP9-Videocodierung
DXVA 1 und DXVA 2 verwenden die gleichen Datenstrukturen für die Decodierung. Das Verfahren zum Konfigurieren der Decodierungssitzung wurde jedoch geändert. DXVA 1 verwendet einen "Test- und Sperrmechanismus", bei dem der Hostdecoder verschiedene Konfigurationen testen kann, bevor die gewünschte Konfiguration auf der Zugriffstaste festgelegt wird. In DXVA 2 gibt die Zugriffstaste eine Liste der unterstützten Konfigurationen zurück, und der Hostdecoder wählt eine konfiguration aus der Liste aus. Details finden Sie in den folgenden Abschnitten: