Condividi tramite


Bluetooth Low Energy (LE) Audio

Questo articolo offre una panoramica dell'audio Bluetooth LE introdotto in Windows 11 versione 22H2 (KB5026446).

Introduzione

Bluetooth LE Audio consente lo streaming unicast o la trasmissione audio ai dispositivi Bluetooth LE tramite un trasporto isocrono. A partire dalla versione 5.3 della specifica di base Bluetooth, non esiste un'interfaccia HCI (Defined Host Controller Interface) standard per le piattaforme host per inviare e ricevere dati isocroni da e verso il controller Bluetooth. Questo documento definisce il percorso audio specifico del fornitore Bluetooth di Windows per consentire alle piattaforme di usare soluzioni specifiche del fornitore per abilitare lo streaming audio Bluetooth LE. L'interfaccia software VSAP usa le estensioni della classe audio windows (ACX) e altre proprietà di interfaccia definite in questo documento.

Terminologia e prerequisiti

Oltre ai termini definiti in questa tabella, questo documento fa riferimento anche ai termini definiti dalle estensioni della classe audio di Windows.

Termine Definizione
Audio LE Short for Bluetooth LE Audio
Audio classico Streaming audio Bluetooth che usa il profilo HFP (Hands-Free Profile) e il profilo di distribuzione audio avanzato (A2DP)
Dispositivo audio Un singolo dispositivo Bluetooth LE Audio o un set di dispositivi Bluetooth LE Audio che insieme compongono un singolo endpoint audio dal punto di vista di Windows.
BAP Il profilo audio di base definisce come i dispositivi possono distribuire e utilizzare l'audio usando le comunicazioni Bluetooth Low Energy (LE).
TMAP Il profilo audio di telefonia e audio multimediale specifica le configurazioni interoperabili dei profili e dei servizi audio di livello inferiore.
ASCS Il servizio di controllo del flusso audio definisce un modo standard per i dispositivi Audio Bluetooth LE per configurare e stabilire flussi audio unicast.
PACS Il servizio Funzionalità audio pubblicate definisce un modo standard per i dispositivi Bluetooth LE Audio per segnalare le funzionalità di codec audio supportate.
CIS Il trasporto Connected Isochronous Streams viene usato per inviare e ricevere dati audio unicast tra dispositivi Bluetooth LE.
BIS Il trasporto Stream Isochronous broadcast viene usato per i trasferimenti di dati audio senza connessione.
ACX Breve per le estensioni della classe audio, ovvero il modello di driver richiesto da tutti i driver audio per il supporto per Bluetooth LE Audio in Windows.
Circuiti di streaming Uno o più oggetti ACXCIRCUIT creati dallo stack di driver audio specifici del fornitore per il relativo percorso di streaming.
Circuito del profilo Oggetto ACXCIRCUIT creato dall'implementazione del profilo Audio BLUETOOTH LE in Windows. Questo ACXCIRCUIT funge da circuito head come definito nella specifica ACX e non è un circuito di streaming.

Questo documento presuppone familiarità con i termini definiti in precedenza e i comandi HCI seguenti definiti nella specifica Bluetooth Core 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 richiede che i driver audio usino il framework ACX. L'adozione di ACX per Bluetooth LE Audio offre diversi vantaggi, ad esempio:

  • Supporta il modello di driver audio preferito per Windows in futuro.
  • Usa il supporto nativo di ACX per soluzioni audio multi stack senza richiedere una DDI dedicata tra i driver.
  • Non richiede driver audio IHV per inoltrare le richieste dal sistema audio allo stack Bluetooth. ACX può invece inviare richieste direttamente allo stack Bluetooth tramite il circuito del profilo.

Architettura

Definizioni

I componenti seguenti sono coinvolti nelle diverse varianti dell'architettura VSAP.

Framework ACX di Windows

Questo componente abilita il supporto per un endpoint audio multi stack. Per Bluetooth LE Audio, i componenti software che compongono un endpoint audio sono lo stack di driver audio specifico del fornitore e il profilo Audio BLUETOOTH BLUETOOTH.

Stack di driver audio specifico del fornitore

Questo componente specifico del fornitore è responsabile dell'invio e della ricezione di dati Audio BLUETOOTH LE da e verso un controller Bluetooth tramite un'interfaccia audio definita dal fornitore. Deve essere costituito almeno da un driver di streaming ACX per gestire i dati audio in ingresso e in uscita. Altri driver ACX possono essere inclusi se sono parti necessarie dell'endpoint audio ACX multi circuito. Questo componente viene anche definito driver di streaming ACX IHV in questo documento.

Profilo Audio BLUETOOTH BLUETOOTH

Questo componente contiene l'implementazione del profilo audio di base (BAP), del profilo di controllo del volume e del profilo di controllo microfono. È responsabile della creazione dell'ACXCIRCUIT head per ogni dispositivo Bluetooth LE Audio o set di dispositivi associati a Windows, segnalando i formati audio segnalati dal dispositivo remoto e dal controller Bluetooth e gestisce lo stato di canali e gruppi isocroni.

Stack di core Bluetooth di Windows

Questo componente fornisce un'interfaccia per consentire al profilo audio Bluetooth BLUETOOTH di Windows di eseguire query sulle funzionalità codec supportate dal controller Bluetooth locale e gestire lo stato di canali e gruppi isocroni.

Codec LC3

Questo sottocomponente è responsabile della conversione tra audio LC3 compresso e audio PCM. Supporta le funzionalità di codifica e decodifica e può essere implementata nel software come parte dello stack di driver audio specifico del fornitore (VSAP) o nell'hardware come parte del controller DSP audio o Bluetooth. Il diagramma menziona LC3 in base al nome perché è il codec standard supportato dal sig Bluetooth. Tuttavia, i codec futuri e i codec specifici del fornitore supportati da Windows possono anche essere incorporati nell'architettura in modo simile.

Varianti dell'architettura

L'architettura VSAP audio Bluetooth LE supporta varianti diverse per lo streaming.

  1. Streaming audio BLUETOOTH LE tramite banda locale senza offload audio
  2. Streaming audio Bluetooth LE sideband con offload audio
  3. Streaming audio Bluetooth LE specifico del fornitore

Nei diagrammi seguenti, i componenti ombreggiati vengono forniti dall'IHV e i componenti non ombreggiati vengono forniti dal sistema operativo.

Architettura audio Bluetooth LE sideband senza offload audio

Un'architettura sideband usa un'interfaccia audio specifica del fornitore per consentire allo stack di driver audio di inviare e ricevere dati audio al controller Bluetooth. Questo percorso dati è separato dal percorso dati HCI usato per altri dati Bluetooth, ad esempio la segnalazione di messaggi tra il client unicast e il server unicast remoto. Il diagramma seguente modella un'architettura sideband in cui il codec LC3 è ospitato nel controller Bluetooth. È anche possibile che il codec LC3 sia ospitato come parte dello stack di driver audio specifico del fornitore per la codifica e la decodifica software. In tal caso, l'audio inviato al controller Bluetooth verrebbe formattato come fotogrammi audio LC3 anziché audio PCM.

Il diagramma seguente mostra un'architettura audio Bluetooth LE sideband con un codec LC3 nel controller Bluetooth.

Diagramma dell'architettura audio Bluetooth LE bluetooth con codec LC3 che si trova nel controller Bluetooth.

Il diagramma seguente mostra un'architettura audio BLUETOOTH LE sideband con un codec LC3 nello stack di driver audio.

Diagramma dell'architettura audio Bluetooth LE Audio a banda laterale con codec LC3 che si trova nello stack di driver audio.

Architettura audio BLUETOOTH LE sideband con offload audio

Un'architettura sideband con offload audio include un componente hardware DSP audio per offrire una soluzione di streaming Bluetooth LE Audio con vantaggi di risparmio energetico. I diagrammi seguenti illustrano una possibile architettura con il codec LC3 nel controller Bluetooth e il codec nel DSP audio.

Il diagramma seguente mostra un'architettura di offload audio bluetooth LE bluetooth con codec LC3 nel controller Bluetooth.

Diagramma dell'audio BLUETOOTH LE sideband con architettura di offload audio, con codec LC3 nel controller Bluetooth.

Il diagramma seguente mostra un'architettura di offload audio bluetooth LE bluetooth con codec LC3 nel DSP audio.

Diagramma dell'audio Bluetooth LE bluetooth con offload audio, con codec LC3 nel DSP audio.

Architettura audio Bluetooth LE specifica del fornitore

L'architettura a banda VSAP consente a una pipeline personalizzata di inviare e ricevere dati Audio BLUETOOTH LE dallo stack di driver audio specifico del fornitore all'HCI del controller Bluetooth. Questa architettura include un nuovo componente, il "Componente di unione ISO IHV". Questo componente è responsabile della gestione del controllo del flusso per i dati ISO. Inoltre, condividerà il controllo del flusso di comando HCI con lo stack core Di Windows Bluetooth se deve inviare comandi HCI.

Il diagramma seguente illustra un'architettura audio Bluetooth LE specifica del fornitore.

Diagramma dell'architettura audio Bluetooth LE inband specifica del fornitore.

Progettazione dettagliata

Requisiti di formato audio

Durate dei fotogrammi audio

I profili Audio Bluetooth LE consentono alle implementazioni di supportare lo streaming audio con durate dei fotogrammi audio di 7,5 millisecondi o 10 millisecondi. Windows richiede che i codec forniti dai IHV supportino entrambe le durate dei fotogrammi per garantire l'interoperabilità con i dispositivi accessori Bluetooth LE Audio e la coesistenza qualitativa con altri dispositivi Bluetooth LE connessi al sistema.

Definizioni della modalità di elaborazione dei segnali

Bluetooth LE Audio supporta un'ampia gamma di formati di streaming per supportare diversi scenari utente. Le specifiche BAP e TMAP definiscono formati supportati obbligatori per la certificazione. Windows applica le modalità di elaborazione dei segnali audio per correlare il formato da usare con lo scenario eseguito dal sistema. I driver audio che supportano Bluetooth LE Audio indicano il supporto per le modalità e i formati di elaborazione dei segnali nella tabella seguente. Inoltre, Bluetooth LE Audio non supporta la modalità di elaborazione del segnale non elaborato, quindi i driver audio non annunciano alcun formato supportato per questa modalità.

Modalità di elaborazione del segnale audio del flusso di rendering

Bluetooth LE Audio richiede che i formati audio di rendering vengano dichiarati per le modalità di elaborazione del segnale seguenti:

  • Impostazione predefinita (AUDIO_SIGNALPROCESSINGMODE_DEFAULT)
    • Questa modalità viene usata per scenari di rendering unidirezionali, ad esempio la riproduzione musicale, le notifiche e l'audio del videogiochi.
  • Comunicazioni (AUDIO_SIGNALPROCESSINGMODE_COMMUNICATIONS)
    • Questa modalità viene usata per scenari bidirezionali, ad esempio chiamate vocali.

Le tabelle seguenti sono elenchi di formati per ogni caso d'uso e modalità di elaborazione dei segnali. I formati audio vengono ordinati dal più preferito al meno preferito.

Suoni di sistema, riproduzione musicale e audio di videogiochi quando si è connessi a un dispositivo stereo o a un set coordinato di dispositivi

Modalità di elaborazione dei segnali: impostazione predefinita

Frequenza di campionamento Conteggio canali Profondità bit Durata fotogramma Velocità dati audio ID di configurazione del codec BAP (tabella 3.11 della specifica BAP)
48 kHz 2 16 7,5 ms 96 kbps 48_3
48 kHz 2 16 7,5 ms 80 kbps 48_1
48 kHz 2 16 10 ms 96 kbps 48_4
48 kHz 2 16 10 ms 80 kbps 48_2
24 kHz 2 16 7,5 ms 48 kbps 24_1
24 kHz 2 16 10 ms 48 kbps 24_2
Suoni di sistema, riproduzione musicale e audio di videogiochi quando si è connessi a un singolo membro di un set coordinato (singolo auricolare o apparecchi acustici)

Modalità di elaborazione dei segnali: impostazione predefinita

Frequenza di campionamento Conteggio canali Profondità bit Durata fotogramma Velocità dati audio ID di configurazione del codec BAP (tabella 3.11 della specifica BAP)
48 kHz 1 16 7,5 ms 96 kbps 48_3
48 kHz 1 16 7,5 ms 80 kbps 48_1
48 kHz 1 16 10 ms 96 kbps 48_4
48 kHz 1 16 10 ms 80 kbps 48_2
24 kHz 1 16 7,5 ms 48 kbps 24_1
24 kHz 1 16 10 ms 48 kbps 24_2
16 kHz 1 16 7,5 ms 32 kbps 16_1
16 kHz 1 16 10 ms 32 kbps 16_2
Rendering del registratore vocale, chiamate VOIP o audio di videogiochi con chat vocale

Modalità di elaborazione dei segnali: comunicazioni

Frequenza di campionamento Conteggio canali Profondità bit Durata fotogramma Velocità dati audio ID di configurazione del codec BAP (tabella 3.11 della specifica BAP)
32 kHz 1 16 7,5 ms 64 kbps 32_1
32 kHz 1 16 10 ms 64 kbps 32_2
24 kHz 1 16 7,5 ms 48 kbps 24_1
24 kHz 1 16 10 ms 48 kbps 24_2
16 kHz 1 16 7,5 ms 32 kbps 16_1
16 kHz 1 16 10 ms 32 kbps 16_2
Acquisire le modalità di elaborazione dei segnali audio di flusso

Bluetooth LE Audio richiede che i formati audio di acquisizione siano dichiarati per la modalità di elaborazione del segnale Predefinito (AUDIO_SIGNALPROCESSINGMODE_DEFAULT). L'elenco dei formati di acquisizione supportati è riportato nella tabella seguente.

I formati audio vengono ordinati dal più preferito al meno preferito.

Acquisire registratore vocale, chiamate VOIP o audio di videogiochi con chat vocale

Modalità di elaborazione dei segnali: impostazione predefinita

Frequenza di campionamento Conteggio canali Profondità bit Durata fotogramma Velocità dati audio ID di configurazione del codec BAP (tabella 3.11 della specifica BAP)
32 kHz 1 16 7,5 ms 64 kbps 32_1
32 kHz 1 16 10 ms 64 kbps 32_2
24 kHz 1 16 7,5 ms 48 kbps 24_1
24 kHz 1 16 10 ms 48 kbps 24_2
16 kHz 1 16 7,5 ms 32 kbps 16_1
16 kHz 1 16 10 ms 32 kbps 16_2

Configurazioni e topologie di flusso definite

Configurazioni di sola rendering
Configurazione del profilo audio di base 1

La configurazione audio seguente è definita nella tabella 4.1 della specifica BAP Bluetooth

Diagramma che illustra la configurazione del profilo audio di base 1.

Il PC è connesso a un singolo dispositivo audio che supporta flussi mono. Il singolo dispositivo può essere un dispositivo autonomo o un singolo membro connesso di un set coordinato.

Esempi di casi d'uso Impostazioni audio di Windows Impostazioni controller Bluetooth
Riproduzione di contenuti multimediali Render:
Modalità di elaborazione dei segnali: impostazione predefinita
Numero di canali: 1
Acquisizione: Nessuno
Conteggio CIS: 1
Numero CIG: 1
Impostazioni QoS BAP: affidabilità elevata
Chiamata vocale senza microfono nel dispositivo audio Render:
Modalità di elaborazione dei segnali: comunicazioni
Numero di canali: 1
Acquisizione: Nessuno
Conteggio CIS: 1
Numero CIG: 1
Impostazioni QoS BAP: bassa latenza
Riproduzione di videogiochi Render:
Modalità di elaborazione dei segnali: impostazione predefinita
Numero di canali: 1
Acquisizione: Nessuno
Conteggio CIS: 1
Numero CIG: 1
Impostazioni QoS BAP: bassa latenza
Configurazione di base del profilo audio 4

La configurazione audio seguente è definita nella tabella 4.1 della specifica BAP Bluetooth

Diagramma che illustra la configurazione di base del profilo audio 4.

Il PC è connesso a un singolo dispositivo audio che supporta flussi stereo. Il dispositivo audio è in grado di elaborare due canali audio in un singolo CIS.

Esempi di casi d'uso Impostazioni audio di Windows Impostazioni controller Bluetooth
Riproduzione di contenuti multimediali Rendering: modalità di elaborazione dei segnali: impostazione predefinita
Numero di canali: 2
Acquisizione: Nessuno
Conteggio CIS: 1
Numero CIG: 1
Impostazioni QoS BAP: allocazione del canale audio ad alta affidabilità: front-left e front-right
Riproduzione di videogiochi Modalità di elaborazione dei segnali: impostazione predefinita
Numero di canali: 2
Acquisizione: Nessuno
Conteggio CIS: 1
Numero CIG: 1
Impostazioni QoS BAP: bassa latenza
Allocazione canale audio: anteriore sinistro e anteriore destro
Configurazione del profilo audio di base 6(i)

La configurazione audio seguente è definita nella tabella 4.1 della specifica BAP Bluetooth

Diagramma che illustra la configurazione del profilo audio di base 6 I.

Il PC è connesso a un singolo dispositivo audio che supporta flussi stereo. Il dispositivo audio è in grado di elaborare un solo canale audio in ognuno dei due CIS

Esempi di casi d'uso Impostazioni audio di Windows Impostazioni controller Bluetooth
Riproduzione di contenuti multimediali Modalità di elaborazione dei segnali: impostazione predefinita
Numero di canali: 2
Acquisizione: Nessuno
Numero CIS: 2
Numero CIG: 1
Impostazioni QoS BAP: affidabilità elevata
Chiamata vocale senza microfono nel dispositivo audio Modalità di elaborazione dei segnali: comunicazioni
Numero di canali: 1
Acquisizione: Nessuno
Numero CIS: 2
Numero CIG: 1
Impostazioni QoS BAP: bassa latenza
Allocazione canale audio: anteriore sinistra o anteriore destra
Riproduzione di videogiochi Modalità di elaborazione dei segnali: impostazione predefinita
Numero di canali: 2
Acquisizione: Nessuno
Numero CIS: 2
Numero CIG: 1
Impostazioni QoS BAP: bassa latenza
Allocazione canale audio: anteriore sinistro e anteriore destro
Configurazione del profilo audio di base 6(ii)

La configurazione audio seguente è definita nella tabella 4.1 della specifica BAP Bluetooth

Diagramma che illustra la configurazione di base del profilo audio 6 II.

Il PC è connesso a un set coordinato di dispositivi audio. Il set è in grado di elaborare due canali di audio con ogni membro che elabora un singolo canale.

Esempi di casi d'uso Impostazioni audio di Windows Impostazioni controller Bluetooth
Riproduzione di contenuti multimediali Modalità di elaborazione dei segnali: impostazione predefinita
Numero di canali: 2
Acquisizione: Nessuno
Numero CIS: 2
Numero CIG: 1
Impostazioni QoS BAP: affidabilità elevata
Chiamata vocale senza microfono su entrambi i dispositivi Modalità di elaborazione dei segnali: comunicazioni
Numero di canali: 1
Acquisizione: Nessuno
Numero CIS: 2
Numero CIG: 1
Impostazioni QoS BAP: bassa latenza
Riproduzione di videogiochi Modalità di elaborazione dei segnali: impostazione predefinita
Numero di canali: 2
Acquisizione: Nessuno
Numero CIS: 2
Numero CIG: 1
Impostazioni QoS BAP: bassa latenza
Configurazioni bidirezionali

Le configurazioni bidirezionali vengono usate quando il profilo Audio Bluetooth LE rileva che un'applicazione intende creare sia un flusso di acquisizione che di rendering in un dispositivo remoto o in un set di dispositivi. Poiché le applicazioni controllano separatamente i flussi di acquisizione e rendering, i driver audio IHV e i controller Bluetooth consentono il flusso audio su una singola direzione di un CIS bidirezionale dopo il provisioning usando i comandi HCI Configure Data Path e LE Setup ISO Data Path.

Configurazione di base del profilo audio 3

La configurazione audio seguente è definita nella tabella 4.1 della specifica BAP Bluetooth

Diagramma che illustra la configurazione di base del profilo audio 3.

Il PC è connesso a un singolo dispositivo audio con un flusso mono bidirezionale stabilito in un singolo CIS.

Caso d'uso Impostazioni audio di Windows Impostazioni controller Bluetooth
Chiamata vocale Render:
Modalità di elaborazione dei segnali: comunicazioni
Numero di canali: 1
Acquisisci:
Modalità di elaborazione dei segnali: impostazione predefinita
Numero di canali: 1
Conteggio CIS: 1
Numero CIG: 1
Impostazioni QoS BAP: bassa latenza
Riproduzione di videogiochi con chat vocale Render:
Modalità di elaborazione dei segnali: comunicazioni
Numero di canali: 1
Acquisisci:
Modalità di elaborazione dei segnali: impostazione predefinita
Numero di canali: 1
Conteggio CIS: 1
Numero CIG: 1
Impostazioni QoS BAP: bassa latenza
Configurazione di base del profilo audio 8(i)

La configurazione audio seguente è definita nella tabella 4.1 della specifica BAP Bluetooth

Diagramma che illustra la configurazione di base del profilo audio 8 I.

Il PC è connesso a un singolo dispositivo audio che supporta flussi di rendering stereo e flussi di acquisizione mono. Il dispositivo è in grado di elaborare un canale di audio in un singolo CIS per una determinata direzione.

Caso d'uso Impostazioni audio di Windows Impostazioni controller Bluetooth
Chiamata vocale Render:
Modalità di elaborazione dei segnali: comunicazioni
Numero di canali: 1
Acquisisci:
Modalità di elaborazione dei segnali: impostazione predefinita
Numero di canali: 1
Numero CIS: 2
Numero CIG: 1
Impostazioni QoS BAP: bassa latenza
Riproduzione di videogiochi con chat vocale Render:
Modalità di elaborazione dei segnali: comunicazioni
Numero di canali: 2
Acquisisci:
Modalità di elaborazione dei segnali: impostazione predefinita
Numero di canali: 1
Numero CIS: 2
Numero CIG: 1
Impostazioni QoS BAP: bassa latenza
Configurazione del profilo audio di base 8(ii)

La configurazione audio seguente è definita nella tabella 4.1 della specifica BAP Bluetooth

Diagramma che illustra la configurazione del profilo audio di base 8 II.

Il PC è connesso a un set coordinato di dispositivi audio. Ogni membro del set riceve un canale di rendering audio. Un singolo membro del set ha un flusso di acquisizione stabilito. Il membro set con il flusso di acquisizione è il primo membro set che si connette al PC che supporta anche i flussi di acquisizione.

Caso d'uso Impostazioni audio di Windows Impostazioni controller Bluetooth
Chiamata vocale Render:
Modalità di elaborazione dei segnali: comunicazioni
Numero di canali: 1
Acquisisci:
Modalità di elaborazione dei segnali: impostazione predefinita
Numero di canali: 1
Numero CIS: 2
Numero CIG: 1
Impostazioni QoS BAP: bassa latenza
Riproduzione di videogiochi con chat vocale Render:
Modalità di elaborazione dei segnali: comunicazioni
Numero di canali: 2
Acquisisci:
Modalità di elaborazione dei segnali: impostazione predefinita
Numero di canali: 1
Numero CIS: 2
Numero CIG: 1
Impostazioni QoS BAP: bassa latenza
Configurazioni di sola acquisizione
Configurazione del profilo audio di base 2

La configurazione audio seguente è definita nella tabella 4.1 della specifica BAP Bluetooth

Diagramma che illustra la configurazione di base del profilo audio 2.

Il PC è connesso a un singolo dispositivo audio che supporta flussi di acquisizione mono.

Caso d'uso Impostazioni audio di Windows Impostazioni controller Bluetooth
Chiamata vocale senza altoparlante nel dispositivo Rendering: Nessuno
Acquisisci:
Modalità di elaborazione dei segnali: impostazione predefinita
Numero di canali: 1
Conteggio CIS: 1
Numero CIG: 1
Impostazioni QoS BAP: bassa latenza
Configurazione del profilo audio di base 9(i)

La configurazione audio seguente è definita nella tabella 4.1 della specifica BAP Bluetooth

Diagramma che illustra la configurazione del profilo audio di base 9 I.

Il PC è connesso a un singolo dispositivo audio che supporta l'invio di dati audio stereo. Il dispositivo è in grado di codificare un canale di audio in un singolo CIS.

Caso d'uso Impostazioni audio di Windows Impostazioni controller Bluetooth
Acquisizione microfono multicanale Rendering: Nessuno
Acquisisci:
Modalità di elaborazione dei segnali: impostazione predefinita
Numero di canali: 1
Numero CIS: 2
Numero CIG: 1
Impostazioni QoS BAP: bassa latenza
Configurazione del profilo audio di base 9(ii)

Il PC è connesso a un singolo dispositivo audio che supporta flussi di acquisizione mono.

La configurazione audio seguente è definita nella tabella 4.1 della specifica BAP Bluetooth

Diagramma che mostra la configurazione di base del profilo audio 9(ii) con PC connesso a un singolo dispositivo audio.

Il PC è connesso a un set di dispositivi audio. Ogni membro del set invia un canale di audio al PC.

Caso d'uso Impostazioni audio di Windows Impostazioni controller Bluetooth
Acquisizione microfono multicanale Rendering: Nessuno
Acquisisci:
Modalità di elaborazione dei segnali: impostazione predefinita
Numero di canali: 1
Numero CIS: 2
Numero CIG: 1
Impostazioni QoS BAP: bassa latenza

Se il dispositivo remoto o il set di dispositivi supporta l'audio bidirezionale, le configurazioni per un flusso di acquisizione sono le stesse delle configurazioni bidirezionali. Ciò consente transizioni da scenari di acquisizione solo a scenari bidirezionali senza dover ricreare i flussi.

Strutture dei dati

Proprietà dell'interfaccia Audio BLUETOOTH LE definite da Microsoft

Proprietà di creazione del flusso

Le proprietà seguenti vengono condivise tra lo stack di driver audio specifico del fornitore e il profilo audio BLUETOOTH LE tramite le DDI ACXOBJECTBAG per informare le decisioni sulla creazione e la configurazione dell'endpoint di flusso, come illustrato nello scenario di creazione di flussi.

BluetoothLEAudio_CodecCapabilities

Questa proprietà è impostata dal driver audio per indicare il supporto per le funzionalità di streaming audio supportate nel driver audio o nel DSP audio. Il valore della proprietà viene impostato usando DDI AcxObjectBagAddBlob e il formato del valore corrisponde a un record PAC definito nella specifica PACS.

Il profilo Audio Bluetooth Bluetooth LE legge la proprietà per determinare le possibili configurazioni codec e la composizione del flusso da usare.

Campo Ottetto
Conteggio funzionalità 0
Codec ID[i] 1-6
Lunghezza funzionalità specifiche codec[i] 7
Funzionalità specifiche del codec 8... n
Lunghezza metadati (m) n + 1
Metadati UFX n+2... m

I valori dei campi sono definiti nelle tabelle 3.2 e 3.4 della specifica PACS.

Bluetooth_DatapathID

Questa proprietà viene impostata dal driver audio per indicare l'ID percorso dati usato come parametro per i comandi HCI_LE_Setup_ISO_Data_Path e HCI_Configure_Data_Path. Il valore della proprietà viene impostato usando l'oggetto DDI AcxObjectBagAddUI8 .

Il profilo Audio BLUETOOTH LE legge e usa questa proprietà come parametro nei comandi HCI_Configure_Data_Path e HCI_LE_Setup_ISO_Data_Path. Questo ID viene applicato per tutti i flussi isocroni creati per ACXSTREAM associato al contenitore di oggetti.

Campo Ottetto
ID percorso dati 0

Se la proprietà non è impostata dal driver audio, il sistema operativo usa il valore 1 come parametro per i comandi HCI.

Bluetooth_DatapathConfiguration

Questa proprietà viene impostata dal driver audio per fornire configurazioni specifiche del fornitore al controller Bluetooth tramite il comando HCI_Configure_Data_Path. Non deve essere maggiore di 255 byte, ovvero il payload più grande accettato da un controller Bluetooth per un comando HCI. Il valore della proprietà viene impostato usando acxObjectBagAddBlob DDI. Questa configurazione viene applicata per tutti gli ID percorso dati impostati dal driver audio.

BluetoothLEAudio_CodecConfiguration

Questa proprietà deve essere impostata dal profilo Audio Bluetooth LE tramite DDI AcxObjectBagAddBlob dopo la configurazione del codec con un dispositivo audio. La struttura del valore è:

Campo Ottetto
Conteggio configurazioni 0
Formato di codifica[i] 3
ID società[i] 1-2
ID codec specifico fornitore[i] 3-4
Lunghezza configurazione specifica codec[i] 5
Configurazione specifica codec[i] 6... n

I valori dei campi sono definiti nella tabella 4.3 della specifica del servizio di controllo del flusso audio Bluetooth.

Lo stack di driver audio specifico del fornitore deve leggere questa proprietà se il codec LC3 si trova nel driver di streaming ACX o nel DSP audio.

Interfacce

ID di associazione di modelli di endpoint audio

Usato dalla fabbrica del circuito ACX del driver audio per sapere quando viene creato un circuito ACX per un dispositivo Bluetooth associato.

Gli ID dei componenti seguenti vengono usati per creare circuiti Audio BLUETOOTH LE:

// {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);

Interfaccia di supporto audio Bluetooth LE

Usato dallo stack di driver audio per indicare che è disponibile per lo streaming bluetooth LE Audio. Controllo a livello di servizio Audio Bluetooth di Windows per questa interfaccia e attendere che venga pubblicato prima di abilitare il supporto audio Bluetooth LE.

Gli ID di interfaccia seguenti vengono usati per pubblicare l'interfaccia di supporto audio Bluetooth LE:

// {BA02FA1B-0FD0-4A0F-A748-4FAE2E2D2F67}
DEFINE_GUID(GUID_BLUETOOTH_LEAUDIO_SUPPORT_INTERFACE, 
0xba02fa1b, 0x0fd0, 0x4a0f, 0xa7, 0x48, 0x4f, 0xae, 0x2e, 0x2d, 0x2f, 0x67);

Sequenze

Inizializzazione del driver audio

Quando il driver di streaming ACX IHV carica e determina che supporta lo streaming audio Bluetooth LE, mostrerà il supporto per la tecnologia creando un oggetto ACXFACTORYCIRCUIT e registrando per associazioni di modelli Bluetooth con ACX usando gli ID definiti negli ID di associazione di modelli di endpoint audio.

Diagramma di flusso che illustra la sequenza di inizializzazione del driver Bluetooth LE Audio.

Creazione dell'endpoint

  1. Quando un dispositivo audio LE è associato al sistema, il profilo audio Bluetooth LE:
    1. Legge le funzionalità audio pubblicate del dispositivo remoto.
    2. Individua le funzionalità supportate dal controller inviando i comandi HCI_Read_Local_Support_Codecs [v2] e HCI_Read_Local_Supported_Codec_Capabilities.
    3. Crea un ACXCIRCUIT con i formati supportati impostati in base alle funzionalità codec supportate dal controller Bluetooth e dal dispositivo audio remoto. Se il controller non supporta codec perché il supporto codec si trova nel driver audio DSP o audio, i formati supportati vengono impostati sui formati supportati dal dispositivo audio remoto.
  2. Dopo aver creato ACXCIRCUIT , ACX richiede alla factory del circuito ACX del driver di streaming IHV ACX di creare un ACXCIRCUIT per l'elaborazione del flusso.
  3. Quando viene ricevuta una richiesta di creazione di un circuito, il driver di streaming ACX IHV:
    1. Crea oggetti ACXCIRCUIT, ACXPIN, ACXOBJECTBAG e ACXSTREAMBRIDGE .
    2. Se il codec specifico del fornitore o LC3 è ospitato nel driver audio o nel DSP, il driver di streaming ACX IHV imposta la proprietà BluetoothLEAudio_CodecCapabilities in ACXOBJECTBAG.
    3. Il driver di streaming IHV ACX può impostare Bluetooth_DatapathID o Bluetooth_DatapathConfiguration in ACXOBJECTBAG se è noto in questo momento.
  4. Dopo aver creato entrambi i circuiti, ACX richiama il callback EvtAcxPinConnected sul pin bridge del driver IHV ACX.
  5. Quando viene richiamato il callback EvtAcxPinConnected , il driver di streaming ACX IHV:
    1. Recupera il pin del ponte del circuito del profilo con AcxTarget... API per recuperare i formati supportati dal circuito del profilo.
    2. Scorre l'elenco di ACXDATAFORMATimpostati dal circuito del profilo. Se il codec audio Bluetooth è ospitato nel driver audio o nel DSP audio, il driver audio IHV aggiorna i relativi formati ACXDATAFORMATcon i formati supportati dal circuito codec e profilo. In caso contrario, tutti i formati vengono copiati nel pin host del driver di streaming IHV ACX.
    3. Imposta l'elenco di formati aggiornato sul pin bridge se viene creato un motore audio per lo streaming offload.
  6. Dopo aver aggiornato i formati, ACX abilita entrambe le interfacce e viene creato un endpoint audio.

Diagramma di flusso che illustra il processo di creazione dell'endpoint Bluetooth LE Audio.

Creazione del flusso

  1. Quando un'applicazione richiede di creare un flusso audio, ACX richiama i callback EvtCircuitCreateStream registrati per ogni circuito, a partire dal driver di streaming IHV ACX.
  2. Quando viene richiamato il callback EvtCircuitCreateStream , il driver di streaming IHV ACX:
    1. Imposta o aggiorna le proprietà Bluetooth_DatapathId e Bluetooth_DataPathConfiguration in ACXOBJECTBAG collegato a ACXSTREAMBRIDGE.
    2. Crea un oggetto ACXSTREAM con callback impostati per le transizioni di stato del flusso e l'elaborazione del flusso RT
    3. Crea un elemento del motore audio nel flusso se la pipeline audio supporta lo streaming offload.
    4. Aggiunge ACXSTREAM al bridge di flusso. In questo modo viene richiamato il callback EvtCircuitCreateStream del profilo Audio Bluetooth LE.
  3. Quando viene richiamato il callback EvtAcxCircuitCreateStream, il profilo Audio Bluetooth LE:
    1. Salva le proprietà localmente dal set ACXOBJECTBAG dal driver di streaming IHV ACX per i callback di transizione di flusso futuri.
    2. Se l'endpoint audio è per lo streaming unicast del profilo Audio Bluetooth LE:
      1. Esegue l'operazione config codec come definito nella specifica BAP. I parametri per l'operazione sono derivati da ACXDATAFORMAT specificato nel callback EvtAcxCircuitCreateStream e dagli altri parametri di flusso in ACXOBJECTBAG o dalle funzionalità codec supportate dal controller Bluetooth.
      2. Imposta la proprietà BluetoothLEAudio_CodecConfiguration in ACXOBJECTBAG con il valore utilizzato per configurare i dispositivi audio remoti.
  4. Se il driver di streaming IHV ACX deve aggiornare l'ID percorso dati o la configurazione del percorso dati in base ai valori del contenitore oggetti impostati dal profilo, può richiamare le operazioni del set KSPROPERTY per aggiornare il valore archiviato dal circuito del profilo.
    1. Crea un oggetto ACXSTREAM con callback impostati per le transizioni di stato del flusso.

Diagramma di flusso che mostra il processo di creazione del flusso Audio BLUETOOTH LE.

Transizioni di stato del flusso

ACX decide l'ordine del circuito delle transizioni di stato del flusso in base al flusso audio e se lo stato passa a uno stato più attivo o meno attivo.

  • Per i flussi di rendering che passano da uno stato meno attivo a uno stato più attivo, il circuito del profilo riceve prima l'evento, seguito dal circuito di streaming.
  • Per i flussi di rendering che passano da uno stato più attivo a uno stato meno attivo, il circuito di streaming riceve prima l'evento, seguito dal circuito del profilo. 
  • Per i flussi di acquisizione che passano da uno stato meno attivo a uno stato più attivo, il circuito di streaming riceve prima l'evento, seguito dal circuito del profilo. 
  • Per i flussi di acquisizione che passano da uno stato più attivo a uno stato meno attivo, il circuito del profilo con riceve l'evento per primo, seguito dal circuito di streaming.

Preparare il flusso

Quando viene richiamato il callback EvtAcxStreamPrepareHardware, il profilo Audio Bluetooth LE:

  1. Alloca le risorse per un flusso unicast in base a:
    1. Configurazione di un CIG con il comando HCI_LE_Set_CIG_Parameters.
    2. Invio dell'operazione QoS di configurazione ASCS per sincronizzare le impostazioni con il dispositivo remoto.

Diagramma di flusso che illustra la preparazione del flusso Audio Bluetooth LE per un circuito del profilo.

Quando viene richiamato il callback evtAcxStreamPrepareHardware, il driver di streaming ACX IHV alloca le risorse di streaming necessarie e inizializza la pipeline audio in modo che sia nello stato acquisito.

Diagramma di flusso che illustra la preparazione del flusso Audio Bluetooth LE per un circuito di streaming.

Avvia flusso

Quando viene richiamato il callback EvtAcxStreamRun, il profilo Audio Bluetooth LE:

  1. Applica le impostazioni di configurazione del percorso dati impostate dal driver di streaming ACX nella procedura di creazione del flusso usando il comando HCI_Configure_Data_Path.
  2. Avvia la procedura di avvio del flusso in base a:
    1. Esecuzione della procedura BAP unicast stream Enable per un flusso unicast:
      1. Invio dell'operazione Abilita agli endpoint remoti.
      2. Creazione di CISe se non sono già stati creati usando il comando HCI_LE_Create_CIS.
  3. Se il percorso dati non è già configurato, il profilo Audio Bluetooth LE:
    1. Stabilisce i percorsi dei dati ISO usando il comando HCI_LE_Setup_ISO_Data_Path
      1. Se il driver di streaming IHV ACX imposta la proprietà BluetoothLEAudio_CodecCapabilities , il valore del campo Codec_ID in HCI_LE_Setup_ISO_Data_Path deve essere impostato su trasparente (0x3) come definito nei numeri assegnati Bluetooth. In caso contrario, il valore deve corrispondere all'ID codec usato nell'operazione di codec config nella procedura di creazione del flusso.
  4. Se il flusso audio è un flusso di acquisizione unicast, il profilo Audio Bluetooth LE esegue l'operazione di avvio del ricevitore BAP.

Diagramma di flusso che mostra il processo di avvio del flusso Audio BLUETOOTH LE per un circuito del profilo.

Quando viene richiamato il callback EvtAcxStreamRun, il driver di streaming IHV ACX avvia l'elaborazione dei dati audio in ingresso dal sistema audio Windows (rendering) o dal controller Bluetooth (acquisizione).

Diagramma di flusso che illustra il processo di avvio del flusso Audio BLUETOOTH LE per un circuito di streaming.

Sospendi flusso

Quando viene richiamato il callback EvtAcxStreamPause, il profilo Audio Bluetooth LE:

  1. Esegue la procedura di disabilitazione del flusso unicast BAP.
  2. Rimuove il percorso dati ISO usando il comando HCI_LE_Remove_ISO_Data_Path.
  3. Esegue la procedura di arresto del ricevitore ASCS se il flusso audio è un flusso di acquisizione unicast.

Diagramma di flusso che illustra il flusso Bluetooth LE Audio in pausa per un circuito del profilo.

Quando viene richiamato il callback EvtAcxStreamPause, il driver di streaming ACX IHV sospende la pipeline di elaborazione audio.

Diagramma di flusso che mostra il flusso Audio BLUETOOTH LE che sospendo il processo per un circuito di streaming.

Flusso di rilascio

Quando viene richiamato il callback evtAcxStreamReleaseHardware, il profilo audio Bluetooth LE esegue la procedura di rilascio del flusso unicast BAP tramite:

  1. Invio dell'operazione ASCS Release al dispositivo Bluetooth LE Audio remoto
  2. Disconnessione del CIS se non viene usato da un altro flusso attivo.
  3. Rimozione del CIG se tutti i CIS sono disconnessi.

Diagramma di flusso che illustra il processo di rilascio del flusso Audio BLUETOOTH LE per un circuito del profilo.

Quando viene richiamato il callback EvtAcxStreamReleaseHardware , il driver di streaming IHV ACX rilascia le risorse della pipeline audio.

Diagramma di flusso che illustra il processo di rilascio del flusso Audio BLUETOOTH LE per un circuito di streaming.

Disconnessione dell'endpoint

Il profilo Audio Le Bluetooth Bluetooth aggiorna lo stato di connessione di un endpoint se il dispositivo unicast remoto non dispone di una connessione LE-ACL al PC o segnala tramite i contesti audio disponibili PACS che non è disponibile per lo streaming. Quando l'endpoint è disconnesso, il servizio audio di Windows invalida tutti i flussi attivi all'endpoint. Ciò comporta l'esecuzione delle sequenze di sospensione e rilascio del flusso.

Rimozione dell'endpoint

Un endpoint Audio BLUETOOTH LE viene rimosso dal sistema quando il circuito del profilo o il circuito di streaming viene eliminato definitivamente. Il circuito del profilo può essere rimosso quando l'associazione del dispositivo unicast remoto viene rimossa da Windows o la radio Bluetooth è disabilitata.

  1. Quando il profilo Audio BLUETOOTH Bluetooth WINDOWS rimuove il circuito, ACX disabilita le interfacce endpoint per segnalare al servizio audio windows che l'endpoint deve essere rimosso.
  2. Quando le interfacce sono disabilitate, il servizio audio di Windows invalida tutti i flussi attivi all'endpoint Bluetooth LE Audio, questa operazione comporta la sospensione del flusso e il rilascio dei callback da richiamare nel circuito di streaming.
  3. Per completare la rimozione dell'endpoint, ACX invalida il circuito del driver di streaming IHV ACX, che comporta il richiamo del callback di pulizia del circuito.
  4. Quando viene richiamato il callback di pulizia, il driver di streaming IHV ACX rilascia il circuito.

Diagramma di flusso che mostra il processo di rimozione dell'endpoint Audio BLUETOOTH LE.

Volume e disattivazione disattivata

Il circuito di streaming ACX IHV deve includere solo gli elementi volume e disattivazione se il driver di streaming richiede un motore audio. Quando si usa un motore audio, i flag di configurazione devono essere impostati come tali:

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.

Questa operazione è necessaria per consentire agli endpoint Audio Bluetooth LE di usare i profili di controllo del volume e del microfono definiti da Bluetooth SIG per il volume e disattivare le modifiche per gli endpoint audio unicast.

Se il dispositivo Bluetooth LE Audio remoto non supporta i servizi di controllo del volume o del microfono o l'endpoint viene creato per l'audio trasmesso, il volume e disattivare gli elementi nel motore audio fungerà da fallback per gestire le richieste di modifica dal sistema audio. Il sistema audio Windows gestisce le modifiche apportate al volume e all'disattivazione. Se non è presente alcun motore audio e il dispositivo remoto non supporta il volume o i servizi microfoni o l'endpoint audio è per la trasmissione audio.

Coesistenza audio classica e Bluetooth LE

Windows garantisce che solo l'audio classico o l'audio LE sia attivo per un dispositivo audio Bluetooth associato che supporta entrambe le tecnologie. Se l'audio LE è attivo, le DDI sideband per A2DP e HFP per il dispositivo remoto sono disabilitate e il circuito del profilo viene creato per l'endpoint audio LE. Se l'audio classico è attivo, le DDI sideband per A2DP e HFP per il dispositivo remoto sono abilitate e il circuito del profilo non viene creato per l'endpoint audio LE.

Risparmio energia

Bluetooth LE Audio non ha requisiti di risparmio energia o flussi esterni a ciò che è già definito da WDF.