Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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.
- Sideband Bluetooth LE Áudio streaming sem descarregamento de áudio
- Sideband Bluetooth LE Áudio streaming com descarregamento de áudio
- 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.
O diagrama a seguir mostra uma arquitetura de Bluetooth LE Audio de banda lateral, com um codec LC3 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.
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.
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.
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
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
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
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
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
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
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
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
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
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
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.
Criação de ponto de extremidade
- Quando um dispositivo LE Audio é emparelhado com o sistema, o Perfil de Áudio LE Bluetooth:
- Lê as capacidades de áudio publicadas do dispositivo remoto.
- Descobre as capacidades suportadas do controlador enviando os comandos HCI_Read_Local_Support_Codecs [v2] e HCI_Read_Local_Supported_Codec_Capabilities.
- 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.
- 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.
- Quando uma solicitação para criar um circuito é recebida, o driver de streaming ACX IHV:
- Cria objetos ACXCIRCUIT, ACXPIN, ACXOBJECTBAG e ACXSTREAMBRIDGE .
- 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.
- O driver de streaming do ACX IHV pode definir Bluetooth_DatapathID ou Bluetooth_DatapathConfiguration no ACXOBJECTBAG se ele for conhecido no momento.
- Depois que ambos os circuitos são criados, o ACX invoca o retorno de chamada EvtAcxPinConnected no pino de ponte do driver ACX IHV.
- Quando o retorno de chamada EvtAcxPinConnected é invocado , o driver de streaming ACX IHV:
- Recupera o pino de interconexão do circuito de perfil usando as APIs AcxTarget... para obter os formatos suportados pelo circuito de perfil.
- 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.
- Define a lista de formatos atualizada no pino de ponte se um mecanismo de áudio for criado para streaming de descarregamento.
- Depois que os formatos são atualizados, o ACX habilita as duas interfaces, criando um ponto de extremidade de áudio.
Criação de fluxo
- 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.
- Quando o retorno de chamada EvtCircuitCreateStream é invocado, o driver de streaming do ACX IHV:
- Define ou atualiza as propriedades Bluetooth_DatapathId e Bluetooth_DataPathConfiguration no ACXOBJECTBAG anexado ao ACXSTREAMBRIDGE.
- Cria um ACXSTREAM com retornos de chamada definidos para transições de estado de fluxo e processamento de fluxo RT
- Criará um elemento de motor de áudio na transmissão se o pipeline de áudio der suporte à transmissão de alívio de carga.
- Adiciona o ACXSTREAM à sua ponte de streaming. Isso invoca o retorno de chamada EvtCircuitCreateStream do perfil Bluetooth LE Audio.
- Quando o retorno de chamada EvtAcxCircuitCreateStream é invocado, o perfil de áudio Bluetooth LE:
- Salva localmente as propriedades do ACXOBJECTBAG configuradas pelo driver de streaming ACX da IHV para futuros retornos de chamada de transição de fluxo.
- Se o ponto de extremidade de áudio for para transmissão unicast do perfil Bluetooth LE Audio:
- 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.
- Define a propriedade BluetoothLEAudio_CodecConfiguration no ACXOBJECTBAG com o valor usado para configurar os dispositivos de áudio remotos.
- 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.
- Cria um ACXSTREAM com funções de retorno definidas para transições de estado do fluxo.
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:
- Aloca recursos para uma transmissão unicast por:
- Configurando um CIG com o comando HCI_LE_Set_CIG_Parameters.
- Enviando a operação QoS de configuração do ASCS para sincronizar as configurações com o dispositivo remoto.
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.
Iniciar fluxo
Quando seu retorno de chamada EvtAcxStreamRun é invocado, o perfil de áudio BLUETOOTH LE:
- 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.
- Inicia o procedimento de início da transmissão:
- Executando o procedimento para habilitar o fluxo unicast do BAP.
- Enviando a operação Habilitar para os pontos de extremidade remotos.
- Criar CISes caso eles ainda não estejam criados, utilizando o comando HCI_LE_Create_CIS.
- Executando o procedimento para habilitar o fluxo unicast do BAP.
- Se o caminho de dados ainda não estiver configurado, o perfil de áudio Bluetooth LE:
- Estabelece os caminhos de dados ISO usando o comando HCI_LE_Setup_ISO_Data_Path
- 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.
- Estabelece os caminhos de dados ISO usando o comando HCI_LE_Setup_ISO_Data_Path
- 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.
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).
Pausar fluxo
Quando a sua função de retorno de chamada EvtAcxStreamPause é invocada, o perfil de Áudio Bluetooth LE:
- Executa o procedimento de desabilitação do fluxo unicast do BAP.
- Remove o caminho de dados ISO usando o comando HCI_LE_Remove_ISO_Data_Path.
- Executa o procedimento de prontidão para parar o receptor ASCS se o fluxo de áudio for um fluxo unicast de captura.
Quando o retorno de chamada EvtAcxStreamPause é invocado, o driver de streaming ACX do IHV pausa seu pipeline de processamento de áudio.
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:
- Enviando a operação de liberação do ASCS para o dispositivo remoto de áudio Bluetooth LE
- Desconectar o CIS se ele não for usado por outro fluxo ativo.
- Removendo o CIG se todas as CISes estiverem desconectadas.
Quando seu retorno de chamada EvtAcxStreamReleaseHardware é invocado, o driver de streaming ACX do IHV libera seus recursos de pipeline de áudio.
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.
- 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.
- 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.
- 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.
- Quando o callback de limpeza é chamado, o driver de streaming IHV ACX libera o seu circuito.
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.
Tópicos relacionados
- Extensões de classe de áudio ACX
- Especificação do Perfil de Áudio Básico do Bluetooth
- Especificação do Bluetooth Core 5.3
- Especificação do Serviço de Recursos de Áudio Publicados por Bluetooth
- Especificação do Serviço de Controle de Fluxo de Áudio Bluetooth
- Números Atribuídos por Bluetooth
- Diretrizes de desvio para Bluetooth HFP em drivers de áudio
- Transmissão de áudio com desvio HFP do Bluetooth