共用方式為


支援音訊狀態

概觀

裝置可以用於不同的狀態。 對於平板電腦,狀態基本上表示其保留的方向,例如直向或橫向。 這些裝置的音訊體驗可以針對特定狀態進行優化。 例如,音訊端點可以重新對應左/右通道,以取得不同方向的適當身歷聲體驗。 您也可以根據狀態變更時,根據已變更的喇叭/麥克風位置來校正麥克風,以進行噪音抑制、回應取消等。

Windows OS 支援

Windows 11 22000 版和更新版本中支援音訊狀態。

架構

音訊端點的狀態相關案例是以對狀態變更的殼層回應為基礎。 Shell 可搭配感應器和使用者輸入 (,例如方向鎖定) 來判斷整體系統狀態。 OS 音訊堆疊會從殼層接收狀態通知,並通知支援音訊狀態 DDI 的音訊端點。

音訊堆疊不會改變音訊串流內容,以回應狀態變更。 相反地,音訊堆疊會通知音訊驅動程式這些變更。 預期 IHV 音訊元件會隨著硬體 (DSP) 或軟體 APO 中實作的訊號處理來適應這些變更。

針對桌上型電腦,音訊端點的狀態相關案例會與顯示器一致。 OS 音訊堆疊會從顯示器接收狀態通知,並通知支援音訊狀態 DDI 的音訊端點。

下圖顯示與處理音訊裝置狀態變更相關的元件之間的關聯性和控制流程。

此圖顯示作業系統殼層、OS 音訊、APO、PortCls 和音訊驅動程式之間的關聯性,以處理音訊裝置的狀態變更。

單元

OS 殼層和感應器

Shell 會監視感應器驅動程式所提供的各種感應器資訊。 除了感應器資訊之外,Shell 會考慮使用者喜好設定,例如方向鎖定和應用程式覆寫,以判斷系統狀態。

OS 音訊堆疊

OS 音訊堆疊會從殼層接收狀態資訊。 發生系統狀態變更時,音訊堆疊會使用 KS 屬性通知狀態感知音訊端點。

IHV 音訊驅動程式和 APO

IHV 音訊驅動程式以及選擇性 APO 會處理 OS 音訊堆疊的狀態變更。 只有直接位於受狀態變更影響的機器主要底座上線音訊裝置應該表示支援狀態。

音訊端點支援需求

下表顯示應該和不應該提供狀態支援的音訊端點類型。

音訊端點類型 狀態支援
Built-In 演講者 Yes
Built-In 麥克風/麥克風陣列 Yes
Wired-Headset No
HDMI/DisplayPort No
外部 USB 音訊 No
藍牙音訊 No

音訊驅動程式需求

狀態資訊會以方向的形式提供給 IHV 音訊驅動程式。 IHV 音訊驅動程式預期具有裝置尺寸的隱含知識,而且必須能夠識別預設方向和相對喇叭/麥克風位置。 這項資訊可以從 ACPI 或其他 IHV 機制擷取。

資料結構和常數

PROPSETID

這是用於 KS 屬性集識別碼的 GUID。

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

屬性識別碼

這是用於 KSPROPERTY 識別碼的值。

KSPROPERTY_AUDIOPOSTURE_ORIENTATION = 1

屬性描述 - AUDIOPOSTURE_ORIENTATION

這個屬性會指定系統的目前方向。 方向是由從預設方向旋轉的程度來表示。 方向資訊與 OS 殼層同步,其中包含使用者/應用程式方向鎖定。 音訊驅動程式在處理KSPROPERTY_AUDIOPOSTURE_ORIENTATION的 Set 屬性要求時,會收到此列舉。

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

如需詳細資訊,請參閱 AUDIOPOSTURE_ORIENTATION列舉

屬性處理

音訊驅動程式必須實作 KSPROPSETID_AudioPosture – KSPROPERTY_AUDIOPOSTURE_ORIENTATION為透過篩選控制碼存取的針腳屬性。 橋接器接腳上必須支援 屬性,也就是代表端點硬體端點的針腳。

基本支援 – KSPROPERTY_TYPE_BASICSUPPORT

音訊驅動程式必須傳回設定和存取旗標的支援。

SET – KSPROPERTY_TYPE_SET

音訊驅動程式會收到AUDIOPOSTURE_ORIENTATION作為屬性要求值參數的指標。 為了回應此屬性要求,音訊驅動程式可以針對新的狀態狀態套用必要的硬體或軟體變更。 傳回成功表示驅動程式已完成處理變更。 如果 IHV APO 需要從音訊驅動程式接收狀態資訊,則可以使用音訊模組來提供通知機制。 驅動程式必須快取值,以便在從低電源/休眠時套用該值

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

另請參閱

Windows 驅動程式模型 (WDM)

音訊驅動程式概觀