Freigeben über


Hardwareausgeladene APO-Effekte

In Windows 10, Version 1511 und höher, wird das Ausladen von Audioverarbeitungsobjekten (Audio Processing Objects, APOs) unterstützt. Neben möglichen Leistungsverbesserungen stehen bei Verwendung von hardwareoffloadeten APOs erhebliche Energieeinsparungen zur Verfügung.

Zwei Arten von APOs können während der Hardwareauslagerungswiedergabe geladen werden.

  1. Streameffekte auslagern (OSFX)
  2. Auslagerungsmoduseffekte (OMFX)

Hardwareausgeladene APO-Effekte – Übersicht

Hardware Offloaded Audio Processing and Hardware Offloaded APOs

In Windows 8 wurde die Audio-Engine neu gestaltet, um mit Audiostreams zu arbeiten, die auf ein Hardwaregerät geladen wurden, das vom Standard Audiosystem des Computers getrennt, aber mit diesem verbunden ist. Dies wird als Hardwareauslagerung bezeichnet. Weitere Informationen finden Sie unter Hardware-Offloaded Audio Processing.

Die Hardwareauslagerungsfunktion richtet sich in erster Linie an Szenarien mit geringer Leistung mit größeren Puffergrößen. Beispielsweise kann bei der Wiedergabe von Low Power Audio (LPA) in den fähigen Systemen die Größe oder Periodizität des Audiopuffers auf 1 Sekunde festgelegt werden, sodass die CPU nicht häufig aufwacht, um kleine Puffer zu verarbeiten (z. B. alle 10 Millisekunden).

Die Implementierung von hardwareoffloadeten APOs zusammen mit der hardwareoffenen Audioverarbeitung bietet die Möglichkeit, die Energieeffizienz zu maximieren.

Das folgende Diagramm zeigt die Architektur der Audioverarbeitungsobjekte. Die rechte Seite des Diagramms zeigt eine Anwendung, die mit hardwareausgeladenen OSFX- und OMFX-Effekten kommuniziert.

Diagramm: Audiotreiberarchitektur mit Der Kommunikation der Anwendung mit hardwareoffenen OSFX- und OMFX-Effekten, Treibern und Audiohardware

Implementieren von hardwareoffloadeten APO-Effekten

Ein hardwareausgeladener APO muss den gleichen grundlegenden Anforderungen und Entwurfsprinzipien entsprechen, die unter Audioverarbeitungsobjektarchitektur und Implementieren von Audioverarbeitungsobjekten beschrieben sind.

Richtlinien für unterstützte Audioformatimplementierung

Für hardwareoffene APOs müssen unterstützte Audioformate zusätzlich berücksichtigt werden.

Jedes APO implementiert die IAudioProcessingObject::IsInputFormatSupported-Methode , die beim Erstellen von Audiodiagrammen verwendet wird, um das Ausgabeaudioformat zu bestimmen und zu bestimmen, ob eine Formatkonvertierung erforderlich ist.

HRESULT IsInputFormatSupported(
  [in, optional]  IAudioMediaType *pOppositeFormat,
  [in, optional]  IAudioMediaType *pRequestedInputFormat,
  [out, optional] IAudioMediaType **ppSupportedInputFormat
);

Der Auslagerungs-Renderendpunkt kann eine Vielzahl von Formaten unterstützen, einschließlich des Standardformats, das vom Host-/System-Pinrendering unterstützt wird. Ein Offload-APO sollte alle diese Formate unterstützen, sodass Renderingstreams (mit den unterstützten Formaten) keine zusätzliche Formatkonvertierung durchlaufen müssen.

Ein Auslagerungs-SFX kann Formatkonvertierungen implementieren und eine breitere Palette von Formaten akzeptieren. Wenn das Offload-SFX beispielsweise Kopfhörervirtualisierungen bereitstellt (d. h. 5.1-Kanal-Audio in Stereo konvertieren), sollte S_OK für das entsprechende Ein-/Ausgabepaar in dieser Methode zurückgegeben werden.

Ein SFX-Auslagerungs-SFX sollte die unterstützten Auslagerungsstiftformate überprüfen und die Funktionen zusammen unterstützen/erweitern.

Das Ausladen von MFX kann das Format des Eingabedatenstroms nicht ändern, muss aber trotzdem die Vielfalt der Formate unterstützen, die vom Auslagerungsendpunkt angeboten werden, und keine unnötige Formatkonvertierung.

Während des Renderns im Auslagerungspin ist nur ein Stream auf diesem Pin aktiv, sodass keine Datenströme gemischt werden. Daher ist die Verarbeitung des Audios auf Stream- und Modusebene nicht erforderlich. Daher müssen Audioeffekte möglicherweise nicht sowohl als Streameffekt als auch als Moduseffekt aktiviert werden. Ausgeladene Endpunkte unterstützen mehr Datenströme, und abhängig von der Verarbeitungsarchitektur für ein System muss die Auslagerungsverarbeitung möglicherweise in SFX/MFX berücksichtigt werden.

INF-Dateieinträge

Implementieren Sie die folgenden INF-Dateieinträge, um die Auswirkungen zu definieren, die während der Auslagerungswiedergabe geladen werden. Der INF-Dateieigenschaftenschlüssel weist den Audioendpunkt-Generator an, die CLSIDs für ausgeladene APOs in den Effekteigenschaftenspeicher festzulegen. Diese Informationen werden verwendet, um das Audiodiagramm zu erstellen, das verwendet wird, um Apps der oberen Ebene darüber zu informieren, welche Auswirkungen vorhanden sind.

Eigenschaftenschlüssel GUID
PKEY_FX_Offload_StreamEffectClsid {D04E05A6-594B-4FB6-A80D-01AF5EED7D1D},11
PKEY_FX_Offload_ModeEffectClsid {D04E05A6-594B-4FB6-A80D-01AF5EED7D1D},12
PKEY_SFX_Offload_ProcessingModes_Supported_For_Streaming {D3993A3F-99C2-4402-B5EC-A92A0367664B},11
PKEY_MFX_Offload_ProcessingModes_Supported_For_Streaming {D3993A3F-99C2-4402-B5EC-A92A0367664B},12

Implementing Audio Processing Objects
Windows-Audioverarbeitungsobjekte