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.
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
.
.
}