Übersicht über die DirectSound-Hardwarebeschleunigung
Eine Reihe von Audioadaptern bietet die DirectSound-Hardwarebeschleunigung, bei der Hardwaremischung für einen oder mehrere DirectSound-Streams durchgeführt werden kann. Die Hardwaremischung verbessert die Leistung, indem Audiomischvorgänge von der CPU ausgelagert und mit Hardwaregeschwindigkeiten ausgeführt werden. Zusätzlich zum Mischen führt die Hardware verwandte Vorgänge wie sample-rate conversion (SRC), Dämpfung und optional 3D-Verarbeitung durch, die andernfalls in Software ausgeführt werden müssten.
Alle WaveCyclic- oder WavePci-Renderinggeräte verfügen über einen oder mehrere Hardware-Pins zum Mischen von Audiostreams. Bei einem Single-Stream-Gerät wird der KMixer-Systemtreiber immer auf dem jeweils verfügbaren Hardwarerendering-Pin instanziiert.
Geräte mit DirectSound-Hardwarebeschleunigung bieten mehrere Hardwaremischstifte. Jeder zusätzliche Pin kann verwendet werden, um einen DirectSound-Stream zu mischen. DirectSound-Streams, die in Hardwaremixer-Pins eingespeist werden, umgehen KMixer und vermeiden die Latenz der Softwaremischung in KMixer. DirectSound verwendet alle verfügbaren hardwarebeschleunigten Mixer-Pins eines Audiogeräts, solange diese Pins über eine Topologie verfügen, die den Anforderungen der DirectSound-Knotenreihenfolge entspricht. DirectSound erfordert außerdem, dass die Pins das von KSDATAFORMAT_SPECIFIER_DSOUND angegebene DirectSound-Datenformat unterstützen (siehe DirectSound Stream Data Format).
Der SysAudio-Systemtreiber reserviert immer einen Hardware-Pin für KMixer, sodass nach der Zuordnung der anderen (nicht reservierten) Hardware-Pins alle zusätzlichen Datenströme von KMixer gemischt und in den reservierten Hardware-Pin eingespeist werden können.
Die Abbildung unter Rendern von Welleninhalten mithilfe von DirectSound-Software- und Hardwarepuffern veranschaulicht diese Konzepte.
Wenn ein Audiogerät eine ausreichende Anzahl von Hardwaremischpins bereitstellt, können alle Ausgabedatenströme einer DirectSound-Anwendung hardwarebeschleunigt werden. Andernfalls verfügt die DirectSound-Anwendung über mehrere Optionen:
Es kann die verfügbaren Hardwaremischungspins statisch den Streams zuordnen, die die niedrigsten Latenzen erfordern.
Es kann die verfügbaren Hardwaremischpins dynamisch den Streams zuordnen, wenn sie benötigt werden, indem die Pins als Pool freigegebener Ressourcen behandelt werden.
Weitere Informationen finden Sie in der Microsoft Windows SDK-Dokumentation zur Sprachverwaltung.
DirectSound kann zwei Arten von Hardwaremixer-Pins verwenden: 2D und 3D. Ein 2D-Pin führt SRC, Dämpfung und Mischen aus, aber keine 3D-Positionierung. DirectSound kann einen 2D-Pin verwenden, um die 3D-Positionierung durchzuführen, indem die erforderlichen Dämpfungs- und Frequenzberechnungen in Software durchgeführt und die Ergebnisse auf die entsprechenden Knoten auf dem 2D-Pin angewendet werden. Im Gegensatz dazu enthält ein 3D-Pin einen 3D-Knoten, der seine eigenen 3D-Effekte direkt aus den Eigenschaften 3D-Puffer und 3D-Listener berechnen kann, anstatt sich hierfür auf DirectSound zu verlassen. Eine Liste der Eigenschaften eines 3D-Knotens finden Sie unter KSNODETYPE_3D_EFFECTS. Weitere Informationen zu 2D- und 3D-Pins finden Sie unter Unterstützen der 2D-DirectSound-Beschleunigung in WDM-Audio und Unterstützen der 3D-DirectSound-Beschleunigung in WDM-Audio.