Compartilhar via


Áudio Bluetooth de Baixa Energia

Este artigo fornece uma visão geral do Bluetooth LE Audio introduzido no Windows 11 versão 22H2 (KB5026446).

Introdução

O Bluetooth LE Audio permite transmitir áudio unicast ou de difusão para dispositivos Bluetooth LE por meio de um transporte isócrono. A partir da versão 5.3 da especificação principal do Bluetooth, não há uma HCI (interface do controlador de host) definida padrão para que as plataformas host enviem e recebam dados isocronos de e para o controlador Bluetooth. Este documento define o VSAP (caminho de áudio específico) do fornecedor bluetooth do Windows para permitir que as plataformas usem soluções específicas do fornecedor para habilitar o streaming de áudio Bluetooth LE. A interface de software VSAP usa as extensões de classe de áudio (ACX) do Windows e mais propriedades de interface definidas neste documento.

Terminologia e pré-requisitos

Além dos termos definidos nesta tabela, este documento também faz referência aos termos definidos pelas extensões de classe de áudio do Windows.

Prazo Definição
Áudio LE Abreviação de Bluetooth LE Audio
Áudio clássico Streaming de áudio Bluetooth que usa o HFP (perfil de mãos livres) e o perfil de distribuição de áudio avançado (A2DP)
Dispositivo de áudio Um único dispositivo remoto Bluetooth LE Audio ou um conjunto de dispositivos Bluetooth LE Audio que, juntos, compõem um único ponto de extremidade de áudio na perspectiva do Windows.
BAP O Perfil de Áudio Básico define como os dispositivos podem distribuir e consumir áudio usando comunicações de LE (Bluetooth Low Energy).
TMAP O Perfil de Áudio de Mídia e Telefonia especifica configurações interoperáveis dos serviços e perfis de áudio de nível inferior.
ASCS O Serviço de Controle de Fluxo de Áudio define uma maneira padrão para dispositivos Bluetooth LE Audio configurarem e estabelecerem fluxos de áudio unicast.
Sistema de Arquivamento e Comunicação de Imagens (PACS) O Serviço de Recursos de Áudio Publicado define uma maneira padrão para dispositivos Bluetooth LE Audio relatarem seus recursos de codec de áudio com suporte.
CEI O transporte de Fluxos Isocronos Conectados é usado para enviar e receber dados de áudio unicast entre dispositivos BLUETOOTH LE.
BIS O transporte de fluxo isocrono de difusão é usado para transferências de dados de áudio sem conexão.
ACX Abreviação de "audio class extensions", que é o modelo de driver necessário para que todos os drivers de áudio dêem suporte ao áudio Bluetooth LE no Windows.
Circuitos de streaming Um ou mais objetos ACXCIRCUIT criados pela Pilha de Drivers de Áudio Específicos do Fornecedor para seu caminho de transmissão.
Circuito de perfil Um objeto ACXCIRCUIT criado pela implementação do perfil bluetooth LE Audio no Windows. Esse ACXCIRCUIT serve como o circuito principal conforme definido na especificação ACX e não é um circuito de streaming.

Este documento pressupõe familiaridade com os termos definidos anteriormente e os seguintes comandos HCI definidos na especificação do 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
  • Configurar_Caminho_de_Dados_HCI
  • HCI_LE_Setup_ISO_Data_Path
  • HCI_LE_Remove_ISO_Data_Path
  • HCI_LE_Remove_CIG

O VSAP de áudio Bluetooth LE requer que os drivers de áudio usem o framework ACX. A adoção do ACX para Bluetooth LE Audio oferece várias vantagens, como:

  • Dá suporte ao modelo de driver de áudio preferencial para Windows daqui para frente.
  • Usa o suporte nativo do ACX para soluções de áudio de multicamadas sem exigir uma DDI dedicada entre controladores.
  • Não requer drivers de áudio IHV para retransmitir solicitações do sistema de áudio para a pilha Bluetooth. Em vez disso, o ACX pode enviar solicitações diretamente para a pilha Bluetooth por meio do circuito de perfil.

Arquitetura

Definições

Os componentes a seguir estão envolvidos nas diferentes variantes de arquitetura do VSAP.

Estrutura ACX do Windows

Esse componente habilita o suporte para um ponto de extremidade de áudio multi-camadas. Para o Áudio LE Bluetooth, os componentes de software que compõem um ponto de extremidade de áudio são a pilha de driver de áudio específica do fornecedor e o perfil de Áudio LE Bluetooth do Windows.

Pilha de drivers de áudio específica para fornecedor

Esse componente específico do fornecedor é responsável por enviar e receber dados bluetooth LE Audio de e para um controlador Bluetooth por meio de uma interface de áudio definida pelo fornecedor. Ele deve consistir, no mínimo, em um driver de streaming ACX para gerenciar os dados de áudio de entrada e saída. Mais drivers ACX poderão ser adicionados se forem partes necessárias do endpoint de áudio ACX de múltiplos circuitos. Esse componente também é conhecido como o driver de streaming do ACX IHV neste documento.

Perfil de Áudio Bluetooth LE do Windows

Esse componente contém a implementação do perfil de áudio básico (BAP), perfil de controle de volume e perfil de controle de microfone. Ele é responsável por criar o controle ACXCIRCUIT para cada dispositivo Bluetooth LE Audio ou conjunto de dispositivos emparelhados com o Windows, relatar formatos de áudio relatados pelo dispositivo remoto e controlador Bluetooth e gerenciar o estado de canais e grupos isocronos.

Pilha principal de Bluetooth do Windows

Esse componente fornece uma interface para permitir que o Perfil de Áudio LE bluetooth do Windows consulte os recursos de codec com suporte do controlador Bluetooth local e gerencie o estado de canais e grupos isocronos.

Codec LC3

Esse subcomponente é responsável por traduzir entre áudio LC3 compactado e áudio PCM. Ele deve dar suporte a recursos de codificação e decodificação e pode ser implementado no software como parte da pilha do VSAP (driver de áudio) específico do fornecedor ou no hardware como parte do DSP de áudio ou controlador Bluetooth. O diagrama menciona LC3 pelo nome, pois é o codec padrão compatível com o SIG Bluetooth. No entanto, codecs futuros e codecs específicos do fornecedor com suporte do Windows também podem ser incorporados à arquitetura de maneira semelhante.

Variantes de arquitetura

A arquitetura VSAP de áudio Bluetooth LE dá suporte a diferentes variantes para streaming.

  1. Sideband Bluetooth LE Áudio streaming sem descarregamento de áudio
  2. Sideband Bluetooth LE Áudio streaming com descarregamento de áudio
  3. Streaming de áudio inband Bluetooth LE específico do fornecedor

Nos diagramas a seguir, os componentes sombreados são fornecidos pelo IHV e os componentes sem sombra são fornecidos pelo sistema operacional.

Arquitetura de áudio DE LE bluetooth de sideband sem descarregamento de áudio

Uma arquitetura de sideband usa uma interface de áudio específica do fabricante, permitindo que a pilha de drivers de áudio envie e receba dados de áudio para o controlador Bluetooth. Esse caminho de dados é separado do caminho de dados HCI usado para outros dados Bluetooth, como mensagens de sinalização entre o cliente unicast e o servidor unicast remoto. O diagrama a seguir modela uma arquitetura de sideband em que o codec LC3 está hospedado no controlador Bluetooth. Também é válido ter o codec LC3 hospedado como parte da Pilha de Drivers de Áudio Específica do Fornecedor para codificação e decodificação por software. Nesse caso, o áudio enviado para o controlador Bluetooth seria formatado como quadros de áudio LC3 em vez de áudio PCM.

O diagrama a seguir mostra uma arquitetura de áudio Bluetooth LE de banda lateral com um codec LC3 no controlador Bluetooth.

Diagrama da arquitetura de Áudio Bluetooth LE sideband, com o codec LC3 localizado no controlador Bluetooth.

O diagrama a seguir mostra uma arquitetura de Bluetooth LE Audio de banda lateral, com um codec LC3 na pilha do driver de áudio.

Diagrama da arquitetura de Áudio Bluetooth LE em banda lateral com codec LC3 localizado na pilha do driver de áudio.

Arquitetura de áudio Bluetooth LE de banda lateral com offload de áudio

Uma arquitetura de banda lateral com deslocamento de áudio inclui um componente de hardware DSP de áudio para fornecer uma solução Bluetooth LE para streaming de áudio com benefícios em termos de economia de energia. Os diagramas a seguir demonstram uma possível arquitetura com o codec LC3 no controlador Bluetooth e o codec no DSP de áudio.

O diagrama a seguir mostra um Bluetooth LE Audio sideband com arquitetura de descarregamento de áudio e um codec LC3 no controlador Bluetooth.

Diagrama da sideband Bluetooth LE Audio com arquitetura de descarregamento de áudio, com codec LC3 no controlador Bluetooth.

O diagrama a seguir mostra uma banda lateral Bluetooth LE Audio com arquitetura de offload de áudio, utilizando um codec LC3 no DSP de áudio.

Diagrama de sideband Bluetooth LE Audio com arquitetura de descarregamento de áudio, com codec LC3 no DSP de áudio.

Arquitetura de Áudio Bluetooth LE em Banda Específica do Fornecedor

A arquitetura inband do VSAP permite que um pipeline personalizado envie e receba dados de Bluetooth LE Audio da pilha de driver de áudio específica do fornecedor para o HCI do controlador Bluetooth. Essa arquitetura inclui um novo componente, o "Componente de mesclagem ISO do IHV". Esse componente é responsável por gerenciar o controle de fluxo para os dados ISO. Ele também compartilhará o controle de fluxo de comando HCI com o Windows Bluetooth Core Stack se precisar enviar comandos HCI.

O diagrama a seguir mostra uma arquitetura de áudio Bluetooth LE de banda de entrada específica do fornecedor.

Diagrama da arquitetura de áudio Bluetooth LE de banda de entrada específica do fornecedor.

Design detalhado

Requisitos de formato de áudio

Durações do quadro de áudio

Os perfis de áudio Bluetooth LE permitem que as implementações ofereçam suporte ao streaming de áudio com durações de quadro de áudio de 7,5 milissegundos ou 10 milissegundos. O Windows requer que os codecs fornecidos por IHVs ofereçam suporte às duas durações de quadros para garantir a interoperabilidade com dispositivos acessórios Bluetooth LE Audio e uma alta qualidade de coexistência com outros dispositivos Bluetooth LE conectados ao sistema.

Definições do modo de processamento de sinal

O Bluetooth LE Audio dá suporte a uma ampla gama de formatos de streaming para dar suporte a diferentes cenários de usuário. As especificações BAP e TMAP definem formatos com suporte obrigatório para certificação. O Windows aplica modos de processamento de sinal de áudio para correlacionar o formato a ser usado com o cenário que está sendo executado pelo sistema. Os drivers de áudio que dão suporte ao Bluetooth LE Audio devem indicar suporte para os modos e formatos de processamento de sinal na tabela a seguir. Além disso, o Bluetooth LE Audio não dá suporte ao modo de processamento de sinal bruto, portanto, os drivers de áudio não devem anunciar nenhum formato com suporte para esse modo.

Renderizar modos de processamento de sinal de áudio de transmissão

O Bluetooth LE Audio requer que os formatos de áudio de renderização sejam declarados para os seguintes modos de processamento de sinal:

  • Padrão (AUDIO_SIGNALPROCESSINGMODE_DEFAULT)
    • Esse modo é usado para cenários de renderização unidirecional, como reprodução de música, notificações e áudio de videogame.
  • Comunicações (AUDIO_SIGNALPROCESSINGMODE_COMMUNICATIONS)
    • Esse modo é usado para cenários bidirecionais, como chamadas de voz.

As tabelas a seguir são listas de formatos para cada caso de uso e modo de processamento de sinal. Os formatos de áudio são ordenados dos mais preferenciais aos menos preferenciais.

Sons do sistema, reprodução de música e áudio de videogame quando conectado a um dispositivo estéreo ou conjunto coordenado de dispositivos

Modo de processamento de sinal: padrão

Frequência de amostragem Contagem de canais Profundidade do bit Duração do quadro Taxa de Dados de Áudio ID de Configuração de Codec BAP (Tabela 3.11 da Especificação 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
Sons do sistema, reprodução de música e áudio de videogame quando conectado a um único membro de um conjunto coordenado (earbud único ou aparelho auditivo)

Modo de processamento de sinal: padrão

Frequência de amostragem Contagem de canais Profundidade do bit Duração do quadro Taxa de Dados de Áudio ID de Configuração de Codec BAP (Tabela 3.11 da Especificação 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
Renderizar gravador de voz, chamadas VoIP ou áudio de jogos eletrônicos com chat por voz

Modo de processamento de sinal: comunicações

Frequência de amostragem Contagem de canais Profundidade do bit Duração do quadro Taxa de Dados de Áudio ID de Configuração de Codec BAP (Tabela 3.11 da Especificação 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
Capturar modos de processamento de sinal de áudio em streaming

O Bluetooth LE Audio requer que os formatos de áudio de captura sejam declarados para o modo de processamento de sinal Padrão (AUDIO_SIGNALPROCESSINGMODE_DEFAULT). A lista de formatos de captura com suporte está na tabela a seguir.

Os formatos de áudio são ordenados dos mais preferenciais aos menos preferenciais.

Capturar gravador de voz, chamadas VOIP ou áudio de videogame com chat de voz

Modo de processamento de sinal: padrão

Frequência de amostragem Contagem de canais Profundidade do bit Duração do quadro Taxa de Dados de Áudio ID de Configuração de Codec BAP (Tabela 3.11 da Especificação 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

Configurações e topologias de fluxo definidas

Configurações somente renderização
Configuração básica do perfil de áudio 1

A configuração de áudio a seguir é definida na tabela 4.1 da especificação do BAP Bluetooth

Diagrama ilustrando a configuração básica do perfil de áudio 1.

O computador está conectado a um único dispositivo de áudio que dá suporte a fluxos mono. O único dispositivo pode ser um dispositivo autônomo ou um único membro conectado de um conjunto coordenado.

Exemplos de caso de uso Configurações de áudio do Windows Configurações do controlador Bluetooth
Reprodução de mídia Renderizar:
Modo de Processamento de Sinal: Padrão
Contagem de Canais: 1
Captura: Nenhum
Contagem de CIS: 1
Contagem de CIG: 1
Configurações de QoS do BAP: alta confiabilidade
Chamada de voz sem microfone no dispositivo de áudio Renderizar:
Modo de Processamento de Sinal: Comunicações
Contagem de Canais: 1
Captura: Nenhum
Contagem de CIS: 1
Contagem de CIG: 1
Configurações de QoS bap: baixa latência
Reprodução de videogame Renderizar:
Modo de Processamento de Sinal: Padrão
Contagem de Canais: 1
Captura: Nenhum
Contagem de CIS: 1
Contagem de CIG: 1
Configurações de QoS bap: baixa latência
Configuração básica do perfil de áudio 4

A configuração de áudio a seguir é definida na tabela 4.1 da especificação do BAP Bluetooth

Diagrama ilustrando a configuração básica do perfil de áudio 4.

O computador está conectado a um único dispositivo de áudio que dá suporte a fluxos estéreo. O dispositivo de áudio é capaz de processar dois canais de áudio em um único CIS.

Exemplos de caso de uso Configurações de áudio do Windows Configurações do controlador Bluetooth
Reprodução de mídia Render: Modo de Processamento do Sinal: Padrão
Contagem de Canais: 2
Captura: Nenhum
Contagem de CIS: 1
Contagem de CIG: 1
Configurações de QoS BAP: Alocação de Canal de Áudio de Alta Confiabilidade: frontal esquerdo e frontal direito
Reprodução de videogame Modo de Processamento de Sinal: Padrão
Contagem de Canais: 2
Captura: Nenhum
Contagem de CIS: 1
Contagem de CIG: 1
Configurações de QoS bap: baixa latência
Alocação de canal de áudio: frontal esquerdo e frontal direito
Configuração básica do perfil de áudio 6(i)

A configuração de áudio a seguir é definida na tabela 4.1 da especificação do BAP Bluetooth

Diagrama ilustrando a configuração básica de perfil de áudio 6 I.

O computador está conectado a um único dispositivo de áudio que dá suporte a fluxos estéreo. O dispositivo de áudio só é capaz de processar um canal de áudio em cada uma das duas CISs

Exemplos de caso de uso Configurações de áudio do Windows Configurações do controlador Bluetooth
Reprodução de mídia Modo de Processamento de Sinal: Padrão
Contagem de Canais: 2
Captura: Nenhum
Contagem de CIS: 2
Contagem de CIG: 1
Configurações de QoS do BAP: alta confiabilidade
Chamada de voz sem microfone no dispositivo de áudio Modo de Processamento de Sinal: Comunicações
Contagem de Canais: 1
Captura: Nenhum
Contagem de CIS: 2
Contagem de CIG: 1
Configurações de QoS bap: baixa latência
Alocação de Canal de Áudio: frontal esquerdo ou frontal direito
Reprodução de videogame Modo de Processamento de Sinal: Padrão
Contagem de Canais: 2
Captura: Nenhum
Contagem de CIS: 2
Contagem de CIG: 1
Configurações de QoS bap: baixa latência
Alocação de canal de áudio: frontal esquerdo e frontal direito
Configuração básica do perfil de áudio 6(ii)

A configuração de áudio a seguir é definida na tabela 4.1 da especificação do BAP Bluetooth

Diagrama ilustrando a configuração básica do perfil de áudio 6 II.

O computador está conectado a um conjunto coordenado de dispositivos de áudio. O conjunto é capaz de processar dois canais de áudio com cada membro processando um único canal.

Exemplos de caso de uso Configurações de áudio do Windows Configurações do controlador Bluetooth
Reprodução de mídia Modo de Processamento de Sinal: Padrão
Contagem de Canais: 2
Captura: Nenhuma
Contagem de CIS: 2
Contagem de CIG: 1
Configurações de QoS do BAP: alta confiabilidade
Chamada de voz sem microfone em nenhum dos dispositivos Modo de Processamento de Sinal: Comunicações
Contagem de Canais: 1
Captura: Nenhum
Contagem de CIS: 2
Contagem de CIG: 1
Configurações de QoS bap: baixa latência
Reprodução de videogame Modo de Processamento de Sinal: Padrão
Contagem de Canais: 2
Captura: Nenhum
Contagem de CIS: 2
Contagem de CIG: 1
Configurações de QoS bap: baixa latência
Configurações bidirecionais

As configurações bidirecionais são usadas quando o perfil bluetooth LE Audio detecta que um aplicativo pretende criar um fluxo de captura e renderização para um dispositivo remoto ou um conjunto de dispositivos. Como os aplicativos controlam a captura e renderizam fluxos separadamente, os drivers de áudio IHV e os controladores Bluetooth permitirão que o áudio flua em uma única direção de um CIS bidirecional depois de provisionado usando os comandos HCI Configure Data Path e LE Setup ISO Data Path.

Configuração básica do perfil de áudio 3

A configuração de áudio a seguir é definida na tabela 4.1 da especificação do BAP Bluetooth

Diagrama ilustrando a configuração básica do perfil de áudio 3.

O computador está conectado a um único dispositivo de áudio com um fluxo mono bidirecional estabelecido em um único CIS.

Caso de Uso Configurações de áudio do Windows Configurações do controlador Bluetooth
Chamada de voz Renderizar:
Modo de Processamento de Sinal: Comunicações
Contagem de Canais: 1
Capturar:
Modo de Processamento de Sinal: Padrão
Contagem de Canais: 1
Contagem de CIS: 1
Contagem de CIG: 1
Configurações de QoS BAP: Baixa Latência
Reprodução de videogame com chat de voz Renderizar:
Modo de Processamento de Sinal: Comunicações
Contagem de Canais: 1
Capturar:
Modo de Processamento de Sinal: Padrão
Contagem de Canais: 1
Contagem de CIS: 1
Contagem de CIG: 1
Configurações de QoS BAP: Baixa Latência
Configuração básica do perfil de áudio 8(i)

A configuração de áudio a seguir é definida na tabela 4.1 da especificação do BAP Bluetooth

Diagrama ilustrando a configuração básica do perfil de áudio 8 I.

O computador está conectado a um único dispositivo de áudio que dá suporte a fluxos de renderização estéreo e fluxos de captura mono. O dispositivo é capaz de processar um canal de áudio em um único CIS para uma direção específica.

Caso de Uso Configurações de áudio do Windows Configurações do controlador Bluetooth
Chamada de voz Renderizar:
Modo de Processamento de Sinal: Comunicações
Contagem de Canais: 1
Capturar:
Modo de Processamento de Sinal: Padrão
Contagem de Canais: 1
Contagem de CIS: 2
Contagem de CIG: 1
Configurações de QoS BAP: Baixa Latência
Reprodução de videogame com chat de voz Renderizar:
Modo de Processamento de Sinal: Comunicações
Contagem de Canais: 2
Capturar:
Modo de Processamento de Sinal: Padrão
Contagem de Canais: 1
Contagem de CIS: 2
Contagem de CIG: 1
Configurações de QoS do BAP: Baixa Latência
Configuração básica do perfil de áudio 8(ii)

A configuração de áudio a seguir é definida na tabela 4.1 da especificação do BAP Bluetooth

Diagrama ilustrando a configuração básica do perfil de áudio 8 II.

O computador está conectado a um conjunto coordenado de dispositivos de áudio. Cada membro do conjunto está recebendo um canal de áudio de renderização. Um único membro de conjunto tem um fluxo de captura estabelecido. O membro definido com o fluxo de captura é o primeiro membro definido que se conecta ao computador que também dá suporte a fluxos de captura.

Caso de Uso Configurações de áudio do Windows Configurações do controlador Bluetooth
Chamada de voz Renderizar:
Modo de Processamento de Sinal: Comunicações
Contagem de Canais: 1
Capturar:
Modo de Processamento de Sinal: Padrão
Contagem de Canais: 1
Contagem de CIS: 2
Contagem de CIG: 1
Configurações de QoS BAP: baixa latência
Reprodução de videogame com chat de voz Renderizar:
Modo de Processamento de Sinal: Comunicações
Contagem de Canais: 2
Capturar:
Modo de Processamento de Sinal: Padrão
Contagem de Canais: 1
Contagem de CIS: 2
Contagem de CIG: 1
Configurações de QoS BAP: Baixa Latência
Configurações somente de captura
Configuração básica do perfil de áudio 2

A configuração de áudio a seguir é definida na tabela 4.1 da especificação do BAP Bluetooth

Diagrama ilustrando a configuração básica do perfil de áudio 2.

O computador está conectado a um único dispositivo de áudio que dá suporte a fluxos de captura mono.

Caso de Uso Configurações de áudio do Windows Configurações do controlador Bluetooth
Chamada de voz sem alto-falante no dispositivo Renderização: Nenhum
Capturar:
Modo de Processamento de Sinal: Padrão
Contagem de Canais: 1
Contagem de CIS: 1
Contagem de CIG: 1
Configurações de QoS BAP: Baixa Latência
Configuração básica do perfil de áudio 9(i)

A configuração de áudio a seguir é definida na tabela 4.1 da especificação do BAP Bluetooth

Diagrama ilustrando a configuração básica do perfil de áudio 9 I.

O computador está conectado a um único dispositivo de áudio que dá suporte ao envio de dados de áudio estéreo. O dispositivo é capaz de codificar um canal de áudio em um único CIS.

Caso de Uso Configurações de áudio do Windows Configurações do controlador Bluetooth
Captura de microfone de vários canais Renderização: Nenhum
Capturar:
Modo de Processamento de Sinal: Padrão
Contagem de Canais: 1
Contagem de CIS: 2
Contagem de CIG: 1
Configurações de QoS BAP: Baixa Latência
Configuração básica do perfil de áudio 9(ii)

O computador está conectado a um único dispositivo de áudio que dá suporte a fluxos de captura mono.

A configuração de áudio a seguir é definida na tabela 4.1 da especificação do BAP Bluetooth

Diagrama mostrando a configuração básica do perfil de áudio 9(ii) com o computador conectado a um único dispositivo de áudio.

O computador está conectado a um conjunto de dispositivos de áudio. Cada membro do conjunto envia um canal de áudio para o computador.

Caso de Uso Configurações de áudio do Windows Configurações do controlador Bluetooth
Captura de microfone de vários canais Renderização: Nenhum
Capturar:
Modo de Processamento de Sinal: Padrão
Contagem de Canais: 1
Contagem de CIS: 2
Contagem de CIG: 1
Configurações de QoS BAP: Baixa Latência

Se o dispositivo remoto ou o conjunto de dispositivos der suporte a áudio bidirecional, as configurações de um fluxo somente de captura serão iguais às configurações bidirecionais. Isso permite transições de cenários de captura somente para cenários bidirecionais sem a necessidade de recriar os fluxos.

Estruturas de dados

Propriedades da interface bluetooth LE Audio definidas pela Microsoft

Propriedades de criação de fluxo de dados

As propriedades a seguir são compartilhadas entre a pilha de driver de áudio específica do fornecedor e o Perfil de Áudio BLUETOOTH LE por meio dos DDIsACXOBJECTBAG para informar as decisões sobre a criação e a configuração do ponto de extremidade de fluxo, conforme mostrado no cenário de Criação de Fluxo.

BluetoothLEAudio_CodecCapabilities

Essa propriedade é definida pelo driver de áudio para indicar suporte aos recursos de streaming de áudio que são suportados tanto pelo driver de áudio quanto pelo DSP de áudio. O valor da propriedade é definido usando o DDI AcxObjectBagAddBlob e o formato do valor é o mesmo que um registro PAC definido na especificação PACS.

O perfil de áudio Bluetooth LE do Windows lê a propriedade para determinar as possíveis configurações de codec e a composição do fluxo a ser usada.

Campo Octeto
Contagem de Capacidades 0
ID do Codec[i] 1-6
Comprimento das capacidades específicas do codec[i] 7
Recursos específicos do Codec 8... n
Comprimento dos metadados (m) n + 1
Metadados n+2... m

Os valores de campo são definidos nas tabelas 3.2 e 3.4 da especificação PACS.

Bluetooth_DatapathID

Essa propriedade é definida pelo driver de áudio para indicar a ID do caminho de dados usada como parâmetro para os comandos HCI_LE_Setup_ISO_Data_Path e HCI_Configure_Data_Path. O valor da propriedade é definido usando a DDI AcxObjectBagAddUI8 .

O perfil Bluetooth LE Audio lê e usa essa propriedade como parâmetro nos comandos HCI_Configure_Data_Path e HCI_LE_Setup_ISO_Data_Path. Este ID é aplicado a todos os fluxos isócronos criados para o ACXSTREAM associado ao conjunto de objetos.

Campo Octeto
ID do caminho de dados 0

Se a propriedade não for definida pelo driver de áudio, o sistema operacional usará o valor 1 como o parâmetro para os comandos HCI.

Bluetooth_DatapathConfiguration

Essa propriedade é definida pelo driver de áudio para fornecer configurações específicas do fornecedor para o controlador Bluetooth por meio do comando HCI_Configure_Data_Path. Ele não deve ser maior que 255 bytes, que é o maior conteúdo que um controlador Bluetooth aceita para um comando HCI. O valor da propriedade é definido usando a DDI AcxObjectBagAddBlob . Essa configuração é aplicada a todas as IDs de caminho de dados definidas pelo driver de áudio.

BluetoothLEAudio_CodecConfiguration

Essa propriedade deve ser definida pelo perfil Bluetooth LE Audio usando o DDI AcxObjectBagAddBlob após a configuração do codec ser feita com um dispositivo de áudio. A estrutura do valor é:

Campo Octeto
Contagem de configurações 0
Formato de codificação[i] 3
ID da empresa[i] 1-2
ID de Codec específica do fornecedor[i] 3-4
Comprimento de configuração específico do Codec[i] 5
Configuração específica do Codec[i] 6... n

Os valores de campo são definidos na tabela 4.3 da Especificação do Serviço de Controle de Fluxo de Áudio Bluetooth.

A pilha de drivers de áudio específica do fornecedor deve ler esta propriedade se o codec LC3 estiver no driver de streaming ACX ou no DSP de áudio.

Interfaces

IDs de associação de modelo de ponto de extremidade de áudio

Usado pela fábrica de circuitos ACX no driver de áudio para identificar quando um circuito ACX para um dispositivo Bluetooth emparelhado é criado.

As seguintes IDs de componente são usadas para criar circuitos de áudio 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);

Interface de suporte do Bluetooth LE Audio

Usado pela pilha do driver de áudio para indicar que está disponível para streaming de Bluetooth LE Audio. Monitoramento no nível do serviço de Áudio Bluetooth do Windows para essa interface e aguarde até que seja publicada antes de habilitar o suporte a áudio LE.

As seguintes IDs de interface são usadas para publicar a interface de suporte do Bluetooth LE Audio:

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

Sequências

Inicialização do driver de áudio

Quando o driver de streaming do ACX IHV é carregado e determina que ele dá suporte ao streaming de áudio Bluetooth LE, ele deve mostrar suporte para a tecnologia criando um objeto ACXFACTORYCIRCUIT e registrando-se para associações de modelo Bluetooth com ACX usando as IDs definidas em IDs de associação de modelo de ponto de extremidade de áudio.

Fluxograma ilustrando a sequência de inicialização do driver de áudio BLUETOOTH LE.

Criação de ponto de extremidade

  1. Quando um dispositivo LE Audio é emparelhado com o sistema, o Perfil de Áudio LE Bluetooth:
    1. Lê as capacidades de áudio publicadas do dispositivo remoto.
    2. Descobre as capacidades suportadas do controlador enviando os comandos HCI_Read_Local_Support_Codecs [v2] e HCI_Read_Local_Supported_Codec_Capabilities.
    3. Cria um ACXCIRCUIT com os formatos com suporte definidos com base nos recursos codec compatíveis com o controlador Bluetooth e o dispositivo de áudio remoto. Se o controlador não oferecer suporte a nenhum codec porque o suporte a codec está no DSP de áudio ou no driver de áudio, os formatos suportados são definidos pelos formatos suportados pelo dispositivo de áudio remoto.
  2. Depois que o ACXCIRCUIT é criado, o ACX solicita à fábrica de circuitos do driver de streaming ACX IHV a criação de um ACXCIRCUIT para processamento de fluxo.
  3. Quando uma solicitação para criar um circuito é recebida, o driver de streaming ACX IHV:
    1. Cria objetos ACXCIRCUIT, ACXPIN, ACXOBJECTBAG e ACXSTREAMBRIDGE .
    2. Se o codec LC3 ou o codec específico do fornecedor estiver hospedado no driver de áudio ou DSP, o driver de streaming ACX IHV definirá a propriedade BluetoothLEAudio_CodecCapabilities no ACXOBJECTBAG.
    3. O driver de streaming do ACX IHV pode definir Bluetooth_DatapathID ou Bluetooth_DatapathConfiguration no ACXOBJECTBAG se ele for conhecido no momento.
  4. Depois que ambos os circuitos são criados, o ACX invoca o retorno de chamada EvtAcxPinConnected no pino de ponte do driver ACX IHV.
  5. Quando o retorno de chamada EvtAcxPinConnected é invocado , o driver de streaming ACX IHV:
    1. Recupera o pino de interconexão do circuito de perfil usando as APIs AcxTarget... para obter os formatos suportados pelo circuito de perfil.
    2. Itera através da lista de ACXDATAFORMATs definidos pelo circuito de perfil. Se o codec de áudio Bluetooth estiver hospedado no DSP de áudio ou driver de áudio, o driver de áudio IHV atualizará seus ACXDATAFORMATcom os formatos compatíveis com o codec e o circuito de perfil. Caso contrário, todos os formatos serão copiados para o pin de host do driver de streaming DO ACX IHV.
    3. Define a lista de formatos atualizada no pino de ponte se um mecanismo de áudio for criado para streaming de descarregamento.
  6. Depois que os formatos são atualizados, o ACX habilita as duas interfaces, criando um ponto de extremidade de áudio.

Fluxograma que ilustra o processo de criação do endpoint Bluetooth LE Audio.

Criação de fluxo

  1. Quando um aplicativo solicita a criação de um fluxo de áudio, o ACX invoca os retornos de chamada EvtCircuitCreateStream registrados para cada circuito, começando com o driver de streaming ACX IHV.
  2. Quando o retorno de chamada EvtCircuitCreateStream é invocado, o driver de streaming do ACX IHV:
    1. Define ou atualiza as propriedades Bluetooth_DatapathId e Bluetooth_DataPathConfiguration no ACXOBJECTBAG anexado ao ACXSTREAMBRIDGE.
    2. Cria um ACXSTREAM com retornos de chamada definidos para transições de estado de fluxo e processamento de fluxo RT
    3. Criará um elemento de motor de áudio na transmissão se o pipeline de áudio der suporte à transmissão de alívio de carga.
    4. Adiciona o ACXSTREAM à sua ponte de streaming. Isso invoca o retorno de chamada EvtCircuitCreateStream do perfil Bluetooth LE Audio.
  3. Quando o retorno de chamada EvtAcxCircuitCreateStream é invocado, o perfil de áudio Bluetooth LE:
    1. Salva localmente as propriedades do ACXOBJECTBAG configuradas pelo driver de streaming ACX da IHV para futuros retornos de chamada de transição de fluxo.
    2. Se o ponto de extremidade de áudio for para transmissão unicast do perfil Bluetooth LE Audio:
      1. Executa a operação Config Codec conforme definido na especificação BAP. Os parâmetros para a operação são derivados do ACXDATAFORMAT especificado no retorno de chamada EvtAcxCircuitCreateStream e dos outros parâmetros de fluxo no ACXOBJECTBAG ou dos recursos de codec oferecidos pelo Controlador Bluetooth.
      2. Define a propriedade BluetoothLEAudio_CodecConfiguration no ACXOBJECTBAG com o valor usado para configurar os dispositivos de áudio remotos.
  4. Se o driver de streaming ACX IHV precisar atualizar sua ID de caminho de dados ou a configuração do caminho de dados com base nos valores da bolsa de objetos definidos pelo perfil, ele poderá invocar as operações de conjunto KSPROPERTY para atualizar o valor armazenado pelo circuito de perfil.
    1. Cria um ACXSTREAM com funções de retorno definidas para transições de estado do fluxo.

Fluxograma mostrando o processo de criação do fluxo de áudio Bluetooth LE.

Transições de estado de fluxo

O ACX decide a ordem do circuito das transições de estado de fluxo com base no fluxo de áudio e se o estado está fazendo a transição para um estado mais ativo ou menos ativo.

  • Para fluxos de renderização que vão de um estado menos ativo para um estado mais ativo, o circuito de perfil recebe o evento primeiro, seguido pelo circuito de streaming.
  • Para fluxos de renderização que vão de um estado mais ativo para um estado menos ativo, o circuito de streaming recebe o evento primeiro, seguido pelo circuito de perfil. 
  • Para fluxos de captura que vão de um estado menos ativo para um estado mais ativo, o circuito de streaming recebe o evento primeiro, seguido pelo circuito de perfil. 
  • Para fluxos capturados que vão de um estado mais ativo para um estado menos ativo, o circuito de perfil começa a receber o evento primeiro, seguido pelo circuito de transmissão.

Preparar transmissão

Quando o retorno de chamada EvtAcxStreamPrepareHardware é invocado, o perfil de áudio Bluetooth LE:

  1. Aloca recursos para uma transmissão unicast por:
    1. Configurando um CIG com o comando HCI_LE_Set_CIG_Parameters.
    2. Enviando a operação QoS de configuração do ASCS para sincronizar as configurações com o dispositivo remoto.

Fluxograma ilustrando a preparação do fluxo de áudio do Bluetooth LE para um perfil de circuito.

Quando seu retorno de chamada EvtAcxStreamPrepareHardware é invocado, o driver de streaming IHV ACX aloca os recursos de streaming necessários e inicializa o pipeline de áudio para colocá-lo no estado adquirido.

Fluxograma que ilustra a preparação do fluxo de áudio Bluetooth LE para um circuito de streaming.

Iniciar fluxo

Quando seu retorno de chamada EvtAcxStreamRun é invocado, o perfil de áudio BLUETOOTH LE:

  1. Aplica as configurações de caminho de dados definidas pelo driver de streaming ACX no procedimento de criação do fluxo usando o comando HCI_Configure_Data_Path.
  2. Inicia o procedimento de início da transmissão:
    1. Executando o procedimento para habilitar o fluxo unicast do BAP.
      1. Enviando a operação Habilitar para os pontos de extremidade remotos.
      2. Criar CISes caso eles ainda não estejam criados, utilizando o comando HCI_LE_Create_CIS.
  3. Se o caminho de dados ainda não estiver configurado, o perfil de áudio Bluetooth LE:
    1. Estabelece os caminhos de dados ISO usando o comando HCI_LE_Setup_ISO_Data_Path
      1. Se o driver de streaming ACX IHV definir a propriedade BluetoothLEAudio_CodecCapabilities , o valor do campo Codec_ID em HCI_LE_Setup_ISO_Data_Path deverá ser definido como transparente (0x3), conforme definido nos Números Atribuídos por Bluetooth. Caso contrário, o valor será o mesmo que o ID do Codec usado na operação de configuração do codec na criação do stream.
  4. Se o fluxo de áudio for um fluxo unicast de captura, o perfil Bluetooth LE Audio executará a operação de início do receptor BAP quando pronto.

Fluxograma mostrando o processo de início do fluxo de áudio Bluetooth LE para um circuito de perfil de áudio.

Quando o retorno de chamada EvtAcxStreamRun é invocado, o driver de streaming ACX do IHV começa a processar dados de áudio provenientes do sistema de áudio do Windows (renderização) ou capturados pelo controlador Bluetooth (captura).

Fluxograma ilustrando o processo de início do fluxo de áudio Bluetooth LE para um circuito de streaming.

Pausar fluxo

Quando a sua função de retorno de chamada EvtAcxStreamPause é invocada, o perfil de Áudio Bluetooth LE:

  1. Executa o procedimento de desabilitação do fluxo unicast do BAP.
  2. Remove o caminho de dados ISO usando o comando HCI_LE_Remove_ISO_Data_Path.
  3. Executa o procedimento de prontidão para parar o receptor ASCS se o fluxo de áudio for um fluxo unicast de captura.

Fluxograma ilustrando o processo de pausa do fluxo de áudio Bluetooth LE para um circuito de perfil.

Quando o retorno de chamada EvtAcxStreamPause é invocado, o driver de streaming ACX do IHV pausa seu pipeline de processamento de áudio.

Fluxograma mostrando o processo de pausa do fluxo de áudio Bluetooth LE para um circuito de streaming.

Fluxo de lançamentos

Quando seu retorno de chamada EvtAcxStreamReleaseHardware é invocado, o perfil de áudio Bluetooth LE executa o procedimento de liberação do fluxo unicast BAP por:

  1. Enviando a operação de liberação do ASCS para o dispositivo remoto de áudio Bluetooth LE
  2. Desconectar o CIS se ele não for usado por outro fluxo ativo.
  3. Removendo o CIG se todas as CISes estiverem desconectadas.

Fluxograma ilustrando o processo de liberação de fluxo de áudio DE LE Bluetooth para um circuito de perfil.

Quando seu retorno de chamada EvtAcxStreamReleaseHardware é invocado, o driver de streaming ACX do IHV libera seus recursos de pipeline de áudio.

Fluxograma que descreve o processo de liberação do fluxo de áudio Bluetooth LE para um circuito de transmissão.

Desconexão de endpoint

O perfil do Windows Bluetooth LE Audio atualiza o estado de conexão de um ponto de extremidade se o dispositivo unicast remoto não tiver uma conexão LE-ACL com o computador ou estiver relatando por meio de seus contextos de áudio disponíveis para PACS que ele não está disponível para streaming. Quando o ponto de extremidade é desconectado, o serviço de áudio do Windows anula qualquer fluxo de áudio ativo para o ponto de extremidade. Isso resulta na pausa do fluxo e nas sequências de liberação ocorrerem.

Remoção de ponto de extremidade

Um endpoint Bluetooth LE Audio é removido do sistema quando o circuito de perfil ou o circuito de streaming é destruído. O circuito de perfil pode ser removido quando o emparelhamento do dispositivo unicast remoto é eliminado no Windows ou quando o rádio Bluetooth está desativado.

  1. Quando o perfil de áudio LE Bluetooth do Windows remove seu circuito, o ACX desabilita suas interfaces de terminal para sinalizar ao serviço de áudio do Windows que o terminal deve ser removido.
  2. Quando as interfaces são desabilitadas, o serviço de áudio do Windows invalida quaisquer fluxos ativos para o endpoint de áudio Bluetooth LE. Essa operação resulta na pausa e na liberação dos retornos de chamada invocados no circuito de streaming.
  3. Para concluir a remoção do ponto de extremidade, o ACX invalida o circuito do driver de streaming ACX do IHV, o que resulta na invocação pelo WDF do retorno de chamada de limpeza do circuito.
  4. Quando o callback de limpeza é chamado, o driver de streaming IHV ACX libera o seu circuito.

Fluxograma mostrando o processo de remoção do endpoint Bluetooth LE Audio.

Controle de volume e função silenciosa

O circuito de streaming ACX do IHV deve incluir elementos de volume e mudo apenas se o driver de streaming exigir um motor de áudio. Ao usar um mecanismo de áudio, os sinalizadores de configuração devem ser definidos como tal:

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.

Isso é necessário para permitir que os pontos de extremidade Bluetooth LE Audio usem os perfis de controle de volume e microfone definidos pela Bluetooth SIG para alterações de volume e silencioso para pontos de extremidade de áudio unicast.

Se o dispositivo remoto Bluetooth LE Audio não oferecer suporte aos serviços de controle de volume ou microfone, ou se o ponto de extremidade for criado para áudio de transmissão, o volume e os elementos de silenciamento no mecanismo de áudio servirão como alternativa para lidar com as solicitações de alteração do sistema de áudio. O sistema de áudio do Windows lida com alterações em volume e mudo. Se não houver nenhum motor de áudio e qualquer dispositivo remoto não oferecer suporte ao volume ou aos serviços de microfone, ou o ponto de extremidade de áudio for para transmissão de áudio.

Bluetooth LE e coexistência de áudio clássico

O Windows deve garantir que apenas áudio clássico ou áudio LE esteja ativo para um dispositivo de áudio Bluetooth emparelhado que dê suporte a ambas as tecnologias. Se o áudio LE estiver ativo, os DDIs de sideband para A2DP e HFP para o dispositivo remoto serão desabilitados e o circuito de perfil será criado para o ponto de extremidade de áudio LE. Se o áudio clássico estiver ativo, os DDIs de sideband para A2DP e HFP para o dispositivo remoto serão habilitados e o circuito de perfil não será criado para o ponto de extremidade de áudio LE.

Gerenciamento de energia

O Bluetooth LE Audio não tem nenhum requisito de gerenciamento de energia ou fluxos fora do que já está definido pelo WDF.