Bluetooth 低エネルギー (LE) オーディオ
この記事では、Windows 11 バージョン 22H2 (KB5026446) で導入された Bluetooth LE Audio の概要について説明します。
はじめに
Bluetooth LE Audio を使用すると、等時性トランスポート経由で Bluetooth LE デバイスにユニキャストまたはブロードキャスト オーディオをストリーミングできます。 Bluetooth コア仕様のバージョン 5.3 の時点では、ホスト プラットフォームが Bluetooth コントローラーとの間で等時性データを送受信するための標準で定義されたホスト コントローラー インターフェイス (HCI) はありません。 このドキュメントでは、Windows Bluetooth ベンダー固有のオーディオ パス (VSAP) を定義して、プラットフォームがベンダー固有のソリューションを使用して Bluetooth LE オーディオ ストリーミングを有効にできるようにします。 VSAP ソフトウェア インターフェイスは Windows を使用します オーディオ クラス拡張機能 (ACX) と、このドキュメントで定義されているその他のインターフェイス プロパティを使用します。
用語と前提条件
この表で定義されている用語に加えて、このドキュメントではWindowsオーディオ クラス拡張で定義されている用語も参照しています。
任期 | 定義 |
---|---|
LE オーディオ | Bluetooth LE オーディオのショート |
クラシック オーディオ | ハンズフリー プロファイル (HFP) と詳細なオーディオ配布プロファイル を使用する (A2DP) Bluetooth オーディオ ストリーミング |
オーディオデバイス | 単一のリモート Bluetooth LE オーディオ デバイス、または一緒に Windows の観点から 1 つのオーディオ エンドポイントを構成する Bluetooth LE オーディオ デバイスのセット。 |
BAP | その Basic的な音声プロファイル デバイスが Bluetooth 低エネルギー (LE) 通信を使用してオーディオを配信および消費できる方法を定義します。 |
TMAP | その 電話とメディアの音声プロファイル 下位水準器の音声サービスとプロファイルの相互運用可能な構成を指定します。 |
ASCS | その 音声ストリーム制御サービス Bluetooth LE オーディオ デバイスがユニキャスト オーディオ ストリームを構成および確立するための標準方法を定義します。 |
PACS | その オーディオ・キャパビリティ・サービスを発表 Bluetooth LE オーディオ デバイスが、サポートされているオーディオ コーデック機能をレポートするための標準的な方法を定義します。 |
CIS | Connected Isochronous ストリーム トランスポートは、Bluetooth LE デバイス間でユニキャスト オーディオ データを送受信するために使用されます。 |
BIS | ブロードキャスト 等時ストリーム トランスポートは、コネクションレス オーディオ データ転送に使用されます。 |
ACX | オーディオ クラス拡張機能の略です。これは、すべてのオーディオ ドライバーが Windows 上の Bluetooth LE Audio をサポートするために必要なドライバー モデルです。 |
ストリーミングサーキット | 1 つまたは複数 ACXCIRCUIT ベンダー固有のオーディオ ドライバー スタックによってストリーミング パス用に作成されたオブジェクト。 |
プロファイル回路 | その ACXCIRCUIT Windows 上の Bluetooth LE オーディオ プロファイル実装によって作成されるオブジェクト。 この ACXCIRCUIT ACX 仕様で定義されているヘッド回線として機能し、ストリーミング回線ではありません。 |
このドキュメントは、以前に定義された用語と、マニュアルで定義されている次の HCI コマンドに精通していることを前提としています。 Bluetoothコア5.3仕様:
- 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 向けに推奨されるオーディオ ドライバー モデルをサポートします。
- ドライバー間dedicated DDI を必要とせずに、マルチ スタック オーディオ ソリューションに対する ACX のネイティブ サポートを使用します。
- オーディオ システムから Bluetooth スタックへの要求を中継するために IHV オーディオ ドライバーは必要ありません。 代わりに、ACX はプロファイル回線を介して Bluetooth スタックに直接要求を送信できます。
Architecture
定義
次のコンポーネントは、さまざまな VSAP アーキテクチャバリアントに関連しています。
Windows ACX フレームワーク
このコンポーネントでは、マルチスタックオーディオ エンドポイントのサポートが有効になります。 Bluetooth LE Audio の場合、オーディオ エンドポイントを構成するソフトウェア コンポーネントは、ベンダー固有のオーディオ ドライバー スタックと Windows Bluetooth LE Audio プロファイルです。
ベンダー固有のオーディオ ドライバー スタック
このベンダー固有のコンポーネントは、ベンダーが定義したオーディオ インターフェイスを介して Bluetooth コントローラーとの間で Bluetooth LE オーディオ データを送受信する役割を担います。 受信および送信オーディオ データを管理するための ACX ストリーミング ドライバーで構成されます。 マルチ回線 ACX オーディオ エンドポイントの必要な部分である場合は、より多くの ACX ドライバーが含まれる場合があります。 このコンポーネントは、このドキュメントでは IHV ACX ストリーミング ドライバーとも呼ばれます。
Windows Bluetooth LE オーディオ プロファイル
このコンポーネントには、Basic 音声プロファイル (BAP)、ボリュームコントロールプロファイル、および マイク制御プロファイル の実装が含まれています。 それは責任がある 頭を作成するために ACXCIRCUIT Windows にペアリングされた各 Bluetooth LE オーディオ デバイスまたはデバイスのセットについて、リモート デバイスおよび Bluetooth コントローラーによって報告されるオーディオ形式を報告し、アイソクロナス チャネルとグループの状態を管理します。
Windows Bluetooth コア スタック
このコンポーネントは、Windows Bluetooth LE Audio Profile がサポートされているコーデック機能をローカル Bluetooth コントローラーから照会し、等時性チャネルとグループの状態を管理できるようにするインターフェイスを提供します。
LC3 codec
このサブコンポーネントは、圧縮された LC3 オーディオと PCM オーディオ間の変換を担当します。 両方をサポートしますencoding デコード機能は、ベンダー固有のオーディオ ドライバー (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 コントローラーでホストされているサイドバンド アーキテクチャをモデル化しています。 ソフトウェア encoding およびデコード用に、ベンダー固有のオーディオ ドライバー スタックの一部として LC3 コーデックをホストすることも有効です。 その場合、Bluetooth コントローラーに送信されるオーディオは、PCM オーディオではなく LC3 オーディオ フレームとして書式設定されます。
次の図は、Bluetooth コントローラーの LC3 コーデックを使用したサイドバンド Bluetooth LE Audio アーキテクチャを示しています。
次の図は、オーディオ ドライバー スタック内の LC3 コーデックを使用したサイドバンド Bluetooth LE オーディオ アーキテクチャを示しています。
オーディオオフロードを備えたサイドバンドBluetooth LEオーディオアーキテクチャ
オーディオ オフロードを備えたサイドバンド アーキテクチャには、Bluetooth LE オーディオ ストリーミング ソリューションに省電力の利点を提供するオーディオ DSP ハードウェア コンポーネントが含まれています。 次の図は、Bluetooth コントローラーの LC3 コーデックとオーディオ DSP のコーデックを使用して可能なアーキテクチャを示しています。
次の図は、Bluetooth コントローラに LC3 コーデックを使用したオーディオ オフロード アーキテクチャを備えたサイドバンド Bluetooth LE オーディオを示しています。
次の図は、オーディオ DSP の LC3 コーデックを使用したオーディオ オフロード アーキテクチャを備えたサイドバンド Bluetooth LE Audio を示しています。
ベンダー固有のインバンドBluetooth LEオーディオアーキテクチャ
VSAP インバンド アーキテクチャを使用すると、カスタム パイプラインは、ベンダー固有のオーディオ ドライバー スタックから Bluetooth コントローラーの HCI に Bluetooth LE オーディオ データを送受信できます。 このアーキテクチャには、"IHV ISO マージ コンポーネント" という新しいコンポーネントが含まれています。このコンポーネントは、ISO データのフロー制御を管理します。 また、HCI コマンドを送信する必要がある場合は、Windows Bluetooth Core Stack と HCI コマンド フロー制御を共有する必要があります。
次の図は、ベンダー固有のインバンド Bluetooth LE Audio アーキテクチャを示しています。
詳細な設計
オーディオ形式の要件
オーディオ フレームの継続時間
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)
- このモードは、音楽の再生、通知、Video ゲームオーディオなどの一方向のレンダリング シナリオに使用されます。
- コミュニケーション (AUDIO_SIGNALPROCESSINGMODE_COMMUNICATIONS)
- このモードは、voice通話などの双方向シナリオで使用されます。
次の表は、各ユース ケースと信号処理モードの形式の一覧です。 オーディオ形式は、最も優先される形式から最も優先される形式の順に並べ替わっています。
ステレオ デバイスまたは調整された一連のデバイスに接続されている場合のシステム サウンド、音楽再生、およびvideoゲーム オーディオ
信号処理モード: ディフォルト
サンプリング頻度 | チャネル数 | ビットの深さ | フレームの期間 | オーディオ データ レート | 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 |
システムサウンド、音楽再生、コーディネートされたセットの 1 つのメンバー (単一のイヤホンまたは補聴器) に接続されている場合の video ゲーム オーディオ
信号処理モード: ディフォルト
サンプリング頻度 | チャネル数 | ビットの深さ | フレームの期間 | オーディオ データ レート | 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 |
voiceチャットを使用してvoiceレコーダー、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 |
ストリーム オーディオ信号処理モードをCaptureする
Bluetooth LE Audio では、既定 (AUDIO_SIGNALPROCESSINGMODE_DEFAULT) 信号処理モードでcapture オーディオ形式を宣言する必要があります。 サポートされているcapture形式の一覧を次のテーブルに示します。
オーディオ形式は、最も優先される形式から最も優先される形式の順に並べ替わっています。
Capture voiceチャットを使用してvoiceレコーダー、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
次のオーディオ構成は、表 4.1 で定義されています Bluetooth BAP の仕様
PC は、モノラル ストリームをサポートする単一のオーディオ デバイスに接続されています。 1 つのデバイスは、スタンドアロン デバイスでも、座標セットの 1 つの接続されたメンバーでもかまいません。
使用事例紹介 | Windows オーディオ 設定 | Bluetooth コントローラーの設定 |
---|---|---|
メディア再生 | Render: 信号処理モード: 既定 チャネル数: 1 Capture: 無し |
CIS カウント: 1 CIG カウント: 1 BAP QoS 設定: 高い信頼性 |
オーディオ デバイスでマイクを使用しない音声通話 | Render: 信号処理モード: コミュニケーション チャネル数: 1 Capture: 無し |
CIS カウント: 1 CIG カウント: 1 BAP QoS 設定: 低レイテンシ |
ビデオゲームの再生 | Render: 信号処理モード: 既定 チャネル数: 1 Capture: 無し |
CIS カウント: 1 CIG カウント: 1 BAP QoS 設定: 低レイテンシ |
基本的なオーディオ プロファイル構成 4
次のオーディオ構成は、表 4.1 で定義されています Bluetooth BAP の仕様
PC は、ステレオ ストリームをサポートする 1 台のオーディオ デバイスに接続されています。 オーディオ デバイスは、1 つの CIS で 2 つのオーディオ チャネルを処理できます。
使用事例紹介 | Windows オーディオ 設定 | Bluetooth コントローラーの設定 |
---|---|---|
メディア再生 | レンダー: 信号処理モード: 既定 チャネル数: 2 Capture: 無し |
CIS カウント: 1 CIG カウント: 1 BAP QoS 設定: 高信頼性オーディオ チャネルの割り当て: フロント左右 |
ビデオゲームの再生 | 信号処理モード: 既定 チャネル数: 2 Capture: 無し |
CIS カウント: 1 CIG カウント: 1 BAP QoS 設定: 低レイテンシ オーディオ チャネルの割り当て: フロント左右 |
基本的なオーディオ プロファイル構成 6(i)
次のオーディオ構成は、表 4.1 で定義されています Bluetooth BAP の仕様
PC は、ステレオ ストリームをサポートする 1 台のオーディオ デバイスに接続されています。 オーディオ デバイスは、2 つの CIS のそれぞれで 1 つのオーディオ チャネルのみを処理できます。
使用事例紹介 | Windows オーディオ 設定 | Bluetooth コントローラーの設定 |
---|---|---|
メディア再生 | 信号処理モード: 既定 チャネル数: 2 Capture: 無し |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 高い信頼性 |
オーディオ デバイスでマイクを使用しない音声通話 | 信号処理モード: コミュニケーション チャネル数: 1 Capture: 無し |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 低レイテンシ オーディオ チャネルの割り当て: フロント左またはフロント右 |
ビデオゲームの再生 | 信号処理モード: 既定 チャネル数: 2 Capture: 無し |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 低レイテンシ オーディオ チャネルの割り当て: フロント左右 |
基本的なオーディオ プロファイル構成 6(ii)
次のオーディオ構成は、表 4.1 で定義されています Bluetooth BAP の仕様
PC は、調整されたオーディオ デバイスのセットに接続されています。 このセットは、各メンバーが 1 つのチャネルを処理する 2 つのオーディオ チャネルを処理できます。
使用事例紹介 | Windows オーディオ 設定 | Bluetooth コントローラーの設定 |
---|---|---|
メディア再生 | 信号処理モード: 既定 チャネル数: 2 Capture: 無し |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 高い信頼性 |
どちらのデバイスでもマイクを使用しないVoice呼び出し | 信号処理モード: コミュニケーション チャネル数: 1 Capture: 無し |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 低レイテンシ |
ビデオゲームの再生 | 信号処理モード: 既定 チャネル数: 2 Capture: 無し |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 低レイテンシ |
双方向の構成
双方向構成は、アプリケーションがリモート デバイスまたはデバイスのセットにキャプチャ ストリームとレンダリング ストリームの両方を作成することを Bluetooth LE Audio プロファイルが検出した場合に使用されます。 アプリケーションはキャプチャストリームとレンダリング ストリームを個別に制御するため、IHV オーディオ ドライバーと Bluetooth コントローラーは、HCI コマンドの [データ パスの構成] および [LE Setup ISO Data Path] を使用してプロビジョニングした後、双方向 CIS の単一方向にオーディオを流せるようにします。
基本的なオーディオ プロファイル構成 3
次のオーディオ構成は、表 4.1 で定義されています Bluetooth BAP の仕様
PC は、1 つの CIS で確立された双方向モノラル ストリームを使用して、単一のオーディオ デバイスに接続されます。
ユース ケース | Windows オーディオ 設定 | Bluetooth コントローラーの設定 |
---|---|---|
音声通話 | Render: 信号処理モード: コミュニケーション チャネル数: 1 キャプチャ: 信号処理モード: 既定 チャネル数: 1 |
CIS カウント: 1 CIG カウント: 1 BAP QoS 設定: 低レイテンシ |
ボイス チャットを使用したビデオ ゲームの再生 | Render: 信号処理モード: コミュニケーション チャネル数: 1 キャプチャ: 信号処理モード: 既定 チャネル数: 1 |
CIS カウント: 1 CIG カウント: 1 BAP QoS 設定: 低レイテンシ |
基本的なオーディオ プロファイル構成 8(i)
次のオーディオ構成は、表 4.1 で定義されています Bluetooth BAP の仕様
PC は、ステレオ レンダリング ストリームとモノラル キャプチャ ストリームをサポートする単一のオーディオ デバイスに接続されています。 デバイスは、特定の方向に対して 1 つの CIS でオーディオの 1 つのチャネルを処理できます。
ユース ケース | Windows オーディオ 設定 | Bluetooth コントローラーの設定 |
---|---|---|
音声通話 | Render: 信号処理モード: コミュニケーション チャネル数: 1 キャプチャ: 信号処理モード: 既定 チャネル数: 1 |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 低レイテンシ |
ボイス チャットを使用したビデオ ゲームの再生 | Render: 信号処理モード: コミュニケーション チャネル数: 2 キャプチャ: 信号処理モード: 既定 チャネル数: 1 |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 低レイテンシ |
基本的なオーディオ プロファイル構成 8(ii)
次のオーディオ構成は、表 4.1 で定義されています Bluetooth BAP の仕様
PC は、調整されたオーディオ デバイスのセットに接続されています。 各セット メンバーは、レンダー オーディオの 1 つのチャネルを受け取ります。 1 つのセット メンバーに確立されたキャプチャ ストリームがあります。 キャプチャ ストリームを持つセット メンバーは、キャプチャ ストリームもサポートする PC に接続する最初のセット メンバーです。
ユース ケース | Windows オーディオ 設定 | Bluetooth コントローラーの設定 |
---|---|---|
音声通話 | Render: 信号処理モード: コミュニケーション チャネル数: 1 キャプチャ: 信号処理モード: 既定 チャネル数: 1 |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 低レイテンシ |
ボイス チャットを使用したビデオ ゲームの再生 | Render: 信号処理モード: コミュニケーション チャネル数: 2 キャプチャ: 信号処理モード: 既定 チャネル数: 1 |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 低レイテンシ |
キャプチャのみの構成
基本的なオーディオ プロファイル構成 2
次のオーディオ構成は、表 4.1 で定義されています Bluetooth BAP の仕様
PC は、モノラル captureストリームをサポートする 1 台のオーディオ デバイスに接続されています。
ユース ケース | Windows オーディオ 設定 | Bluetooth コントローラーの設定 |
---|---|---|
デバイスに話者がいない音声通話 | レンダリング: なし キャプチャ: 信号処理モード: 既定 チャネル数: 1 |
CIS カウント: 1 CIG カウント: 1 BAP QoS 設定: 低レイテンシ |
基本的なオーディオ プロファイル構成 9(i)
次のオーディオ構成は、表 4.1 で定義されています Bluetooth BAP の仕様
PC は、ステレオ オーディオ データの送信をサポートする単一のオーディオ デバイスに接続されています。 デバイスは、1 つの CIS でオーディオの 1 つのチャネルをエンコードできます。
ユース ケース | Windows オーディオ 設定 | Bluetooth コントローラーの設定 |
---|---|---|
マルチチャンネルマイクcapture | レンダリング: なし キャプチャ: 信号処理モード: 既定 チャネル数: 1 |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 低レイテンシ |
基本的なオーディオ プロファイル構成 9(ii)
PC は、モノラル captureストリームをサポートする 1 台のオーディオ デバイスに接続されています。
次のオーディオ構成は、表 4.1 で定義されています Bluetooth BAP の仕様
PC はオーディオ デバイスのセットに接続されています。 各セット メンバーは、オーディオの 1 つのチャネルを PC に送信します。
ユース ケース | Windows オーディオ 設定 | Bluetooth コントローラーの設定 |
---|---|---|
マルチチャンネルマイクcapture | レンダリング: なし キャプチャ: 信号処理モード: 既定 チャネル数: 1 |
CIS カウント: 2 CIG カウント: 1 BAP QoS 設定: 低レイテンシ |
リモート デバイスまたはデバイス セットが双方向オーディオをサポートしている場合、captureのみのストリームの構成は双方向の構成と同じです。 これにより、captureのみのシナリオから双方向のシナリオに移行でき、ストリームを再作成する必要はありません。
データ構造
Microsoft が定義した Bluetooth LE オーディオ インターフェイスのプロパティ
ストリーム作成プロパティ
次のプロパティは、ACXOBJECTBAG DDIs を介してベンダー固有のオーディオ ドライバー スタックとBluetooth LE Audio Profile の間で共有されStream の作成シナリオに示すように、ストリーム エンドポイントの作成と構成に関する決定を通知します。
BluetoothLEAudio_CodecCapabilities
このプロパティは、オーディオ ドライバーまたはオーディオ DSP でサポートされているオーディオ ストリーミング機能のサポートを示すために、オーディオ ドライバーによって設定されます。 プロパティ値はDDIを使用して設定されます AcxObjectBagAddBlob 値の形式は、で定義されている PAC レコードと同じです PACSの仕様.
Windows Bluetooth LE Audio プロファイルは、プロパティを読み取って、使用できるコーデック構成とストリーム構成を決定します。
フィールド | 八重奏 |
---|---|
機能の数 | 0 |
コーデック ID[i] | 1 ~ 6 |
コーデック固有の機能の長さ[i] | 7 |
コーデック固有の機能 | 8... n |
メタデータの長さ (m) | n + 1 |
Metadata | 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_CodecConfiguration
このプロパティは、DDI を使用して Bluetooth LE オーディオ プロファイルによって設定される必要があります AcxObjectBagAddBlob オーディオ デバイスでコーデック構成が構成された後。 BLOB の構造は次のとおりです:
フィールド | 八重奏 |
---|---|
構成のカウント | 0 |
コーディング形式[i] | 3 |
企業 ID[i] | 1-2 |
ベンダー固有のコーデック ID[i] | 3-4 |
コーデック固有の構成長[i] | 5 |
コーデック固有の構成[i] | 6... n |
フィールド値は、表 4.3 で定義されています Bluetoothオーディオストリーム制御サービス仕様.
LC3 コーデックが ACX ストリーミング ドライバーまたはオーディオ DSP にある場合は、ベンダー固有のオーディオ ドライバー スタックでこのプロパティを読み取る必要があります。
インターフェイス
オーディオ エンドポイント テンプレートのバインド ID
ペアリングされた Bluetooth デバイスの ACX 回線がいつ作成されているかを知るために、オーディオ ドライバーの ACX 回線ファクトリによって使用されます。
Bluetooth LE オーディオ回線の作成には、次のコンポーネント 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 オーディオ サポート インターフェイス
Bluetooth LE Audio のストリーミングに使用できるオーディオ ドライバー スタックによって使用されます。 このインターフェイスを 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 ストリーミング ドライバーが読み込まれ、Bluetooth LE オーディオ ストリーミングをサポートしていると判断すると、そのテクノロジーのサポートが表示されますを作成することによって ACXFACTORYCIRCUIT オブジェクトを取得し、で定義された ID を使用して ACX に Bluetooth テンプレート バインドを登録します オーディオ エンドポイント テンプレート バインド IDs.
エンドポイントの作成
- LE Audio デバイスがシステムとペアリングされている場合、Bluetooth LE Audio Profile:
- リモート デバイスの公開されたオーディオ機能を読み取ります。
- [v2] と HCI_Read_Local_Supported_Codec_Capabilities HCI_Read_Local_Support_Codecsコマンドを送信して、コントローラーでサポートされている機能を検出します。
- を作成します ACXCIRCUIT Bluetooth コントローラーとリモート オーディオ デバイスでサポートされるコーデック機能に基づいて設定されたサポートされる形式を使用します。 コーデックのサポートがオーディオ DSP またはオーディオ ドライバーにあるため、コントローラーがコーデックをサポートしていない場合、サポートされる形式はリモート オーディオ デバイスでサポートされている形式に設定されます。
- その後 ACXCIRCUIT が作成されると、ACX は IHV ACX ストリーミング ドライバーの ACX 回線ファクトリに、 ACXCIRCUIT ストリーム処理用。
- 回線を作成する要求を受信すると、IHV ACX ストリーミング ドライバー。
- 作成する ACXCIRCUIT, ACXPIN, ACXOBJECTBAG, と ACXSTREAMBRIDGE 物体。
- LC3 またはベンダー固有のコーデックがオーディオ ドライバまたは DSP でホストされている場合、IHV ACX ストリーミング ドライバは BluetoothLEAudio_CodecCapabilities の物件 ACXOBJECTBAG.
- IHV ACX ストリーミング ドライバー設定するかもしれない Bluetooth_DatapathID あるいは Bluetooth_データパス構成 オン ACXOBJECTBAG 現時点で判明しているのであれば。
- 両方の回線が作成された後、ACX は EvtAcxPin接続済み IHV ACX ドライバーのブリッジ ピン上のコールバック。
- いつ EvtAcxPin接続済み コールバックが呼び出されると、IHV ACX ストリーミング ドライバー:
- プロファイル回路のブリッジピンを取得します Acxターゲット... プロファイル回路でサポートされている形式を取得する API。
- 以下のリストを繰り返し処理します ACX データ形式s プロファイル回路によって設定されます。 Bluetooth オーディオ コーデックがオーディオ ドライバーまたはオーディオ DSP でホストされている場合、IHV オーディオ ドライバーはそのオーディオ コーデックを更新します ACX データ形式s コーデックおよびプロファイル回路によってサポートされている形式で。 それ以外の場合、すべての形式が IHV ACX ストリーミング ドライバーのホスト ピンにコピーされます。
- オフロード ストリーミング用にオーディオ エンジンが作成された場合に、ブリッジ ピンの更新された形式の一覧を設定します。
- フォーマットが更新されると、ACX は両方のインターフェイスを有効にし、オーディオ エンドポイントが作成されます。
ストリームの作成
- アプリケーションがオーディオ ストリームの作成を要求すると、ACX は登録されている EvtCircuitCreateStream IHV ACX ストリーミング ドライバーから始まる、各回路のコールバック。
- いつ EvtCircuitCreateStream コールバックが呼び出されると、IHV ACX ストリーミング ドライバー:
- Bluetooth_DatapathId および Bluetooth_DataPathConfiguration プロパティを設定または更新します ACXOBJECTBAG に添付されている ACXSTREAMBRIDGE.
- を作成します ACXSTREAM ストリーム状態遷移と RT ストリーム処理用に設定されたコールバックを使用
- オーディオ パイプラインがオフロード ストリーミングをサポートしている場合は、ストリームにオーディオ エンジン要素を作成します。
- を追加します ACXSTREAM そのへのストリーム橋。 これにより、Bluetooth LE Audio プロファイルの EvtCircuitCreateStream コールバック。
- いつ EvtAcxCircuitCreateStream コールバックが呼び出されると、Bluetooth LE オーディオ プロファイル:
- からプロパティをローカルに保存します ACXOBJECTBAG 将来のストリーム遷移コールバック用に IHV ACX ストリーミング ドライバーによって設定されます。
- オーディオ エンドポイントが Bluetooth LE Audio プロファイルをユニキャスト ストリーミングする場合:
- BAP 仕様で定義されている構成コーデック操作を実行します。 操作のパラメータは次から導出されます ACXDATAFORMAT に指定されている EvtAcxCircuitCreateStream コールバックおよび他のストリームパラメータのいずれか ACXOBJECTBAG または Bluetooth コントローラーでサポートされているコーデック機能。
- 設定します BluetoothLEAudio_CodecConfiguration の物件 ACXOBJECTBAG リモートオーディオデバイスの設定に使用される値に置き換えます。
- IHV ACX ストリーミング ドライバーが、プロファイルによって設定されたオブジェクト バッグの値に基づいてデータ パス ID またはデータ パスの構成を更新する必要がある場合は、KSPROPERTY セット操作を呼び出して、プロファイル回線によって格納されている値を更新できます。
- を作成します ACXSTREAM ストリーム状態遷移用に設定されたコールバックを使用します。
ストリームの状態遷移
ACX は、オーディオ フローに基づいてストリーム状態遷移の回線順序を決定し、状態がよりアクティブまたは少ないアクティブな状態に遷移しているかどうかを決定します。
- レンダー ストリームがアクティブでない状態からよりアクティブな状態に向かう場合、プロファイル回線は最初にイベントを受け取り、次にストリーミング回線を受け取ります。
- よりアクティブな状態からよりアクティブでない状態に移行するレンダー ストリームの場合、ストリーミング回路が最初にイベントを受信し、次にプロファイル回路が続きます。
- Captureストリームが非アクティブな状態からよりアクティブな状態に移行する場合、ストリーミング回路が最初にイベントを受信し、続いてプロファイル回路がイベントを受信します。
- よりアクティブな状態からよりアクティブでない状態に移行するCaptureストリームの場合、プロファイル回路が最初にイベントを受信し、次にストリーミング回路が続きます。
ストリームを準備する
いつ EvtAcxStreamPrepareHardware コールバックが呼び出されると、Bluetooth LE オーディオ プロファイル:
- ユニキャスト ストリームにリソースを割り当てます。
- HCI_LE_Set_CIG_Parameters コマンドを使用した CIG の構成。
- ASCS 構成 QoS 操作を送信して、設定をリモート デバイスと同期します。
いつ EvtAcxStreamPrepareHardware コールバックが呼び出されると、IHV ACX ストリーミング ドライバーは必要なストリーミング リソースを割り当て、オーディオ パイプラインを初期化して取得した状態にします。
ストリーム開始
いつ EvtAcxStreamRun コールバックが呼び出されると、Bluetooth LE オーディオ プロファイル:
- HCI_Configure_Data_Path コマンドを使用して、ストリーム作成手順で ACX ストリーミング ドライバーによって設定されたデータ パス構成設定を適用します。
- 次の方法でストリーム開始プロシージャを開始します。
- ユニキャスト ストリームの BAP ユニキャスト ストリーム有効化手順の実行:
- リモート エンドポイントへの Enable 操作の送信。
- HCI_LE_Create_CIS コマンドを使用して 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 オーディオ プロファイル:
- BAP ユニキャスト ストリーム無効化手順を実行します。
- HCI_LE_Remove_ISO_Data_Path コマンドを使用して ISO データ パスを削除します。
- オーディオ ストリームがユニキャスト キャプチャ ストリームの場合は、ASCS レシーバーの停止準備手順を実行します。
いつ EvtAcxStreamPause コールバックが呼び出されると、IHV ACX ストリーミング ドライバーは音声処理パイプラインを一時停止します。
リリース ストリーム
いつ EvtAcxStreamReleaseHardware コールバックが呼び出されると、Bluetooth LE オーディオ プロファイルは、次の方法で 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 は回線の クリーンup コールバックを呼び出します。
- クリーンup コールバックが呼び出されると、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 オーディオには、電源管理要件や、既に定義されている内容以外のフローはありません WDF.