Supporto della postura audio
Panoramica
I dispositivi possono essere usati in posizioni diverse. Per un tablet, il comportamento significa fondamentalmente l'orientamento tenuto, ad esempio il ritratto o il paesaggio. L'esperienza audio per questi dispositivi può essere ottimizzata per posizioni specifiche. Ad esempio, gli endpoint audio possono eseguire il mapping dei canali a sinistra/destra per un'esperienza stereo appropriata in diversi orientamenti. È anche possibile calibrare i microfoni per l'eliminazione del rumore, l'annullamento dell'eco e così via, in base alle posizioni del microfono/altoparlanti modificate in caso di cambiamenti di comportamento.
Supporto del sistema operativo Windows
Il comportamento audio è supportato in Windows 11, versione 22000 e successiva.
Architettura
Gli scenari correlati al comportamento per gli endpoint audio si basano sulle risposte di Shell ai cambiamenti di comportamento. Shell funziona con Sensori e input utente (ad esempio il blocco di orientamento) per determinare il comportamento complessivo del sistema. Lo stack audio del sistema operativo riceve notifiche di comportamento da Shell e informa gli endpoint audio che supportano l'DDI del comportamento audio.
Lo stack audio non modifica il contenuto del flusso audio in risposta alle modifiche del comportamento. Invece, lo stack audio informa il driver audio di queste modifiche. L'aspettativa è che i componenti audio IHV si adattino a queste modifiche con l'elaborazione dei segnali implementati nell'hardware (DSP) o come apo software.
Per i PC desktop, gli scenari correlati al comportamento per gli endpoint audio sono allineati alla visualizzazione. Lo stack audio del sistema operativo riceve le notifiche di comportamento dalla visualizzazione e informa gli endpoint audio che supportano l'DDI del comportamento audio.
Il diagramma seguente illustra il flusso di relazione e controllo tra i componenti coinvolti nella gestione delle modifiche del comportamento per i dispositivi audio.
Componenti
Shell e sensori del sistema operativo
Shell monitora varie informazioni sul sensore fornite dai driver del sensore. Oltre alle informazioni sul sensore, Shell considera le preferenze utente, ad esempio blocco orientamento e override dell'app, per determinare il comportamento del sistema.
Stack audio del sistema operativo
Lo stack audio del sistema operativo riceve informazioni sul comportamento da Shell. Quando si verifica una modifica al comportamento del sistema, lo stack audio informa gli endpoint audio consapevoli del comportamento usando una proprietà KS.
Driver audio IHV e APO
Il driver audio IHV insieme a un apo facoltativo gestisce le modifiche del comportamento dallo stack audio del sistema operativo. Solo i dispositivi audio di onboarding che si trovano direttamente nello chassis principale del computer che sono interessati dalle modifiche del comportamento devono indicare il supporto per il comportamento.
Requisiti di supporto dell'endpoint audio
La tabella seguente mostra i tipi di endpoint audio che devono e non devono fornire supporto per il comportamento.
Tipo di endpoint audio | Supporto del comportamento |
---|---|
Built-In relatori | Sì |
Built-In matrice microfono/microfono | Sì |
Wired-Headset | No |
HDMI/DisplayPort | No |
Audio USB esterno | No |
Bluetooth Audio | No |
Requisiti del driver audio
Le informazioni sul comportamento vengono fornite al driver audio IHV sotto forma di orientamento. Il driver audio IHV dovrebbe avere conoscenze implicite sul fattore di forma del dispositivo e deve essere in grado di identificare l'orientamento predefinito e le posizioni relative del altoparlante/microfono. Queste informazioni possono essere recuperate da ACPI o da altri meccanismi IHV.
Strutture e costanti dei dati
PROPSETID
Si tratta del GUID usato per l'ID set di proprietà KS.
KSPROPSETID_AudioPosture =A3FB7B0D-474E-4F51-A379-51282DD4FA8F
ID PROPRIETÀ
Questo è il valore usato per L'ID KSPROPERTY.
KSPROPERTY_AUDIOPOSTURE_ORIENTATION = 1
DESCRIZIONE PROPRIETÀ - AUDIOPOSTURE_ORIENTATION
Questa proprietà specifica l'orientamento corrente del sistema. L'orientamento è rappresentato dai gradi di rotazione dall'orientamento predefinito. Le informazioni sull'orientamento sono sincronizzate con os Shell, che include il blocco di orientamento utente/app. Il driver audio riceve questa enumerazione durante la gestione della richiesta di proprietà Set per KSPROPERTY_AUDIOPOSTURE_ORIENTATION.
typedef enum
{
AUDIOPOSTURE_PANEL_ORIENTATION_NOTROTATED = 0,
AUDIOPOSTURE_PANEL_ORIENTATION_ROTATED90DEGREESCOUNTERCLOCKWISE,
AUDIOPOSTURE_PANEL_ORIENTATION_ROTATED180DEGREESCOUNTERCLOCKWISE,
AUDIOPOSTURE_PANEL_ORIENTATION_ROTATED270DEGREESCOUNTERCLOCKWISE,
} AUDIOPOSTURE_ORIENTATION;
Per altre informazioni, vedere l'enumerazione AUDIOPOSTURE_ORIENTATION.
GESTIONE DELLE PROPRIETÀ
Il driver audio deve implementare KSPROPSETID_AudioPosture: KSPROPERTY_AUDIOPOSTURE_ORIENTATION come proprietà pin-wise a cui si accede tramite l'handle di filtro. La proprietà deve essere supportata nel pin del bridge, ad esempio il pin che rappresenta l'endpoint hardware per l'endpoint.
SUPPORTO BASIC : KSPROPERTY_TYPE_BASICSUPPORT
Il driver audio deve restituire il supporto per set e flag di accesso.
SET – KSPROPERTY_TYPE_SET
Il driver audio riceve un puntatore a AUDIOPOSTURE_ORIENTATION come parametro del valore della richiesta di proprietà. In risposta a questa richiesta di proprietà, il driver audio può applicare le modifiche hardware o software necessarie per il nuovo stato di comportamento. La restituzione dell'esito positivo indica che il driver ha completato l'elaborazione della modifica. Se un apo IHV deve ricevere informazioni sul comportamento dal driver audio, i moduli audio possono essere usati per fornire il meccanismo di notifica. I driver devono memorizzare nella cache il valore in modo che possa essere applicato quando esce da bassa potenza/ibernazione
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
.
.
}