Freigeben über


Architektur des Audioverarbeitungsobjekts

Audioverarbeitungsobjekte (APOs) bieten anpassbare softwarebasierte digitale Signalverarbeitung für Windows-Audiostreams.

Übersicht über Audioverarbeitungsobjekte

Windows ermöglicht OEMs und Drittanbietern von Audiohardwareherstellern, benutzerdefinierte digitale Signalverarbeitungseffekte als Teil der Mehrwertfunktionen des Audiotreibers einzuschließen. Diese Effekte werden als Benutzermodus-Systemeffekt-Audioverarbeitungsobjekte (APOs) verpackt.

Audioverarbeitungsobjekte (APOs), stellen softwarebasierte digitale Signalverarbeitung für Windows-Audiostreams bereit. Ein APO ist ein COM-Hostobjekt, das einen Algorithmus enthält, der geschrieben wird, um einen bestimmten DSP-Effekt (Digital Signal Processing) bereitzustellen. Diese Fähigkeit wird umgangssprachlich als "Audioeffekt" bezeichnet. Beispiele für APOs sind grafische Equalizer, Hall, Tremolo, akustische Echokompensation (AEC) und automatische Verstärkungsregelung (AGC). APOs sind COM-basierte, Echtzeit-, In-Process-Objekte.

Anmerkung Die Beschreibungen und Terminologie in dieser Dokumentation beziehen sich hauptsächlich auf Ausgabegeräte, z. B. Lautsprecher. Die Technologie ist jedoch symmetrisch und funktioniert im Wesentlichen umgekehrt für Eingabegeräte.

Software-APOs im Vergleich zu Hardware-DSP

Ein Hardware-Digitalsignalprozessor (Digital Signal Processor, DSP) ist ein spezieller Mikroprozessor (oder ein SIP-Block), mit seiner Architektur, die für die betrieblichen Anforderungen der digitalen Signalverarbeitung optimiert ist. Die Implementierung der Audioverarbeitung in zweckgebundener Hardware kann erhebliche Vorteile gegenüber der Verwendung einer Software-APO bieten. Ein Vorteil ist, dass die CPU-Auslastung und der damit verbundene Stromverbrauch mit einem hardware implementierten DSP niedriger sein können.

Es gibt weitere Vor- und Nachteile, die Sie berücksichtigen sollten, spezifisch für Ihre Projektziele und Einschränkungen, die Sie berücksichtigen möchten, bevor Sie eine softwarebasierte APO implementieren.

Softwarebasierte Effekte werden während der Streaminitialisierung in die Software-Pipeline eingefügt. Diese Lösungen verarbeiten alle ihre Auswirkungen auf die Haupt-CPU und verlassen sich nicht auf externe Hardware. Diese Lösungsart eignet sich am besten für herkömmliche Windows-Audiolösungen wie HDAudio, USB- und Bluetooth-Geräte, wenn der Treiber und die Hardware nur die RAW-Verarbeitung unterstützen. Weitere Informationen zur RAW-Verarbeitung finden Sie unter Audiosignalverarbeitungsmodi.

Proxy-APO für Hardware-DSP

Alle effekte, die in Hardware-DSP angewendet werden, müssen über ein Proxy-APO angekündigt werden. Microsoft stellt ein Standardproxy-APO (MsApoFxProxy.dll) bereit. Um das von Microsoft bereitgestellte APO zu verwenden, muss dieser Eigenschaftensatz und diese Eigenschaft unterstützt werden.

Optional können Sie Ihren eigenen Proxy-APO implementieren.

Windows-Bereitgestellte (System)-APOs

Windows installiert einen Standardsatz von APOs, der eine Reihe von verschiedenen Audioeffekten bereitstellt. Eine Liste der vom System bereitgestellten APO-Effekte finden Sie unter Audiosignalverarbeitungsmodi.

OEMs können alle vom System bereitgestellten APOs enthalten oder einige oder alle durch benutzerdefinierte APOs ersetzen.

Benutzerdefinierte APOs

Es ist möglich, benutzerdefinierte APOs zu erstellen, um das Windows-Audioerlebnis zu verbessern, indem zusätzliche Audioeffekte hinzugefügt werden.

Der OEM kann eine beliebige Kombination aus den bereitgestellten Windows-APOs und benutzerdefinierten APOs enthalten, wenn sie Windows versenden.

Ein benutzerdefiniertes APO kann von einem OEM oder einem Drittanbieter installiert werden, um das Audioerlebnis nach dem Kauf des Geräts zu verbessern. Wenn Benutzer einen Audiogerätetreiber mithilfe der standardmäßigen INF-Datei installieren, haben sie automatisch Zugriff auf die APOs des Systems. Unabhängige Hardwarehersteller (IHVs) und Originalgerätehersteller (OEMs) können zusätzliche benutzerdefinierte Systemeffekte bereitstellen und gleichzeitig die Microsoft-Klassentreiber verwenden. Dazu verpacken sie ihre DSP-Algorithmen als APOs und ändern die STANDARD-INF-Datei, um ihre APOs in das Signalverarbeitungsdiagramm des Audiomoduls einzufügen.

Weitere Informationen zum Erstellen benutzerdefinierter APOs finden Sie unter Implementieren von Audioverarbeitungsobjekten.

Benutzerdefinierte APO-Support-App

Um dem Benutzer das Konfigurieren von Einstellungen zu ermöglichen, die Ihrem benutzerdefinierten APO zugeordnet sind, empfiehlt es sich, eine Hardwaresupport-App zu erstellen. Weitere Informationen finden Sie unter Hardwaresupport-App (HSA): Schritte für Treiberentwickler.

Benutzerdefinierte APO-Tests und -Anforderungen

Das Microsoft HLK stellt Tests bereit, die mit APOs verwendet werden können. Weitere Informationen zu Audiotests finden Sie unter Device.Audio Testing and Device.Audio Tests.

Diese beiden Tests können besonders nützlich sein, wenn Sie mit APOs arbeiten.

Überprüfen von Audio effectsDiscovery (Manuell) – Zertifizierung

SysFX-Test

Informationen zu den Audioanforderungen zur Unterstützung von APOs finden Sie unter "Device.Audio Requirements".

Benutzerdefinierte APO-Tools und Dienstprogramme

Sie können das "Audio Effects Discovery-Beispiel" verwenden, um die verfügbaren Audioeffekte zu erkunden. In diesem Beispiel wird veranschaulicht, wie Sie Audioeffekte auf Render- und Aufnahmegeräten abfragen und Änderungen mit den Audioeffekten überwachen. Sie ist als Teil der SDK-Beispiele enthalten und kann über diesen Link heruntergeladen werden:

Beispiel für die Ermittlung von Audioeffekten

Sensibilisierung für Anwendungsaudioeffekte

Anwendungen können APIs aufrufen, um festzustellen, welche Audioeffekte derzeit auf dem System aktiv sind. Weitere Informationen zu den Sensibilisierungs-APIs für Audioeffekte finden Sie unter "AudioRenderEffectsManager"-Klasse.

Architektur von Audioverarbeitungsobjekten

Platzierung von Audioeffekten

Es gibt drei verschiedene Speicherorte für Audioeffekte, die als APOs implementiert werden. Sie befinden sich in Stream-Effekten (SFX), Moduseffekten (MFX) und Endpunkteffekten (EFX).

Stream Effect (SFX)

Ein Datenstromeffekt APO weist eine Instanz des Effekts für jeden Datenstrom auf. Streameffekte liegen vor dem Mixer (Rendern) oder nach dem Abzweiger (Aufnahme) für einen gegebenen Modus und können verwendet werden, um die Kanalanzahl vor dem Mixer zu ändern. Streameffekte werden nicht für rohe Datenströme verwendet.

Einige Versionen von Windows laden als Optimierung keine SFX- oder MFX-APOs im RAW-Modus.

  • Windows 8.1 lädt raw SFX oder RAW MFX nicht
  • Windows 10 lädt RAW MFX, aber keine RAW-SFX

Moduseffekt (MFX)

Moduseffekte (MFX) werden auf alle Datenströme angewendet, die demselben Modus zugeordnet sind. Moduseffekte werden nach der Kombination (Rendern) oder vor der Verzweigung (Aufnahme) eines bestimmten Modus angewendet, aber vor der Kombination (Rendern) oder nach der Verzweigung (Aufnahme) aller Modi. Alle szenariospezifischen Auswirkungen oder Effekte, die die Besonderheiten des Datenstromeffekts nicht benötigen, sollten hier platziert werden. Es ist energieeffizienter, einen Moduseffekt zu verwenden, da es eine Instanz für mehrere Datenströme gibt, die dieselben Merkmale wie Periodizität und Format aufweisen.

Endpunkteffekt (EFX)

Endpunkteffekt (EFX) werden auf alle Datenströme angewendet, die denselben Endpunkt verwenden. Ein Endpunkteffekt wird immer angewendet, auch auf unformatierte Datenströme. Das heißt, es ist nach dem Mix (Rendern) oder vor dem Capture (Aufnahme) aller Modi. Die Endpunkteffekte sollten mit Sorgfalt verwendet werden und im Zweifelsfall sollte ein Effekt im Modusbereich platziert werden. Einige Effekte, die im Endpunktbereich platziert werden sollten, sind Lautsprecherschutz und Lautsprecherkompensation.

Dieses Diagramm zeigt die möglichen Speicherorte von Stream-Effekten (SFX), Modus-Effekten (MFX) und Endpunkteffekten (EFX) für Windows 10.

Diagramm, das die Platzierung von Datenstrom-, Modus- und Endpunkteffekten in Windows 10 veranschaulicht.

Mehrere benutzerdefinierte APO-Effekte

Es ist möglich, mehrere APO-basierte Effekte für die Arbeit mit verschiedenen Anwendungen zu konfigurieren.

In diesem Diagramm wird veranschaulicht, wie mehrere Anwendungen auf mehrere Kombinationen von Datenstrom-, Modus- und Endpunkt-APO-Effekten zugreifen können. Alle APOs sind COM-basiert und werden im Benutzermodus ausgeführt. In diesem Szenario werden keine Effekte im Hardware- oder Kernelmodus ausgeführt.

Diagramm, das zeigt, wie mehrere Anwendungen auf verschiedene Kombinationen von Datenstrom-, Modus- und Endpunkt-APO-Effekten zugreifen können.

Anmerkung Sie können die Bildlaufleiste ganz unten auf dieser Seite verwenden, um das gesamte Diagramm anzuzeigen.

Softwaremoduseffekte und Hardwareendpunkteffekte für Rendern und Erfassen

Dieses Diagramm veranschaulicht Softwaremoduseffekte und Hardwareendpunkteffekte für das Rendern und Erfassen.

Diagramm, das Softwaremoduseffekte und Hardwareendpunkteffekte für Render- und Erfassungsprozesse anzeigt.

Mit Hardwareeffekten ausgestattetes DSP-System

Dieses Diagramm veranschaulicht ein mit DSP ausgestattetes System, das Effekte in der Hardware implementiert. In diesem Szenario sollte ein Proxy-APO erstellt werden, um die Apps über die Effekte zu informieren, die in der Hardware implementiert sind.

Diagramm, das ein mit DSP ausgestattetes System darstellt, das Effekte in der Hardware implementiert.

Windows-Audioverarbeitungsobjekte

Hardware-Offloaded-Audio-Treiber-Implementierung