この記事では、Windows 11 バージョン 22H2 (KB5026446) で導入された Bluetooth LE Audio の概要について説明します。
イントロダクション
Bluetooth LE Audio を使用すると、等時性トランスポートを介して、Bluetooth LE デバイスにユニキャストまたはブロードキャストオーディオをストリーミングできます。 Bluetooth コア仕様のバージョン 5.3 以降では、ホスト プラットフォームが Bluetooth コントローラーとの間で等時性データを送受信するための標準定義ホスト コントローラー インターフェイス (HCI) はありません。 このドキュメントでは、Windows Bluetooth ベンダー固有のオーディオ パス (VSAP) を定義して、プラットフォームがベンダー固有のソリューションを使用して LE オーディオ ストリーミングBluetoothできるようにします。 VSAP ソフトウェア インターフェイスでは、Windows オーディオ クラス拡張機能 (ACX) と、このドキュメントで定義されているその他のインターフェイス プロパティを使用します。
用語と前提条件
このドキュメントでは、この表で定義されている用語に加えて、Windows オーディオ クラス拡張で定義されている用語も参照します。
任期 | 定義 |
---|---|
LE オーディオ | Bluetooth LE Audio の略語 |
クラシック オーディオ | ハンズフリー プロファイル (HFP) と高度なオーディオ配布プロファイル (A2DP) を使用するBluetoothオーディオ ストリーミング |
オーディオ デバイス | 単一のリモート Bluetooth LE Audio デバイス、または Windows の観点から単一のオーディオ エンドポイントを構成する一連のBluetooth LE Audio デバイス。 |
BAP | 基本オーディオ プロファイルでは、デバイスが低エネルギー (LE) 通信を使用してオーディオBluetooth配布および使用する方法を定義します。 |
TMAP | テレフォニーおよびメディア オーディオ プロファイルは、下位レベルのオーディオ サービスとプロファイルの相互運用可能な構成を指定します。 |
ASCS | Audio Stream Control Service は、LE Audio デバイスをBluetoothしてユニキャスト オーディオ ストリームを構成および確立するための標準的な方法を定義します。 |
PACS | 発行済みオーディオ機能サービスは、Bluetooth LE Audio デバイスがサポートしているオーディオコーデック機能を報告するための標準的な方法を定義します。 |
独立国家共同体 | Connected Isochronous Streams トランスポートは、Bluetooth LE デバイス間でユニキャスト オーディオ データを送受信するために使用されます。 |
BIS | ブロードキャスト 等時ストリーム トランスポートは、コネクションレス オーディオ データ転送に使用されます。 |
ACX | オーディオ クラス拡張機能の略です。これは、Windows 上の Bluetooth LE Audio をサポートするためにすべてのオーディオ ドライバーに必要なドライバー モデルです。 |
ストリーミング回線 | ベンダー固有のオーディオ ドライバー スタックによって作成された 1 つ以上の ACXCIRCUIT オブジェクトのストリーミング パス。 |
プロファイル回路 | Windows 上の Bluetooth LE Audio プロファイル実装によって作成された ACXCIRCUIT オブジェクト。 この ACXCIRCUIT は、ACX 仕様で定義されているヘッド回線として機能し、ストリーミング回線ではありません。 |
このドキュメントでは、以前に定義した用語と、 Bluetooth Core 5.3 仕様で定義されている次の HCI コマンドについて理解していることを前提としています。
- HCI_Read_Local_Supported_Codecs (v2)
- HCI_Read_Local_Supported_Codec_Capabilities
- HCI_LE_Set_CIG_Parameters
- HCI_LE_Create_CIS
- HCI_Configure_Data_Path
- HCI_LE_Setup_ISO_Data_Path
- HCI_LE_Remove_ISO_Data_Path
- HCI_LE_Remove_CIG
Bluetooth LE Audio VSAP は、オーディオドライバーが ACX フレームワークを使用する必要があります。 Bluetooth LE Audio に ACX を採用すると、次のようないくつかの利点があります。
- 今後の Windows 向けに推奨されるオーディオ ドライバー モデルをサポートします。
- ドライバー間の専用 DDI を必要とせずに、マルチ スタック オーディオ ソリューションに対する ACX のネイティブ サポートを使用します。
- オーディオ システムから Bluetooth スタックに要求を中継するために IHV オーディオ ドライバーは必要ありません。 代わりに、ACX はプロファイル回線を介してBluetooth スタックに直接要求を送信できます。
アーキテクチャ
定義
次のコンポーネントは、さまざまな VSAP アーキテクチャバリアントに関連しています。
Windows ACX フレームワーク
このコンポーネントは、マルチスタック オーディオ エンドポイントのサポートを有効にします。 Bluetooth LE Audio の場合、オーディオ エンドポイントを構成するソフトウェア コンポーネントは、ベンダー固有のオーディオ ドライバー スタックと Windows Bluetooth LE Audio プロファイルです。
ベンダー固有のオーディオ ドライバー スタック
このベンダー固有のコンポーネントは、ベンダー定義のオーディオ インターフェイスを介して、Bluetooth コントローラーとの間Bluetooth LE オーディオ データの送受信を担当します。 受信および送信オーディオ データを管理するための ACX ストリーミング ドライバーで構成されます。 マルチ回線 ACX オーディオ エンドポイントの必要な部分である場合は、より多くの ACX ドライバーが含まれる場合があります。 このコンポーネントは、このドキュメントでは IHV ACX ストリーミング ドライバーとも呼ばれます。
Windows Bluetooth LE Audio プロファイル
このコンポーネントには、Basic Audio Profile (BAP)、Volume Control Profile、および Microphone Control Profile の実装が含まれています。 Windows とペアリングされた各Bluetooth LE Audio デバイスまたはデバイス セットのコントロール ACXCIRCUIT を作成し、リモート デバイスとBluetooth コントローラーによって報告されるオーディオ形式を報告し、等時性チャネルとグループの状態を管理する役割を担います。
Windows Bluetooth コア スタック
このコンポーネントは、Windows Bluetooth LE Audio Profile がサポートされているコーデック機能をローカル Bluetooth コントローラーから照会し、等時性チャネルとグループの状態を管理できるようにするインターフェイスを提供します。
LC3 コーデック
このサブコンポーネントは、圧縮された LC3 オーディオと PCM オーディオ間の変換を担当します。 エンコード機能とデコード機能の両方をサポートするものとし、ベンダー固有のオーディオ ドライバー (VSAP) スタックの一部としてソフトウェアで、またはオーディオ DSP または Bluetooth コントローラーの一部としてハードウェアで実装できます。 この図では、BLUETOOTH SIG でサポートされている標準コーデックであるため、LC3 が名前で示されています。 ただし、Windows でサポートされる将来のコーデックとベンダー固有のコーデックも、同様の方法でアーキテクチャに組み込まれる可能性があります。
アーキテクチャバリアント
Bluetooth LE Audio VSAP アーキテクチャでは、ストリーミングのさまざまなバリエーションがサポートされています。
- オーディオ オフロードなしのサイドバンド Bluetooth LE オーディオ ストリーミング
- オーディオ オフロードによるサイドバンド Bluetooth LE オーディオ ストリーミング
- ベンダー固有のインバンドBluetooth LEオーディオストリーミング
次の図では、シェーディングされたコンポーネントは IHV によって提供され、非シェーディング コンポーネントは OS によって提供されます。
オーディオ オフロードなしのサイドバンド Bluetooth LE オーディオ アーキテクチャ
サイドバンド アーキテクチャでは、ベンダー固有のオーディオ インターフェイスを使用して、オーディオ ドライバー スタックがBluetooth コントローラーにオーディオ データを送受信できるようにします。 このデータ パスは、ユニキャスト クライアントとリモート ユニキャスト サーバー間のメッセージのシグナリングなど、他のBluetooth データに使用される HCI データ パスとは別です。 次の図は、LC3 コーデックが Bluetooth コントローラでホストされているサイドバンド アーキテクチャをモデル化しています。 ソフトウェアのエンコードとデコードのために、ベンダー固有のオーディオ ドライバー スタックの一部として LC3 コーデックをホストすることも有効です。 その場合、Bluetooth コントローラーに送信されるオーディオは、PCM オーディオではなく LC3 オーディオ フレームとして書式設定されます。
次の図は、Bluetooth コントローラ内にLC3コーデックを搭載した、LE Audioアーキテクチャのサイドバンドを示しています。
次の図は、Bluetooth LE Audio アーキテクチャにおいて、オーディオドライバースタック内の LC3 コーデックを使用した側帯を示しています。
オーディオ オフロードを備えたサイドバンド Bluetooth LE オーディオ アーキテクチャ
オーディオ オフロードを備えたサイドバンド アーキテクチャには、Bluetooth LE オーディオ ストリーミング ソリューションと省電力の利点を提供するオーディオ DSP ハードウェア コンポーネントが含まれています。 次の図は、Bluetooth コントローラーの LC3 コーデックとオーディオ DSP のコーデックを使用したアーキテクチャの例です。
次の図は、Bluetooth コントローラーにLC3コーデックを備えたオーディオオフロードアーキテクチャを持つLE Audioのサイドバンドを示しています。
次の図は、オーディオ DSP Bluetooth LC3 コーデックを使用したオーディオ オフロード アーキテクチャを備えた LE Audio のサイドバンドを示しています。
ベンダー固有のインバンドBluetooth LEオーディオアーキテクチャ
VSAP インバンド アーキテクチャを使用すると、カスタム パイプラインは、ベンダー固有のオーディオ ドライバー スタックから Bluetooth コントローラーの HCI にBluetooth LE Audio データを送受信できます。 このアーキテクチャには、"IHV ISO マージ コンポーネント" という新しいコンポーネントが含まれています。このコンポーネントは、ISO データのフロー制御を管理します。 また、HCI コマンドを送信する必要がある場合は、Windows Bluetooth Core Stack と HCI コマンド フロー制御を共有する必要があります。
次の図は、ベンダー固有のインバンドBluetooth LEオーディオアーキテクチャを示しています。
詳細な設計
オーディオ形式の要件
オーディオ フレームの継続時間
Bluetooth LE Audio プロファイルを使用すると、7.5 ミリ秒または 10 ミリ秒のオーディオ フレーム期間でオーディオ ストリーミングをサポートできます。 Windows では、BLUETOOTH LE オーディオ アクセサリ デバイスとの相互運用性と、システムに接続されている他のBluetooth LE デバイスとの品質の共存を確保するために、両方のフレーム期間をサポートするために、IHV によって提供されるコーデックが必要です。
信号処理モードの定義
Bluetooth LE Audio では、さまざまなユーザー シナリオをサポートするために、さまざまなストリーミング形式がサポートされています。 BAP および TMAP の仕様では、認定でサポートされる必須の形式が定義されています。 Windows では 、オーディオ信号処理モード を適用して、使用する形式をシステムによって実行されるシナリオと関連付けます。 Bluetooth LE Audio をサポートするオーディオ ドライバーは、次の表の信号処理モードとフォーマットのサポートを示す必要があります。 さらに、Bluetooth LE Audio は生の信号処理モードをサポートしていないため、オーディオ ドライバーはこのモードでサポートされている形式をアドバタイズしません。
レンダリング ストリーム オーディオ 信号 処理 モード
Bluetooth LE Audio では、次の信号処理モードでレンダリング オーディオ形式を宣言する必要があります。
- 既定値 (AUDIO_SIGNALPROCESSINGMODE_DEFAULT)
- このモードは、音楽の再生、通知、ビデオ ゲームオーディオなどの一方向のレンダリング シナリオに使用されます。
- 通信 (AUDIO_SIGNALPROCESSINGMODE_COMMUNICATIONS)
- このモードは、音声通話などの双方向シナリオで使用されます。
次の表は、各ユース ケースと信号処理モードの形式の一覧です。 オーディオ形式は、最も優先されるものから最も優先順位が低いものまでの順に並べられています。
ステレオ デバイスまたは調整された一連のデバイスに接続されている場合のシステム サウンド、音楽再生、およびビデオ ゲーム オーディオ
信号処理モード: デフォルト
サンプリング周波数 | チャネル数 | ビット深度 | フレームの期間 | オーディオ データ レート | BAP コーデック構成 ID (BAP 仕様の表 3.11) |
---|---|---|---|---|---|
48 kHz | 2 | 16 | 7.5 ミリ秒 | 96 kbps | 48_3 |
48 kHz | 2 | 16 | 7.5 ミリ秒 | 80 kbps | 48_1 |
48 kHz | 2 | 16 | 10 ミリ秒 | 96 kbps | 48_4 |
48 kHz | 2 | 16 | 10 ミリ秒 | 80 kbps | 48_2 |
24 kHz | 2 | 16 | 7.5 ミリ秒 | 48 kbps | 24_1 |
24 kHz | 2 | 16 | 10 ミリ秒 | 48 kbps | 24_2 |
連携されたセットの単一メンバー(片方のイヤホンまたは補聴器)に接続されている場合には、システム音、音楽再生、ビデオゲームの音声が影響を受けます。
信号処理モード: デフォルト
サンプリング周波数 | チャネル数 | ビット深度 | フレームの期間 | オーディオ データ レート | BAP コーデック構成 ID (BAP 仕様の表 3.11) |
---|---|---|---|---|---|
48 kHz | 1 | 16 | 7.5 ミリ秒 | 96 kbps | 48_3 |
48 kHz | 1 | 16 | 7.5 ミリ秒 | 80 kbps | 48_1 |
48 kHz | 1 | 16 | 10 ミリ秒 | 96 kbps | 48_4 |
48 kHz | 1 | 16 | 10 ミリ秒 | 80 kbps | 48_2 |
24 kHz | 1 | 16 | 7.5 ミリ秒 | 48 kbps | 24_1 |
24 kHz | 1 | 16 | 10 ミリ秒 | 48 kbps | 24_2 |
16 kHz | 1 | 16 | 7.5 ミリ秒 | 32 kbps | 16_1 |
16 kHz | 1 | 16 | 10 ミリ秒 | 32 kbps | 16_2 |
ボイス チャットを使用してボイス レコーダー、VOIP 通話、またはビデオ ゲーム オーディオをレンダリングする
信号処理モード: 通信
サンプリング周波数 | チャネル数 | ビット深度 | フレームの期間 | オーディオ データ レート | BAP コーデック構成 ID (BAP 仕様の表 3.11) |
---|---|---|---|---|---|
32 kHz (キロヘルツ) | 1 | 16 | 7.5 ミリ秒 | 64 kbps | 32_1 |
32 kHz | 1 | 16 | 10 ミリ秒 | 64 kbps | 32_2 |
24 kHz | 1 | 16 | 7.5 ミリ秒 | 48 kbps | 24_1 |
24 kHz | 1 | 16 | 10 ミリ秒 | 48 kbps | 24_2 |
16 kHz | 1 | 16 | 7.5 ミリ秒 | 32 kbps | 16_1 |
16 kHz | 1 | 16 | 10 ミリ秒 | 32 kbps | 16_2 |
ストリーム オーディオ信号処理モードをキャプチャする
BLUETOOTH LE Audio では、既定 (AUDIO_SIGNALPROCESSINGMODE_DEFAULT) 信号処理モードでキャプチャ オーディオ形式を宣言する必要があります。 サポートされているキャプチャ形式の一覧を次の表に示します。
オーディオ形式は、最も優先されるものから最も優先順位が低いものまでの順に並べられています。
ボイス チャットを使用してボイス レコーダー、VOIP 通話、またはビデオ ゲーム オーディオをキャプチャする
信号処理モード: デフォルト
サンプリング周波数 | チャネル数 | ビット深度 | フレームの期間 | オーディオ データ レート | BAP コーデック構成 ID (BAP 仕様の表 3.11) |
---|---|---|---|---|---|
32 kHz | 1 | 16 | 7.5 ミリ秒 | 64 kbps | 32_1 |
32 kHz | 1 | 16 | 10 ミリ秒 | 64 kbps | 32_2 |
24 kHz | 1 | 16 | 7.5 ミリ秒 | 48 kbps | 24_1 |
24 kHz | 1 | 16 | 10 ミリ秒 | 48 kbps | 24_2 |
16 kHz | 1 | 16 | 7.5 ミリ秒 | 32 kbps | 16_1 |
16 kHz | 1 | 16 | 10 ミリ秒 | 32 kbps | 16_2 |
定義済みのストリーム構成とトポロジ
レンダリングのみの構成
基本的なオーディオ プロファイル構成 1
次のオーディオ構成は、Bluetooth BAP 仕様の表 4.1 で定義されています
PC は、モノラル ストリームをサポートする単一のオーディオ デバイスに接続されています。 1 つのデバイスは、スタンドアロン デバイスでも、座標セットの 1 つの接続されたメンバーでもかまいません。
ユースケース例 | Windows オーディオ設定 | Bluetooth コントローラーの設定 |
---|---|---|
メディア再生 |
レンダリング: 信号処理モード:デフォルト チャネル数: 1 キャプチャ: なし |
CIS カウント: 1 CIG カウント: 1 BAP QoS 設定: 高い信頼性 |
オーディオ デバイスでマイクを使用しない音声通話 |
レンダリング: 信号処理モード:通信 チャネル数: 1 キャプチャ: なし |
CIS カウント: 1 CIG カウント: 1 BAP QoS 設定: 低待機時間 |
ビデオ ゲームの再生 |
レンダリング: 信号処理モード:デフォルト チャネル数: 1 キャプチャ: なし |
CIS カウント: 1 CIG カウント: 1 BAP QoS 設定: 低待機時間 |
基本的なオーディオ プロファイルの構成 4
次のオーディオ構成は、Bluetooth BAP 仕様の表 4.1 で定義されています
PC は、ステレオ ストリームをサポートする単一のオーディオ デバイスに接続されています。 オーディオ デバイスは、1 つの CIS で 2 つのオーディオ チャネルを処理できます。
ユースケース例 | Windows オーディオ設定 | Bluetooth コントローラーの設定 |
---|---|---|
メディア再生 |
レンダリング: 信号処理モード: 既定値 チャネル数: 2 キャプチャ: なし |
CIS カウント: 1 CIG カウント: 1 BAP QoS 設定: 高信頼性のオーディオチャンネル割り当て: フロント左、フロント右 |
ビデオ ゲームの再生 | 信号処理モード:デフォルト チャネル数: 2 キャプチャ: なし |
CIS カウント: 1 CIG カウント: 1 BAP QoS 設定: 低待機時間 オーディオ チャネルの割り当て: フロント左右 |
基本的なオーディオ プロファイル構成 6(i)
次のオーディオ構成は、Bluetooth BAP 仕様の表 4.1 で定義されています
PC は、ステレオ ストリームをサポートする単一のオーディオ デバイスに接続されています。 オーディオ デバイスは、2 つの CIS のそれぞれで 1 つのオーディオ チャネルのみを処理できます。
ユースケース例 | Windows オーディオ設定 | Bluetooth コントローラーの設定 |
---|---|---|
メディア再生 | 信号処理モード:デフォルト チャネル数: 2 キャプチャ: なし |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 高い信頼性 |
オーディオ デバイスでマイクを使用しない音声通話 | 信号処理モード:通信 チャネル数: 1 キャプチャ: なし |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 低待機時間 オーディオ チャネルの割り当て: フロント左またはフロント右 |
ビデオ ゲームの再生 | 信号処理モード:デフォルト チャネル数: 2 キャプチャ: なし |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 低待機時間 オーディオ チャネルの割り当て: フロント左右 |
基本的なオーディオ プロファイルの構成 6(ii)
次のオーディオ構成は、Bluetooth BAP 仕様の表 4.1 で定義されています
PC は、調整されたオーディオ デバイスのセットに接続されています。 このセットは、各メンバーが 1 つのチャネルを処理する 2 つのオーディオ チャネルを処理できます。
ユースケース例 | Windows オーディオ設定 | Bluetooth コントローラーの設定 |
---|---|---|
メディア再生 | 信号処理モード:デフォルト チャネル数: 2 キャプチャ: なし |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 高い信頼性 |
いずれのデバイスでもマイクのない音声通話 | 信号処理モード:通信 チャネル数: 1 キャプチャ: なし |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 低待機時間 |
ビデオ ゲームの再生 | 信号処理モード:デフォルト チャネル数: 2 キャプチャ: なし |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 低待機時間 |
双方向の構成
双方向構成は、Bluetooth LE Audio プロファイルが、アプリケーションがリモート デバイスまたは一連のデバイスにキャプチャ ストリームとレンダリング ストリームの両方を作成することを検出するときに使用されます。 アプリケーションはキャプチャ ストリームとレンダリング ストリームを個別に制御するため、IHV オーディオ ドライバーと Bluetooth コントローラーでは、HCI コマンドの [データ パスの構成] および [LE Setup ISO Data Path] を使用してプロビジョニングした後、双方向 CIS の単一方向にオーディオを流せるようにする必要があります。
基本的なオーディオ プロファイルの構成 3
次のオーディオ構成は、Bluetooth BAP 仕様の表 4.1 で定義されています
PC は、1 つの CIS で確立された双方向モノラル ストリームを使用して、単一のオーディオ デバイスに接続されます。
使用事例 | Windows オーディオ設定 | Bluetooth コントローラーの設定 |
---|---|---|
音声通話 |
レンダ: 信号処理モード:通信 チャネル数: 1 捕獲: 信号処理モード:デフォルト チャネル数: 1 |
CIS カウント: 1 CIG カウント: 1 BAP QoS 設定: 低待機時間 |
ボイス チャットを使用したビデオ ゲームの再生 |
レンダ: 信号処理モード:通信 チャネル数: 1 捕獲: 信号処理モード:デフォルト チャネル数: 1 |
CIS カウント: 1 CIG カウント: 1 BAP QoS 設定: 低待機時間 |
基本的なオーディオ プロファイル構成 8(i)
次のオーディオ構成は、Bluetooth BAP 仕様の表 4.1 で定義されています
PC は、ステレオ レンダリング ストリームとモノラル キャプチャ ストリームをサポートする単一のオーディオ デバイスに接続されています。 デバイスは、特定の方向に対して 1 つの CIS でオーディオの 1 つのチャネルを処理できます。
使用事例 | Windows オーディオ設定 | Bluetooth コントローラーの設定 |
---|---|---|
音声通話 |
レンダ: 信号処理モード:通信 チャネル数: 1 捕獲: 信号処理モード:デフォルト チャネル数: 1 |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 低待機時間 |
ボイス チャットを使用したビデオ ゲームの再生 |
レンダ: 信号処理モード:通信 チャネル数: 2 捕獲: 信号処理モード:デフォルト チャネル数: 1 |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 低待機時間 |
基本的なオーディオ プロファイル構成 8(ii)
次のオーディオ構成は、Bluetooth BAP 仕様の表 4.1 で定義されています
PC は、調整されたオーディオ デバイスのセットに接続されています。 各セット メンバーは、レンダー オーディオの 1 つのチャネルを受け取ります。 1 つのセット メンバーに確立されたキャプチャ ストリームがあります。 キャプチャ ストリームを持つセット メンバーは、キャプチャ ストリームもサポートする PC に接続する最初のセット メンバーです。
使用事例 | Windows オーディオ設定 | Bluetooth コントローラーの設定 |
---|---|---|
音声通話 |
レンダ: 信号処理モード:通信 チャネル数: 1 捕獲: 信号処理モード:デフォルト チャネル数: 1 |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 低待機時間 |
ボイス チャットを使用したビデオ ゲームの再生 |
レンダ: 信号処理モード:通信 チャネル数: 2 捕獲: 信号処理モード:デフォルト チャネル数: 1 |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 低待機時間 |
キャプチャのみの構成
基本的なオーディオ プロファイル構成 2
次のオーディオ構成は、Bluetooth BAP 仕様の表 4.1 で定義されています
PC は、モノラル キャプチャ ストリームをサポートする単一のオーディオ デバイスに接続されています。
使用事例 | Windows オーディオ設定 | Bluetooth コントローラーの設定 |
---|---|---|
デバイスに話者がいない音声通話 | レンダリング: なし 捕獲: 信号処理モード:デフォルト チャネル数: 1 |
CIS カウント: 1 CIG カウント: 1 BAP QoS 設定: 低待機時間 |
基本的なオーディオ プロファイル構成 9(i)
次のオーディオ構成は、Bluetooth BAP 仕様の表 4.1 で定義されています
PC は、ステレオ オーディオ データの送信をサポートする単一のオーディオ デバイスに接続されています。 デバイスは、1 つの CIS でオーディオの 1 つのチャネルをエンコードできます。
使用事例 | Windows オーディオ設定 | Bluetooth コントローラーの設定 |
---|---|---|
マルチチャンネルマイクキャプチャ | レンダリング: なし 捕獲: 信号処理モード:デフォルト チャネル数: 1 |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 低待機時間 |
基本的なオーディオ プロファイル構成 9(ii)
PC は、モノラル キャプチャ ストリームをサポートする単一のオーディオ デバイスに接続されています。
次のオーディオ構成は、Bluetooth BAP 仕様の表 4.1 で定義されています
PC は一連のオーディオ デバイスに接続されています。 各セット メンバーは、オーディオの 1 つのチャネルを PC に送信します。
使用事例 | Windows オーディオ設定 | Bluetooth コントローラーの設定 |
---|---|---|
マルチチャンネルマイクキャプチャ | レンダリング: なし 捕獲: 信号処理モード:デフォルト チャネル数: 1 |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 低待機時間 |
リモート デバイスまたはデバイス セットが双方向オーディオをサポートしている場合、キャプチャのみのストリームの構成は双方向の構成と同じです。 これにより、キャプチャのみのシナリオから双方向のシナリオに移行でき、ストリームを再作成する必要はありません。
データ構造
MICROSOFT で定義された Bluetooth LE Audio インターフェイスのプロパティ
ストリーム作成プロパティ
次のプロパティは、ストリーム作成シナリオに示すように、ベンダー固有のオーディオ ドライバー スタックと ACXOBJECTBAGDDI を 介して Bluetooth LE Audio Profile の間で共有され、 ストリーム エンドポイントの作成と構成に関する決定を通知します。
Bluetooth LE オーディオ コーデック能力
このプロパティは、オーディオ ドライバーまたはオーディオ DSP でサポートされているオーディオ ストリーミング機能のサポートを示すために、オーディオ ドライバーによって設定されます。 プロパティ値は DDI AcxObjectBagAddBlob を使用して設定され、値の形式は PACS 仕様で定義されている PAC レコードと同じです。
Windows Bluetooth LE Audio プロファイルは、プロパティを読み取って、使用できるコーデック構成とストリーム構成を決定します。
フィールド | オクテット |
---|---|
処理能力数 | 0 |
コーデック ID[i] | 1-6 |
コーデック固有の機能の長さ[i] | 7 |
コーデック固有の機能 | 8... n |
メタデータの長さ (m) | n + 1 |
メタデータ | n+2...m |
フィールド値は、PACS 仕様の表 3.2 および表 3.4 で定義されています。
Bluetooth_DatapathID
このプロパティは、コマンドのHCI_LE_Setup_ISO_Data_PathとHCI_Configure_Data_Pathのパラメーターとして使用されるデータ パス ID を示すために、オーディオ ドライバーによって設定されます。 プロパティ値は 、AcxObjectBagAddUI8 DDI を使用して設定されます。
Bluetooth LE Audio プロファイルは、このプロパティを読み取って使用し、HCI_Configure_Data_PathコマンドとHCI_LE_Setup_ISO_Data_Path コマンドのパラメーターとして使用します。 この ID は、オブジェクト バッグに関連付けられている ACXSTREAM に対して作成されたすべての等時性ストリームに適用されます。
フィールド | オクテット |
---|---|
データ パス ID | 0 |
このプロパティがオーディオ ドライバーによって設定されていない場合、OS は HCI コマンドのパラメーターとして値 1 を使用します。
Bluetooth_DatapathConfiguration
このプロパティは、HCI_Configure_Data_Path コマンドを使用して、Bluetooth コントローラーにベンダー固有の構成を提供するオーディオ ドライバーによって設定されます。 255 バイト以下にする必要があります。これは、Bluetooth コントローラーが HCI コマンドに対して受け入れる最大のペイロードです。 プロパティ値は 、AcxObjectBagAddBlob DDI を使用して設定されます。 この構成は、オーディオ ドライバーによって設定されるすべてのデータ パス ID に適用されます。
BluetoothLEAudio コーデック構成
このプロパティは、コーデック構成がオーディオ デバイスで構成された後、DDI AcxObjectBagAddBlob を使用して、Bluetooth LE Audio プロファイルによって設定されます。 値の構造は次のとおりです。
フィールド | オクテット |
---|---|
構成数 | 0 |
コーディング形式[i] | 3 |
会社 ID[i] | 1-2 |
ベンダー固有のコーデック ID[i] | 3-4 |
コーデック固有の構成長[i] | 5 |
コーデック固有の構成[i] | 6... n |
フィールド値は、 Bluetooth Audio Stream Control Service 仕様の表 4.3 で定義されています。
LC3 コーデックが ACX ストリーミング ドライバーまたはオーディオ DSP にある場合は、ベンダー固有のオーディオ ドライバー スタックでこのプロパティを読み取る必要があります。
インターフェイス
オーディオ エンドポイント テンプレートのバインド ID
ペアリングされたBluetooth デバイスの ACX 回線がいつ作成されているかを知るために、オーディオ ドライバーの ACX 回線ファクトリによって使用されます。
LE オーディオ回路Bluetooth作成するには、次のコンポーネント ID を使用します。
// {5C52FDB5-722A-4AB7-A342-70163B7E9B5C}
DEFINE_GUID(GUID_BLUETOOTH_LEAUDIO_RENDER_COMPONENT_ID,
0x5c52fdb5, 0x722a, 0x4ab7, 0xa3, 0x42, 0x70, 0x16, 0x3b, 0x7e, 0x9b, 0x5c);
// {1DFF2EE3-AE89-441C-BDE3-24F885C55DF8}
DEFINE_GUID(GUID_BLUETOOTH_LEAUDIO_CAPTURE_COMPONENT_ID,
0x1dff2ee3, 0xae89, 0x441c, 0xbd, 0xe3, 0x24, 0xf8, 0x85, 0xc5, 0x5d, 0xf8);
Bluetooth LE Audio サポート インターフェイス
オーディオ ドライバー スタックが、LE Audio Bluetoothストリーミングで使用可能であることを示すために使用されます。 Windows Bluetooth Audio サービスレベルでこのインターフェイスを監視し、公開されるまで待機してから、Bluetooth LE Audio サポートを有効にします。
Bluetooth LE Audio サポート インターフェイスを公開するには、次のインターフェイス ID を使用します。
// {BA02FA1B-0FD0-4A0F-A748-4FAE2E2D2F67}
DEFINE_GUID(GUID_BLUETOOTH_LEAUDIO_SUPPORT_INTERFACE,
0xba02fa1b, 0x0fd0, 0x4a0f, 0xa7, 0x48, 0x4f, 0xae, 0x2e, 0x2d, 0x2f, 0x67);
シーケンス
オーディオ ドライバーの初期化
IHV ACX ストリーミング ドライバーが読み込み、LE オーディオ ストリーミングBluetoothサポートしていると判断した場合は、 ACXFACTORYCIRCUIT オブジェクトを作成し、 オーディオ エンドポイント テンプレート バインド ID で定義されている ID を使用して ACX でBluetoothテンプレート バインドを登録することによって、テクノロジのサポートを示す必要があります。
エンドポイントの作成
- LE Audio デバイスがシステムとペアリングされている場合、Bluetooth LE Audio Profile:
- リモート デバイスの公開されたオーディオ機能を読み取ります。
- HCI_Read_Local_Support_Codecs [v2] および HCI_Read_Local_Supported_Codec_Capabilities コマンドを送信して、コントローラーでサポートされている機能を検出します。
- Bluetooth コントローラーとリモート オーディオ デバイスでサポートされているコーデック機能に基づいて、サポートされている形式が設定された ACXCIRCUIT を作成します。 コーデックのサポートがオーディオ DSP またはオーディオ ドライバーにあるため、コントローラーがコーデックをサポートしていない場合、サポートされる形式はリモート オーディオ デバイスでサポートされている形式に設定されます。
- ACXCIRCUIT が作成されると、ACX は、ストリーム処理用の ACXCIRCUIT を作成するために、IHV ACX ストリーミング ドライバーの ACX 回線ファクトリを要求します。
- 回線を作成する要求を受信すると、IHV ACX ストリーミング ドライバーは処理を開始します。
- ACXCIRCUIT、ACXPIN、ACXOBJECTBAG、および ACXSTREAMBRIDGE オブジェクトを作成します。
- LC3 またはベンダー固有のコーデックがオーディオ ドライバーまたは DSP でホストされている場合、IHV ACX ストリーミング ドライバーは ACXOBJECTBAG のBluetoothLEAudio_CodecCapabilitiesプロパティを設定します。
- IHV ACX ストリーミング ドライバーは、ACXOBJECTBAG Bluetooth_DatapathID または Bluetooth_DatapathConfiguration (現時点でわかっている場合) を設定できます。
- 両方の回線が作成されると、ACX は IHV ACX ドライバーのブリッジ ピンで EvtAcxPinConnected コールバックを呼び出します。
-
EvtAcxPinConnected コールバックが呼び出されると、IHV ACX ストリーミング ドライバーが呼び出されます。
- AcxTarget を使用してプロファイル回線のブリッジ ピンを取得 します。.. プロファイル回線でサポートされている形式を取得する API。
- プロファイル回線によって設定された ACXDATAFORMATの一覧を反復処理します。 Bluetooth オーディオ コーデックがオーディオ ドライバーまたはオーディオ DSP でホストされている場合、IHV オーディオ ドライバーは、コーデックとプロファイル回線でサポートされている形式で ACXDATAFORMATを更新します。 それ以外の場合、すべての形式が IHV ACX ストリーミング ドライバーのホスト ピンにコピーされます。
- オフロード ストリーミング用にオーディオ エンジンが作成された場合に、ブリッジ ピンの更新された形式の一覧を設定します。
- フォーマットが更新されると、ACX は両方のインターフェイスを有効にし、オーディオ エンドポイントが作成されます。
ストリームの作成
- アプリケーションがオーディオ ストリームの作成を要求すると、ACX は、IHV ACX ストリーミング ドライバーから始まる、各回線に対して登録済みの EvtCircuitCreateStream コールバックを呼び出します。
-
EvtCircuitCreateStream コールバックが呼び出されると、IHV ACX ストリーミング ドライバーは次のようになります。
- ACXSTREAMBRIDGE にアタッチされている ACXOBJECTBAG の Bluetooth_DatapathId プロパティと Bluetooth_DataPathConfiguration プロパティを設定または更新します。
- ストリーム状態遷移と RT ストリーム処理のコールバックが設定された ACXSTREAM を作成します。
- オーディオ パイプラインがオフロード ストリーミングをサポートしている場合は、ストリームにオーディオ エンジン要素を作成します。
- ACXSTREAM をストリーム ブリッジに追加します。 これにより、Bluetooth LE Audio プロファイルの EvtCircuitCreateStream コールバックが 呼び出されます。
-
EvtAcxCircuitCreateStream コールバックが呼び出されると、Bluetooth LE Audio プロファイルが動作を開始します。
- 将来のストリーム遷移コールバックのために、IHV ACX ストリーミング ドライバーによって設定された ACXOBJECTBAG からローカルにプロパティを保存します。
- オーディオ エンドポイントがユニキャスト ストリーミング用の場合は、Bluetooth LE Audio プロファイルを使用します。
- BAP 仕様で定義されている構成コーデック操作を実行します。 操作のパラメーターは、EvtAcxCircuitCreateStream コールバックで指定された ACXDATAFORMAT と、ACXOBJECTBAG の他のストリーム パラメーター、またはBluetooth コントローラーでサポートされているコーデック機能から派生します。
- ACXOBJECTBAG の BluetoothLEAudio_CodecConfiguration プロパティに、リモート オーディオ デバイスの構成に使用する値を設定します。
- IHV ACX ストリーミング ドライバーが、プロファイルによって設定されたオブジェクト バッグの値に基づいてデータ パス ID またはデータ パスの構成を更新する必要がある場合は、KSPROPERTY セット操作を呼び出して、プロファイル回線によって格納されている値を更新できます。
- ストリーム状態遷移のコールバックが設定された ACXSTREAM を作成します。
ストリーム状態の遷移
ACX は、オーディオ フローに基づいてストリーム状態遷移の回線順序を決定し、状態がよりアクティブまたは少ないアクティブな状態に遷移しているかどうかを決定します。
- レンダー ストリームがアクティブでない状態からよりアクティブな状態に向かう場合、プロファイル回線は最初にイベントを受け取り、次にストリーミング回線を受け取ります。
- レンダー ストリームがよりアクティブな状態からアクティブでない状態に向かう場合、ストリーミング回線は最初にイベントを受信し、次にプロファイル回線を受け取ります。
- キャプチャ ストリームがアクティブでない状態からよりアクティブな状態に移動する場合、ストリーミング回線は最初にイベントを受信し、次にプロファイル回線を受信します。
- キャプチャ ストリームがよりアクティブな状態からアクティブでない状態に移動する場合、プロファイル回線は最初にイベントを受信し、次にストリーミング回線を受信します。
ストリームを準備する
EvtAcxStreamPrepareHardware コールバックが呼び出されると、Bluetooth LE Audio プロファイルが次のようになります。
- ユニキャスト ストリームにリソースを割り当てます。
- HCI_LE_Set_CIG_Parameters コマンドを使用した CIG の構成。
- ASCS 構成 QoS 操作を送信して、設定をリモート デバイスと同期します。
EvtAcxStreamPrepareHardware コールバックが呼び出されると、IHV ACX ストリーミング ドライバーは必要なストリーミング リソースを割り当て、取得された状態になるオーディオ パイプラインを初期化します。
ストリームの開始
EvtAcxStreamRun コールバックが呼び出されると、Bluetooth LE Audio プロファイルは次のようになります。
- HCI_Configure_Data_Path コマンドを使用して、ストリーム作成手順で ACX ストリーミング ドライバーによって設定されたデータ パス構成設定を適用します。
- 次の方法でストリーム開始プロシージャを開始します。
- ユニキャスト ストリームのBAP有効化の手順を実行:
- リモート エンドポイントへの Enable 操作の送信。
- HCI_LE_Create_CIS コマンドを使用して、まだ作成されていない場合は CIS を作成します。
- ユニキャスト ストリームのBAP有効化の手順を実行:
- データ パスがまだ構成されていない場合、Bluetooth LE Audio プロファイル:
- HCI_LE_Setup_ISO_Data_Path コマンドを使用して ISO データ パスを確立します
- IHV ACX ストリーミング ドライバーが BluetoothLEAudio_CodecCapabilities プロパティを設定する場合、HCI_LE_Setup_ISO_Data_PathのCodec_ID フィールドの値は、Bluetooth割り当てられた番号で定義されている透明 (0x3) に設定する必要があります。 それ以外の場合、値は、ストリーム作成手順の構成コーデック操作で使用されるコーデック ID と同じである必要があります。
- HCI_LE_Setup_ISO_Data_Path コマンドを使用して ISO データ パスを確立します
- オーディオ ストリームがユニキャスト キャプチャ ストリームの場合、Bluetooth LE Audio プロファイルは BAP レシーバーの起動準備操作を実行します。
EvtAcxStreamRun コールバックが呼び出されると、IHV ACX ストリーミング ドライバーは、Windows オーディオ システム (レンダリング) またはBluetooth コントローラー (キャプチャ) からの受信オーディオ データの処理を開始します。
ストリームの一時停止
EvtAcxStreamPause コールバックが呼び出されると、Bluetooth LE Audio プロファイルは次のようになります。
- BAP ユニキャスト ストリーム無効化手順を実行します。
- HCI_LE_Remove_ISO_Data_Path コマンドを使用して ISO データ パスを削除します。
- オーディオ ストリームがユニキャスト キャプチャ ストリームの場合は、ASCS レシーバーの停止準備手順を実行します。
EvtAcxStreamPause コールバックが呼び出されると、IHV ACX ストリーミング ドライバーはオーディオ処理パイプラインを一時停止します。
リリース ストリーム
EvtAcxStreamReleaseHardware コールバックが呼び出されると、Bluetooth LE Audio Profile は次の方法で BAP ユニキャスト ストリームのリリース プロシージャを実行します。
- リモート Bluetooth LE Audio デバイスへの ASCS リリース操作の送信
- 別のアクティブ ストリームで使用されていない場合は、CIS を切断します。
- すべての CIS が切断されている場合には、CIG を削除します。
EvtAcxStreamReleaseHardware コールバックが呼び出されると、IHV ACX ストリーミング ドライバーはオーディオ パイプライン リソースを解放します。
エンドポイントの切断
Windows Bluetooth LE Audio プロファイルは、リモート ユニキャスト デバイスが PC への LE-ACL 接続を持っていない場合、または PACS で使用可能なオーディオ コンテキストを介してストリーミングに使用できないことを報告している場合に、エンドポイントの接続状態を更新します。 エンドポイントが切断されると、Windows オーディオ サービスによってエンドポイントへのアクティブなストリームが無効になります。 これにより、ストリームの一時停止と解放シーケンスが発生します。
エンドポイントの削除
プロファイル回路またはストリーミング回線が破棄されると、Bluetooth LE Audio エンドポイントがシステムから削除されます。 リモート ユニキャスト デバイスのペアリングが Windows から削除された場合、または Bluetooth 無線が無効になっている場合、プロファイル回線が削除される可能性があります。
- Windows Bluetooth LE Audio プロファイルが回線を削除すると、ACX はエンドポイント インターフェイスを無効にして、エンドポイントを削除する必要があることを Windows オーディオ サービスに通知します。
- インターフェイスが無効になっている場合、Windows オーディオ サービスは、Bluetooth LE Audio エンドポイントへのアクティブなストリームを無効にします。この操作により、ストリームの一時停止と解放のコールバックがストリーミング回線で呼び出されます。
- エンドポイントの削除を完了するために、ACX は IHV ACX ストリーミング ドライバーの回線を無効にします。その結果、WDF は回線のクリーンアップ コールバックを呼び出します。
- クリーンアップ コールバックが呼び出されると、IHV ACX ストリーミング ドライバーは、その回線を解放します。
音量とミュート
IHV ACX ストリーミング回線には、ストリーミング ドライバーにオーディオ エンジンが必要な場合にのみ、ボリューム要素とミュート要素を含める必要があります。 オーディオ エンジンを使用する場合は、次のように構成フラグを設定する必要があります。
ACX_AUDIOENGINE_CONFIG audioEngineCfg;
ACX_AUDIOENGINE_CONFIG_INIT(&audioEngineCfg);
…
audioEngineCfg.Flags |= AcxAudioEngineConfigVolumeSecondary; // Use this control only if endpoint doesn't have one.
audioEngineCfg.MuteElement = muteElement;
audioEngineCfg.Flags |= AcxAudioEngineConfigMuteSecondary; // Use this control only if endpoint doesn't have one.
audioEngineCfg.PeakMeterElement = peakmeterElement;
audioEngineCfg.Flags |= AcxAudioEngineConfigPeakMeterSecondary; // Use this control only if endpoint doesn't have one.
この設定は、Bluetooth LE Audio エンドポイントが、Bluetooth SIG で定義されたボリュームおよびマイク制御プロファイルを使用して、ユニキャストオーディオエンドポイントのボリュームやミュートの変更を行うために必要です。
リモート Bluetooth LE Audio デバイスがボリュームまたはマイク制御サービスをサポートしていない場合、またはエンドポイントがブロードキャスト オーディオ用に作成されている場合、オーディオ エンジンのボリューム要素とミュート要素は、オーディオ システムからの変更要求を処理するためのフォールバックとして機能します。 Windows オーディオ システムは、音量とミュートの変更を処理します。 オーディオ エンジンがなく、リモート デバイスがボリュームをサポートしていない場合、またはマイク サービスまたはオーディオ エンドポイントがブロードキャスト オーディオ用である場合。
Bluetooth LE とクラシック オーディオの共存
Windows では、両方のテクノロジをサポートするペアリングされたBluetoothオーディオ デバイスに対して、クラシック オーディオまたは LE オーディオのみがアクティブであることを確認する必要があります。 LE オーディオがアクティブな場合、リモート デバイスの A2DP および HFP のサイドバンド DDI が無効になり、LE オーディオ エンドポイントのプロファイル回線が作成されます。 クラシック オーディオがアクティブな場合、リモート デバイスの A2DP と HFP のサイドバンド DDI が有効になり、LE オーディオ エンドポイント用にプロファイル回線が作成されません。
電源管理
Bluetooth LE Audio には、電源管理の要件や WDF で既に定義されているもの以外のフローはありません。