DirectX-Videobeschleunigung - DirectX Video Acceleration

DirectX Video Acceleration ( DXVA ) ist eine Microsoft - API - Spezifikation für die Microsoft Windows und Xbox 360 - Plattformen , die ermöglicht Video - Decodierung zu sein Hardware-beschleunigte . Mit der Pipeline können bestimmte CPU- intensive Vorgänge wie iDCT , Bewegungskompensation und Deinterlacing auf die GPU verlagert werden . Mit DXVA 2.0 können mehr Vorgänge, einschließlich Videoaufzeichnungs- und -verarbeitungsvorgänge , ebenfalls hardwarebeschleunigt werden.

DXVA arbeitet mit dem von der Grafikkarte verwendeten Video-Rendering- Modell zusammen . DXVA 1.0, das als standardisierte API mit Windows 2000 eingeführt wurde und derzeit unter Windows 98 oder höher verfügbar ist , kann entweder den Overlay-Rendering-Modus oder VMR 7/9 verwenden . DXVA 2.0, das nur unter Windows Vista , Windows 7 , Windows 8 und höher verfügbar ist, lässt sich in Media Foundation (MF) integrieren und verwendet den in MF vorhandenen Enhanced Video Renderer (EVR).

Überblick

Der DXVA wird von Software-Videodecodern verwendet , um eine Codec-spezifische Pipeline für das hardwarebeschleunigte Decodieren und Rendern des Codecs zu definieren. Die Pipeline beginnt bei der CPU, die zum Parsen des Medienstroms und zur Konvertierung in DXVA-kompatible Strukturen verwendet wird. DXVA gibt eine Reihe von Vorgängen an, die hardwarebeschleunigt werden können, und DDIs ( Device Driver Interfaces ), die der Grafiktreiber implementieren kann, um die Vorgänge zu beschleunigen. Wenn der Codec eine der definierten Operationen ausführen muss, kann er diese Schnittstellen verwenden, um auf die hardwarebeschleunigte Implementierung dieser Operationen zuzugreifen. Wenn der Grafiktreiber eine oder mehrere der Schnittstellen nicht implementiert, muss der Codec einen Software-Fallback dafür bereitstellen. Das decodierte Video wird an den Hardware-Video-Renderer übergeben, wo eine weitere Videonachbearbeitung darauf angewendet werden kann, bevor es auf das Gerät gerendert wird. Die resultierende Pipeline kann in einer DirectShow- kompatiblen Anwendung verwendet werden.

DXVA spezifiziert das Motion Compensation DDI, das unter anderem die Schnittstellen für iDCT- Operationen, Huffman-Codierung , Bewegungskompensation , Alpha-Blending , inverse Quantisierung , Farbraumkonvertierung und Bildratenkonvertierungsoperationen spezifiziert . Es enthält außerdem drei Unterspezifikationen: Deinterlacing DDI, COPP DDI und ProcAmp DDI. Das Deinterlacing- DDI gibt die Rückrufe für Deinterlacing- Operationen an. Mit den COPP-DDI-Funktionen (Certified Output Protection Protocol) kann die Pipeline durch Angabe von Verschlüsselungsfunktionen für DRM-geschützte Medien gesichert werden. Das ProcAmp-DDI wird verwendet, um die Nachbearbeitung von Videos zu beschleunigen . Das ProcAmp-Treibermodul befindet sich zwischen dem Hardware-Video-Renderer und dem Display-Treiber und bietet Funktionen zum Anwenden von Nachbearbeitungsfiltern auf das dekomprimierte Video.

Auf die von DXVA-DDIs bereitgestellten Funktionen kann ein DirectShow- Client nicht direkt zugreifen , sondern sie werden dem Video-Renderer als Rückruffunktionen zur Verfügung gestellt. Daher spielt der Renderer eine sehr wichtige Rolle bei der Verankerung der Pipeline.

DXVA unter Windows Vista und höher

DXVA 2.0 verbessert die Implementierung der Video-Pipeline und fügt eine Vielzahl weiterer DDIs hinzu, einschließlich eines Capture-DDI für die Videoaufnahme. Die DDIs, die es mit DXVA 1.0 teilt, werden auch durch die Möglichkeit erweitert, die Hardwarebeschleunigung für mehr Vorgänge zu verwenden. Außerdem stehen die DDI-Funktionen Anrufern direkt zur Verfügung und müssen nicht vom Video-Renderer vermittelt werden. Als solches kann ein Programm auch eine Pipeline zum einfachen Decodieren des Mediums (ohne Rendern) oder zum Nachbearbeiten und Rendern (ohne Decodieren) erstellen. Für diese Funktionen sind die Windows Display Driver Model- Treiber erforderlich , mit denen DXVA 2.0 auf Windows Vista , Windows Server 2008 , Windows 7 , Windows Server 2008 R2 und Windows 8 beschränkt wird . Unter Windows XP und Windows 2000 können Programme DXVA 1.0 verwenden. DXVA 2.0 ermöglicht Enhanced Video Renderer als Video-Renderer nur unter Vista, Windows 7 und Windows 8. (Unter Windows XP ist DXVA-Rendering mit VMR9 und dem bekannten Overlay Mixer möglich.) DXVA lässt sich in Media Foundation integrieren und ermöglicht DXVA Pipelines, die als Media Foundation Transforms ( MFTs ) verfügbar gemacht werden sollen . Sogar Decoder-Pipelines oder Nachbearbeitungs-Pipelines können als MFTs verfügbar gemacht werden, die vom Media Foundation- Topologie-Loader zum Erstellen einer vollständigen Medienwiedergabe-Pipeline verwendet werden können. DXVA 1.0 wird mit DXVA 2.0 emuliert. DXVA 2.0 enthält nicht das COPP-DDI, sondern verwendet PVP für geschützte Inhalte. Windows 7 implementiert DXVA-HD, wenn der Treiber WDDM 1.1 entspricht.

DXVA2-Implementierungen: nativ und zurückkopiert

DXVA2-Implementierungen gibt es in zwei Varianten: native und Copy-back .

Bei der nativen Implementierung bleibt das decodierte Video im GPU-Speicher, bis es angezeigt wird. Der Videodecoder muss ohne Zwischenverarbeitungsfilter an den Videorenderer angeschlossen sein. Der Video-Renderer muss auch DXVA unterstützen, was weniger Freiheit bei der Auswahl der Renderer bietet.

Bei der Rückkopierimplementierung wird das decodierte Video vom GPU-Speicher zurück in den CPU-Speicher kopiert. Diese Implementierung weist nicht die oben genannten Einschränkungen auf und verhält sich ähnlich wie ein normaler Software-Decoder. Videostottern tritt jedoch auf, wenn die GPU nicht schnell genug ist, um ihren Speicher zurück in den Speicher der CPU zu kopieren.

Der native Modus ist vorteilhaft, es sei denn, es ist eine angepasste Verarbeitung erforderlich, da die zusätzlichen Rückkopiervorgänge die GPU-Speicherlast erhöhen.

Software

Siehe auch

Verweise

Externe Links