オーディオ姿勢のサポート

概要

デバイスはさまざまな姿勢で使用できます。 タブレットの場合、姿勢とは基本的に縦か横など持つ向きを指します。 これらのデバイスのオーディオ体験は、特定の姿勢に合わせて最適化できます。 たとえば、オーディオ エンドポイントは、さまざまな方向で適切なステレオ エクスペリエンスを実現するために、左/右チャンネルを再マッピングできます。 姿勢変化時のスピーカー/マイクの位置の変化に基づいて、ノイズ抑制やエコーキャンセルなどのマイクを校正することも可能です。

Windows OSのサポート

オーディオ ポスチャは、Windows 11 バージョン 22000 以降でサポートされています。

Architecture

オーディオ エンドポイントの姿勢関連のシナリオは、姿勢の変化に対するシェルの応答に基づいています。 シェルはセンサーとユーザー入力 (方向ロックなど) と連携して、システム全体の姿勢を決定します。 OS オーディオ スタックはシェルからポスチャ通知を受信し、オーディオ ポスチャ DDI をサポートするオーディオ エンドポイントに通知します。

オーディオ スタックは、姿勢の変化に応じてオーディオ ストリームのコンテンツを変更しません。 代わりに、オーディオ スタックはオーディオ ドライバーにこれらの変更を通知します。 IHV オーディオ コンポーネントは、ハードウェア (DSP) またはソフトウェア APO として実装された信号処理を使用して、これらの変化に適応することが期待されています。

デスクトップ PC の場合、オーディオ エンドポイントの姿勢関連のシナリオはディスプレイと一致します。 OS オーディオ スタックはディスプレイからポスチャ通知を受信し、オーディオ ポスチャ DDI をサポートするオーディオ エンドポイントに通知します。

次の図は、オーディオ デバイスの姿勢変化の処理に関連するコンポーネント間の関係と制御フローを示しています。

Diagram showing the relationship between OS Shell, OS Audio, APO, PortCls, and Audio Driver in handling posture changes for audio devices.

コンポーネント

OS シェルとセンサー

シェルは、センサー ドライバーによって提供されるさまざまなセンサー情報を監視します。 センサー情報に加えて、シェルは方向ロックやアプリのオーバーライドなどのユーザー設定を考慮して、システムの姿勢を決定します。

OS オーディオスタック

OS オーディオ スタックはシェルから姿勢情報を受け取ります。 システムの姿勢に変化が発生すると、オーディオ スタックは KS プロパティを使用して姿勢認識オーディオ エンドポイントに通知します。

IHV オーディオ ドライバーと APO

IHV オーディオ ドライバーとオプションの APO は、OS オーディオ スタックからの姿勢変化を処理します。 姿勢の変化によって影響を受ける、マシンのメイン シャーシに直接配置されているオンボード オーディオ デバイスのみが、姿勢のサポートを示す必要があります。

オーディオエンドポイントのサポート要件

次の表は、ポスチャ サポートを提供する必要があるオーディオ エンドポイント タイプと提供すべきではないオーディオ エンドポイント タイプを示しています。

オーディオエンドポイントタイプ 姿勢サポート
内蔵スピーカー はい
内蔵マイク/マイクアレイ はい
有線ヘッドセット いいえ
HDMI/DisplayPort いいえ
外部 USB オーディオ いいえ
Bluetooth オーディオ いいえ

オーディオ ドライバーの要件

姿勢情報は、方向の形で IHV オーディオ ドライバーに提供されます。 IHV オーディオ ドライバーはデバイスのフォーム ファクターに関する暗黙的な知識を持っていることが期待されており、デフォルトの向きとスピーカー/マイクの相対位置を識別できなければなりません。 この情報は、ACPI または他の IHV メカニズムによって取得できます。

データ構造と定数

PROPSETID

これは、KS プロパティ セット ID に使用される GUID です。

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

プロパティID

これは、KSPROPERTY ID に使用される値です。

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

オーディオ ドライバーは、フラグの設定とアクセスのサポートを返す必要があります。

セット – 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 Driver Model (WDM)

オーディオドライバーの概要