Freigeben über


Unterstützen des Audiostatus

Überblick

Geräte können in unterschiedlichen Haltungen verwendet werden. Für ein Tablet bedeutet "Haltung" im Wesentlichen die Ausrichtung, die es gehalten wird, z. B. Hoch- oder Querformat. Die Audioumgebung für diese Geräte kann für bestimmte Haltungen optimiert werden. Audioendpunkte können beispielsweise linke/rechte Kanäle neu zuordnen, um eine ordnungsgemäße Stereoerfahrung in verschiedenen Ausrichtungen zu ermöglichen. Es ist auch möglich, Mikrofone für Rauschunterdrückung, Echounterdrückung usw. basierend auf geänderten Lautsprecher-/Mikrofonpositionen bei Haltungsänderungen zu kalibrieren.

Unterstützung des Windows-Betriebssystems

Der Audiostatus wird in Windows 11, Version 22000 und höher, unterstützt.

Aufbau

Haltungsbezogene Szenarien für Audioendpunkte basieren auf den Shellantworten auf Statusänderungen. Die Shell arbeitet mit Sensoren und Benutzereingaben (z. B. Ausrichtungssperre), um den Gesamtstatus des Systems zu bestimmen. Der Betriebssystemaudiostapel empfängt Statusbenachrichtigungen von der Shell und informiert Audioendpunkte, die den DDI-Audiostatus unterstützen.

Der Audiostapel ändert den Audiodatenstrominhalt nicht als Reaktion auf Statusänderungen. Stattdessen informiert der Audiostapel den Audiotreiber über diese Änderungen. Es wird erwartet, dass sich die IHV-Audiokomponenten an diese Änderungen anpassen, wobei die Signalverarbeitung in Hardware (DSP) oder als Software-APO implementiert ist.

Bei Desktop-PCs richten sich die statusbezogenen Szenarien für Audioendpunkte an der Anzeige aus. Der Betriebssystemaudiostapel empfängt Statusbenachrichtigungen von der Anzeige und informiert Audioendpunkte, die den DDI-Audiostatus unterstützen.

Das folgende Diagramm zeigt die Beziehung und den Ablauf der Steuerung zwischen Komponenten, die an der Behandlung von Statusänderungen für Audiogeräte beteiligt sind.

Diagramm, das die Beziehung zwischen Betriebssystemshell, Betriebssystemaudio, APO, PortCls und Audiotreiber bei der Behandlung von Statusänderungen für Audiogeräte zeigt.

Komponenten

Betriebssystem-Shell und -Sensoren

Die Shell überwacht verschiedene Sensorinformationen, die von Sensortreibern bereitgestellt werden. Zusammen mit den Sensorinformationen berücksichtigt die Shell Benutzereinstellungen, z. B. Ausrichtungssperre und App-Außerkraftsetzungen, um den Systemstatus zu bestimmen.

Betriebssystemaudiostapel

Der Audiostapel des Betriebssystems empfängt Statusinformationen von der Shell. Wenn eine Änderung des Systemstatus auftritt, informiert der Audiostapel die statusorientierten Audioendpunkte mithilfe einer KS-Eigenschaft.

IHV-Audiotreiber und APO

Der IHV-Audiotreiber zusammen mit einem optionalen APO verarbeitet Statusänderungen aus dem Betriebssystemaudiostapel. Nur die integrierten Audiogeräte, die sich direkt auf dem Standard Gehäuse des Computers befinden und von Haltungsänderungen betroffen sind, sollten die Unterstützung für die Haltung angeben.

Anforderungen an die Unterstützung von Audioendpunkten

In der folgenden Tabelle sind Audioendpunkttypen aufgeführt, die keine Unterstützung für die Statusstellung bereitstellen sollen und sollten.

Audioendpunkttyp Unterstützung für die Haltung
Built-In Lautsprecher Yes
Built-In Mikrofon/Mikrofonarray Yes
Wired-Headset No
HDMI/DisplayPort No
Externes USB-Audio No
Bluetooth-Audio No

Anforderungen an Audiotreiber

Die Statusinformationen werden dem IHV-Audiotreiber in Form einer Ausrichtung bereitgestellt. Es wird erwartet, dass der IHV-Audiotreiber implizite Kenntnisse über den Formfaktor des Geräts hat, und er muss in der Lage sein, die Standardausrichtung und die relativen Lautsprecher-/Mikrofonpositionen zu identifizieren. Diese Informationen können von ACPI oder von einem anderen IHV-Mechanismus abgerufen werden.

Datenstrukturen und Konstanten

PROPSETID

Dies ist die GUID, die für die KS-Eigenschaftssatz-ID verwendet wird.

KSPROPSETID_AudioPosture =A3FB7B0D-474E-4F51-A379-51282DD4FA8F

EIGENSCHAFTS-ID

Dies ist der Wert, der für die KSPROPERTY-ID verwendet wird.

KSPROPERTY_AUDIOPOSTURE_ORIENTATION = 1

EIGENSCHAFTENBESCHREIBUNG – AUDIOPOSTURE_ORIENTATION

Diese Eigenschaft gibt die aktuelle Ausrichtung des Systems an. Die Ausrichtung wird durch die Drehungsgrade von der Standardausrichtung dargestellt. Die Ausrichtungsinformationen werden mit der Betriebssystemshell synchronisiert, einschließlich der Benutzer-/App-Ausrichtungssperre. Der Audiotreiber empfängt diese Enumeration, wenn die Set-Eigenschaftsanforderung für KSPROPERTY_AUDIOPOSTURE_ORIENTATION verarbeitet wird.

typedef enum
{
    AUDIOPOSTURE_PANEL_ORIENTATION_NOTROTATED = 0,
    AUDIOPOSTURE_PANEL_ORIENTATION_ROTATED90DEGREESCOUNTERCLOCKWISE,
    AUDIOPOSTURE_PANEL_ORIENTATION_ROTATED180DEGREESCOUNTERCLOCKWISE,
    AUDIOPOSTURE_PANEL_ORIENTATION_ROTATED270DEGREESCOUNTERCLOCKWISE,
} AUDIOPOSTURE_ORIENTATION;

Weitere Informationen finden Sie in der AUDIOPOSTURE_ORIENTATION-Enumeration.

EIGENSCHAFTENBEHANDLUNG

Der Audiotreiber muss KSPROPSETID_AudioPosture implementieren – KSPROPERTY_AUDIOPOSTURE_ORIENTATION als pinweise Eigenschaft, auf die über das Filterhandle zugegriffen wird. Die -Eigenschaft muss für den Bridge-Pin unterstützt werden, d. h. der Pin, der den Hardwareendpunkt darstellt, für den Endpunkt.

BASIC SUPPORT – KSPROPERTY_TYPE_BASICSUPPORT

Der Audiotreiber muss Unterstützung für Set- und Access-Flags zurückgeben.

SET – KSPROPERTY_TYPE_SET

Der Audiotreiber empfängt einen Zeiger auf AUDIOPOSTURE_ORIENTATION als Eigenschaftsanforderungswertparameter. Als Reaktion auf diese Eigenschaftsanforderung kann der Audiotreiber die erforderlichen Hardware- oder Softwareänderungen für den neuen Statusstatus anwenden. Die Rückgabe des Erfolgs gibt an, dass der Treiber die Verarbeitung der Änderung abgeschlossen hat. Wenn ein IHV APO Statusinformationen vom Audiotreiber empfangen muss, können Audiomodule verwendet werden, um den Benachrichtigungsmechanismus bereitzustellen. Treiber müssen den Wert zwischenspeichern, damit er angewendet werden kann, wenn er aus geringem Stromverbrauch/Ruhezustand kommt.

AUDIOPOSTURE_ORIENTATION Orientation = *((AUDIOPOSTURE_ORIENTATION*)PropertyRequest->Value);

switch (Orientation)
{
    case AUDIOPOSTURE_ORIENTATION_NOTROTATED:
    //Cache and process the orientation
    .
    .
    case AUDIOPOSTURE_ORIENTATION_ROTATED90DEGREESCOUNTERCLOCKWISE:
    //Cache and process the orientation
    .
    .
    case AUDIOPOSTURE_ORIENTATION_ROTATED180DEGREESCOUNTERCLOCKWISE:
    //Cache and process the orientation
    .
    .
    case AUDIOPOSTURE_ORIENTATION_ROTATED270DEGREESCOUNTERCLOCKWISE:
    //Cache and process the orientation
    .
    .
}

Weitere Informationen

Windows-Treibermodell (WDM)

Übersicht über Audiotreiber