Áudio Bluetooth de baixa energia (LE)
Este artigo fornece uma visão geral do Bluetooth LE Audio introduzido no Windows 11 versão 22H2 (KB5026446).
Introdução
O áudio Bluetooth de baixa energia permite transmitir áudio unicast ou broadcast para dispositivos Bluetooth LE através de um transporte isócrono. A partir da versão 5.3 da especificação central Bluetooth, não há nenhuma HCI (Host Controller Interface) padrão definida para plataformas de host para enviar e receber dados isócronos 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 do software VSAP usa 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 referencia termos definidos por extensões de classe de áudio do Windows.
Termo | Definição |
---|---|
Áudio LE | Abreviação de Bluetooth LE Audio |
Áudio clássico | Streaming de áudio Bluetooth que usa o perfil viva-voz (HFP) e o perfil avançado de distribuição de áudio (A2DP) |
Dispositivo de áudio | Um único dispositivo de áudio Bluetooth LE remoto ou um conjunto de dispositivos de áudio Bluetooth LE que, juntos, compõem um único ponto de extremidade de áudio da perspectiva do Windows. |
BAP | O Perfil de Áudio Básico define como os dispositivos podem distribuir e consumir áudio usando comunicações Bluetooth Low Energy (LE). |
TMAP | O perfil de áudio de telefonia e mídia especifica configurações interoperáveis dos perfis e serviços 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. |
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. |
CIS | O transporte Connected Isochronous Streams é usado para enviar e receber dados de áudio unicast entre dispositivos Bluetooth LE. |
BIS | O transporte de fluxo isócrono de transmissão é usado para transferências de dados de áudio sem conexão. |
ACX | Abreviação de extensões de classe de áudio, que é o modelo de driver exigido por todos os drivers de áudio para dar suporte ao Bluetooth LE Audio no Windows. |
Circuitos de streaming | Um ou mais objetos ACXCIRCUIT criados pela Pilha de Driver de Áudio Específica do Fornecedor para seu caminho de streaming. |
Circuito de perfil | Um objeto ACXCIRCUIT criado pela implementação do perfil de áudio Bluetooth LE 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 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
O Bluetooth LE Audio VSAP requer que os drivers de áudio usem a estrutura 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 multipilha sem exigir uma DDI dedicada entre os drivers.
- 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 da arquitetura VSAP.
Estrutura do Windows ACX
Esse componente permite o suporte para um ponto de extremidade de áudio de várias pilhas. Para Bluetooth LE Audio, 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 Windows Bluetooth LE Audio.
Pilha de driver de áudio específica do fornecedor
Esse componente específico do fornecedor é responsável por enviar e receber dados de áudio Bluetooth LE de e para um controlador Bluetooth por meio de uma interface de áudio definida pelo fornecedor. 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 podem ser incluídos se forem partes necessárias do ponto de extremidade de áudio ACX de vários circuitos. Esse componente também é conhecido como o driver de streaming IHV ACX neste documento.
Perfil de áudio Bluetooth LE do Windows
Este 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 ACXCIRCUIT principal para cada dispositivo Bluetooth LE Audio ou conjunto de dispositivos emparelhados com o Windows, relatando formatos de áudio relatados pelo dispositivo remoto e controlador Bluetooth e gerencia o estado de canais e grupos isócronos.
Pilha principal Bluetooth do Windows
Esse componente fornece uma interface para permitir que o Perfil de Áudio Bluetooth LE do Windows consulte recursos de codec com suporte do controlador Bluetooth local e gerencie o estado de canais e grupos isócronos.
Codec LC3
Este subcomponente é responsável pela tradução entre o áudio LC3 compactado e o áudio PCM. Ele deve dar suporte a recursos de codificação e decodificação e pode ser implementado em software como parte da pilha de driver de áudio (VSAP) específica do fornecedor ou em hardware como parte do DSP de áudio ou controlador Bluetooth. O diagrama menciona LC3 pelo nome, pois é o codec padrão suportado pelo Bluetooth SIG. No entanto, codecs futuros e codecs específicos do fornecedor suportados pelo Windows também podem ser incorporados à arquitetura de maneira semelhante.
Variantes de arquitetura
A arquitetura VSAP de áudio Bluetooth LE suporta diferentes variantes para streaming.
- Transmissão de áudio Bluetooth LE de banda lateral sem descarregamento de áudio
- Transmissão de áudio Bluetooth LE de banda lateral com descarregamento de áudio
- Streaming de áudio Bluetooth LE em banda específica do fornecedor
Nos diagramas a seguir, os componentes sombreados são fornecidos pelo IHV e os componentes não sombreados são fornecidos pelo sistema operacional.
Arquitetura de áudio Bluetooth LE de banda lateral sem descarregamento de áudio
Uma arquitetura de banda lateral usa uma interface de áudio específica do fornecedor para permitir que a pilha de driver 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 banda lateral em que o codec LC3 está hospedado no controlador Bluetooth. Também é válido ter o codec LC3 hospedado como parte da Pilha de Driver de Áudio Específica do Fornecedor para codificação e decodificação de 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 áudio Bluetooth LE de banda lateral com um codec LC3 na pilha de driver de áudio.
Arquitetura de áudio Bluetooth LE de banda lateral com descarregamento de áudio
Uma arquitetura de banda lateral com descarregamento de áudio inclui um componente de hardware DSP de áudio para fornecer uma solução de streaming de áudio Bluetooth LE com benefícios de economia de energia. Os diagramas a seguir demonstram uma arquitetura possível com o codec LC3 no controlador Bluetooth e o codec no DSP de áudio.
O diagrama a seguir mostra um áudio Bluetooth LE de banda lateral com arquitetura de descarregamento de áudio com um codec LC3 no controlador Bluetooth.
O diagrama a seguir mostra um áudio Bluetooth LE de banda lateral com arquitetura de descarregamento de áudio com um codec LC3 no DSP de áudio.
Arquitetura de áudio Bluetooth LE em banda específica do fornecedor
A arquitetura de banda VSAP permite que um pipeline personalizado envie e receba dados de áudio Bluetooth LE da pilha de driver de áudio específica do fornecedor para a HCI do controlador Bluetooth. Essa arquitetura inclui um novo componente, o "Componente de Mesclagem ISO do IHV". Este componente é responsável por gerenciar o controle de fluxo para os dados ISO. Ele também deve compartilhar o controle de fluxo de comando HCI com a Pilha de Núcleos Bluetooth do Windows se precisar enviar comandos HCI.
O diagrama a seguir mostra uma arquitetura de áudio Bluetooth LE em banda específica do fornecedor.
Projeto detalhado
Requisitos de formato de áudio
Durações de quadros 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. Windows requer que os codecs fornecidos por IHVs ofereçam suporte a ambas as durações de quadro para garantir a interoperabilidade com dispositivos acessórios de áudio Bluetooth LE e a coexistência de qualidade com outros dispositivos Bluetooth LE conectados ao sistema.
Definições do modo de processamento de sinal
O Bluetooth LE Audio suporta uma ampla variedade de formatos de streaming para oferecer suporte a diferentes cenários de usuário. As especificações BAP e TMAP definem formatos obrigatórios com suporte para certificaçã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 suporta o modo de processamento de sinal bruto, portanto, os drivers de áudio não devem anunciar nenhum formato compatível com esse modo.
Modos de processamento de sinal de áudio de fluxo de renderizaçã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 do mais preferido para o menos preferido.
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 | Intensidade de bits | Duração do quadro | Taxa de dados de áudio | ID de configuração do 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 (fone de ouvido único ou aparelho auditivo)
Modo de processamento de sinal: Padrão
Frequência de amostragem | Contagem de canais | Intensidade de bits | Duração do quadro | Taxa de dados de áudio | ID de configuração do 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 |
Renderize gravador de voz, chamadas VOIP ou áudio de videogame com bate-papo por voz
Modo de processamento de sinal: Comunicações
Frequência de amostragem | Contagem de canais | Intensidade de bits | Duração do quadro | Taxa de dados de áudio | ID de configuração do 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 de fluxo
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 do mais preferido para o menos preferido.
Capture gravador de voz, chamadas VOIP ou áudio de videogame com bate-papo por voz
Modo de processamento de sinal: Padrão
Frequência de amostragem | Contagem de canais | Intensidade de bits | Duração do quadro | Taxa de dados de áudio | ID de configuração do 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 de renderização
Configuração básica do perfil de áudio 1
A seguinte configuração de áudio é definida na tabela 4.1 da especificação Bluetooth BAP
O PC está conectado a um único dispositivo de áudio que suporta fluxos mono. O dispositivo único pode ser um dispositivo autônomo ou um único membro conectado de um conjunto coordenado.
Exemplos de casos 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 CIS: 1 Contagem CIG: 1 Configurações de QoS 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 CIS: 1 Contagem CIG: 1 Configurações de QoS do BAP: Baixa latência |
Reprodução de videogame | Renderizar: Modo de processamento de sinal: Padrão Contagem de canais: 1 Captura: Nenhum |
Contagem CIS: 1 Contagem CIG: 1 Configurações de QoS do BAP: Baixa latência |
Configuração básica do perfil de áudio 4
A seguinte configuração de áudio é definida na tabela 4.1 da especificação Bluetooth BAP
O PC está conectado a um único dispositivo de áudio que suporta fluxos estéreo. O dispositivo de áudio é capaz de processar dois canais de áudio em um único CIS.
Exemplos de casos de uso | Configurações de áudio do Windows | Configurações do controlador Bluetooth |
---|---|---|
Reprodução de mídia | Renderização: Modo de processamento de sinal: Padrão Contagem de canais: 2 Captura: Nenhum |
Contagem CIS: 1 Contagem 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 CIS: 1 Contagem CIG: 1 Configurações de QoS do BAP: Baixa latência Alocação de canal de áudio: frente esquerda e frente direita |
Configuração básica do perfil de áudio 6(i)
A seguinte configuração de áudio é definida na tabela 4.1 da especificação Bluetooth BAP
O PC está conectado a um único dispositivo de áudio que suporta fluxos estéreo. O dispositivo de áudio só é capaz de processar um canal de áudio em cada um dos dois CISs
Exemplos de casos 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 CIS: 2 Contagem CIG: 1 Configurações de QoS 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 CIS: 2 Contagem CIG: 1 Configurações de QoS do 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 CIS: 2 Contagem CIG: 1 Configurações de QoS do BAP: Baixa latência Alocação de canal de áudio: frente esquerda e frente direita |
Configuração básica do perfil de áudio 6(ii)
A seguinte configuração de áudio é definida na tabela 4.1 da especificação Bluetooth BAP
O PC está conectado a um conjunto coordenado de dispositivos de áudio. O aparelho é capaz de processar dois canais de áudio com cada membro processando um único canal.
Exemplos de casos 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 CIS: 2 Contagem CIG: 1 Configurações de QoS 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 CIS: 2 Contagem CIG: 1 Configurações de QoS do BAP: Baixa latência |
Reprodução de videogame | Modo de processamento de sinal: Padrão Contagem de canais: 2 Captura: Nenhum |
Contagem CIS: 2 Contagem CIG: 1 Configurações de QoS do BAP: Baixa latência |
Configurações bidirecionais
As configurações bidirecionais são usadas quando o perfil de áudio Bluetooth LE detecta que um aplicativo pretende criar um fluxo de captura e renderização para um dispositivo remoto ou conjunto de dispositivos. Como os aplicativos controlam a captura e a renderização de fluxos separadamente, os drivers de áudio IHV e os controladores Bluetooth devem permitir que o áudio flua em uma única direção de um CIS bidirecional depois que ele é provisionado usando os comandos HCI Configurar Caminho de Dados e Caminho de Dados ISO de Configuração LE.
Configuração básica do perfil de áudio 3
A seguinte configuração de áudio é definida na tabela 4.1 da especificação Bluetooth BAP
O PC 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 Captura: Modo de processamento de sinal: Padrão Contagem de canais: 1 |
Contagem CIS: 1 Contagem CIG: 1 Configurações de QoS do BAP: Baixa latência |
Reprodução de videogame com bate-papo por voz | Renderizar: Modo de processamento de sinal: Comunicações Contagem de canais: 1 Captura: Modo de processamento de sinal: Padrão Contagem de canais: 1 |
Contagem CIS: 1 Contagem CIG: 1 Configurações de QoS do BAP: Baixa latência |
Configuração básica do perfil de áudio 8(i)
A seguinte configuração de áudio é definida na tabela 4.1 da especificação Bluetooth BAP
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 determinada direção.
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 Captura: Modo de processamento de sinal: Padrão Contagem de canais: 1 |
Contagem CIS: 2 Contagem CIG: 1 Configurações de QoS do BAP: Baixa latência |
Reprodução de videogame com bate-papo por voz | Renderizar: Modo de processamento de sinal: Comunicações Contagem de canais: 2 Captura: Modo de processamento de sinal: Padrão Contagem de canais: 1 |
Contagem CIS: 2 Contagem CIG: 1 Configurações de QoS do BAP: Baixa latência |
Configuração básica do perfil de áudio 8(ii)
A seguinte configuração de áudio é definida na tabela 4.1 da especificação Bluetooth BAP
O PC 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 do conjunto tem um fluxo de captura estabelecido. O membro do conjunto com o fluxo de captura é o primeiro membro do conjunto 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 Captura: Modo de processamento de sinal: Padrão Contagem de canais: 1 |
Contagem CIS: 2 Contagem CIG: 1 Configurações de QoS do BAP: Baixa latência |
Reprodução de videogame com bate-papo por voz | Renderizar: Modo de processamento de sinal: Comunicações Contagem de canais: 2 Captura: Modo de processamento de sinal: Padrão Contagem de canais: 1 |
Contagem CIS: 2 Contagem CIG: 1 Configurações de QoS do BAP: Baixa latência |
Configurações somente de captura
Configuração básica do perfil de áudio 2
A seguinte configuração de áudio é definida na tabela 4.1 da especificação Bluetooth BAP
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 Captura: Modo de processamento de sinal: Padrão Contagem de canais: 1 |
Contagem CIS: 1 Contagem CIG: 1 Configurações de QoS do BAP: Baixa latência |
Configuração básica do perfil de áudio 9 (i)
A seguinte configuração de áudio é definida na tabela 4.1 da especificação Bluetooth BAP
O PC está conectado a um único dispositivo de áudio que suporta o 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 multicanal | Renderização: Nenhum Captura: Modo de processamento de sinal: Padrão Contagem de canais: 1 |
Contagem CIS: 2 Contagem CIG: 1 Configurações de QoS do 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 seguinte configuração de áudio é definida na tabela 4.1 da especificação Bluetooth BAP
O PC está conectado a um conjunto de dispositivos de áudio. Cada membro do conjunto envia um canal de áudio para o PC.
Caso de uso | Configurações de áudio do Windows | Configurações do controlador Bluetooth |
---|---|---|
Captura de microfone multicanal | Renderização: Nenhum Captura: Modo de processamento de sinal: Padrão Contagem de canais: 1 |
Contagem CIS: 2 Contagem CIG: 1 Configurações de QoS do BAP: Baixa latência |
Se o dispositivo remoto ou o conjunto de dispositivos der suporte a áudio bidirecional, as configurações para um fluxo somente de captura serão as mesmas que as configurações bidirecionais. Isso permite transições de cenários somente captura para cenários bidirecionais sem a necessidade de recriar os fluxos.
Estruturas de dados
Propriedades da interface de áudio Bluetooth LE definidas pela Microsoft
Propriedades de criação de fluxo
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 DDIs ACXOBJECTBAG 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 para recursos de streaming de áudio com suporte no driver de áudio ou DSP de áudio. O valor da propriedade é definido usando o DDI AcxObjectBagAddBlob e o formato do valor é o mesmo que um registro PAC, conforme 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 de fluxo a serem usadas.
Campo | Octeto |
---|---|
Contagem de recursos | 0 |
ID do codec[i] | 1-6 |
Comprimento dos recursos específicos 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 de áudio Bluetooth LE lê e usa essa propriedade como um parâmetro em comandos HCI_Configure_Data_Path e HCI_LE_Setup_ISO_Data_Path. Essa ID é aplicada a todos os fluxos isócronos criados para o ACXSTREAM associado ao recipiente 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 é a maior carga útil que um controlador Bluetooth aceita para um comando HCI. O valor da propriedade é definido usando a DDI AcxObjectBagAddBlob. Essa configuração é aplicada a tudo o que a ID do caminho de dados define pelo driver de áudio.
BluetoothLEAudio_CodecConfiguration
Essa propriedade deve ser definida pelo perfil de áudio Bluetooth LE usando o DDI AcxObjectBagAddBlob depois que a configuração do codec for configurada com um dispositivo de áudio. A estrutura do valor é:
Campo | Octeto |
---|---|
Contagem de configuração | 0 |
Formato de codificação[i] | 3 |
ID da empresa[i] | 1-2 |
ID de codec específico 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 driver de áudio específica do fornecedor deve ler essa 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 do driver de áudio para saber quando um circuito ACX para um dispositivo Bluetooth emparelhado é criado.
Os seguintes IDs de componentes são usados 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 de áudio Bluetooth LE
Usado pela pilha de driver de áudio para indicar que ele está disponível para streaming de áudio Bluetooth LE. O nível de serviço de áudio Bluetooth do Windows observe essa interface e aguarde até que ela seja publicada antes de habilitar o suporte ao Bluetooth LE Audio.
As seguintes IDs de interface são usadas para publicar a interface de suporte 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 IHV ACX é 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 Bluetooth LE Audio Profile:
- Lê os recursos de áudio publicados do dispositivo remoto.
- Descobre os recursos com suporte do controlador enviando os comandos HCI_Read_Local_Support_Codecs [v2] e HCI_Read_Local_Supported_Codec_Capabilities.
- Cria um ACXCIRCUIT com os formatos suportados definidos com base nos recursos de codec suportados pelo controlador Bluetooth e pelo dispositivo de áudio remoto. Se o controlador não der suporte a nenhum codec porque o suporte a codecs está no DSP de áudio ou no driver de áudio, os formatos com suporte serão definidos como os formatos com suporte no dispositivo de áudio remoto.
- Depois que o ACXCIRCUIT é criado, o ACX solicita que a fábrica de circuitos ACX do driver de streaming IHV ACX crie um ACXCIRCUIT para processamento de fluxo.
- Quando uma solicitação para criar um circuito é recebida, o driver de streaming IHV ACX:
- Cria objetos ACXCIRCUIT, ACXPIN, ACXOBJECTBAG e ACXSTREAMBRIDGE .
- Se o LC3 ou o codec específico do fornecedor estiver hospedado no driver de áudio ou DSP, o driver de streaming IHV ACX definirá a propriedade BluetoothLEAudio_CodecCapabilities no ACXOBJECTBAG.
- O driver de streaming IHV ACX 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 IHV ACX.
- Quando o retorno de chamada EvtAcxPinConnected é invocado, o driver de streaming IHV ACX:
- Recupera o pino da ponte do circuito de perfil com AcxTarget... APIs para recuperar os formatos suportados pelo circuito de perfil.
- Itera por meio da lista de ACXDATAFORMATs definidos pelo circuito de perfil. Se o codec de áudio Bluetooth estiver hospedado no driver de áudio ou no DSP de áudio, o driver de áudio IHV atualizará seus ACXDATAFORMATs com os formatos compatíveis com o codec e o circuito de perfil. Caso contrário, todos os formatos serão copiados para o pino de host do driver de streaming IHV ACX.
- Define a lista de formatos atualizada no pino da ponte se um mecanismo de áudio for criado para streaming de descarregamento.
- Depois que os formatos são atualizados, o ACX habilita ambas as interfaces e um ponto de extremidade de áudio é criado.
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 IHV ACX.
- Quando seu retorno de chamada EvtCircuitCreateStream é invocado, o driver de streaming IHV ACX:
- 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
- Cria um elemento de mecanismo de áudio no fluxo se o pipeline de áudio der suporte ao streaming de descarregamento.
- Adiciona o ACXSTREAM à sua ponte de fluxo. Isso invoca o retorno de chamada EvtCircuitCreateStream do perfil de áudio Bluetooth LE.
- Quando seu retorno de chamada EvtAcxCircuitCreateStream é invocado, o perfil de áudio Bluetooth LE:
- Salva as propriedades localmente do ACXOBJECTBAG definido pelo driver de streaming IHV ACX para retornos de chamada de transição de fluxo futuros.
- Se o ponto de extremidade de áudio for para streaming unicast, o perfil de áudio Bluetooth LE:
- Executa a operação do codec de configuração 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 compatíveis com o 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 IHV ACX precisar atualizar sua ID de caminho de dados ou configuração de caminho de dados com base nos valores do recipiente 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 retornos de chamada definidos para transições de estado de fluxo.
Transições de estado de fluxo
O ACX decide a ordem do circuito das transições de estado do fluxo com base no fluxo de áudio e se o estado está em transição para um estado mais ativo ou menos ativo.
- Para fluxos de renderização que passam 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 passam 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 passam 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 de captura que passam de um estado mais ativo para um estado menos ativo, o circuito de perfil receberá o evento primeiro, seguido pelo circuito de streaming.
Preparar fluxo
Quando seu retorno de chamada EvtAcxStreamPrepareHardware é invocado, o perfil de áudio Bluetooth LE:
- Aloca recursos para um fluxo unicast:
- Configurando um CIG com o comando HCI_LE_Set_CIG_Parameters.
- Enviando a operação de 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 estar no estado adquirido.
Iniciar transmissão
Quando seu retorno de chamada EvtAcxStreamRun é invocado, o perfil de áudio Bluetooth LE:
- Aplica todas as definições de configuração de caminho de dados definidas pelo driver de streaming ACX no procedimento de criação de fluxo usando o comando HCI_Configure_Data_Path.
- Inicia o procedimento de início do fluxo:
- Executando o procedimento de ativação do fluxo unicast BAP para um fluxo unicast:
- Enviando a operação Enable para os pontos de extremidade remotos.
- Criando CISs se eles ainda não tiverem sido criados usando o comando HCI_LE_Create_CIS.
- Executando o procedimento de ativação do fluxo unicast BAP para um fluxo unicast:
- 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 IHV ACX 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 do Bluetooth. Caso contrário, o valor deve ser o mesmo que a ID do codec usada na operação do codec de configuração no procedimento de criação do fluxo.
- Estabelece os caminhos de dados ISO usando o comando HCI_LE_Setup_ISO_Data_Path
- Se o fluxo de áudio for um fluxo de captura unicast, o perfil de áudio Bluetooth LE executará a operação pronta para iniciar o receptor BAP.
Quando seu retorno de chamada EvtAcxStreamRun é invocado, o driver de streaming IHV ACX começa a processar dados de áudio de entrada do sistema de áudio Windows (renderização) ou do controlador Bluetooth (captura).
Pausar fluxo
Quando o retorno de chamada EvtAcxStreamPause é invocado, o perfil de áudio Bluetooth LE:
- Executa o procedimento de desativação do fluxo unicast BAP.
- Remove o caminho de dados ISO usando o comando HCI_LE_Remove_ISO_Data_Path.
- Executa o procedimento de parada de receptor ASCS pronto se o fluxo de áudio for um fluxo de captura unicast.
Quando seu retorno de chamada EvtAcxStreamPause é invocado, o driver de streaming IHV ACX pausa seu pipeline de processamento de áudio.
Fluxo de lançamento
Quando seu retorno de chamada EvtAcxStreamReleaseHardware é invocado, o Perfil de Áudio Bluetooth LE executa o procedimento de liberação de fluxo unicast BAP por:
- Enviando a operação de liberação do ASCS para o dispositivo de áudio Bluetooth LE remoto
- Desconectando o CIS se ele não for usado por outro fluxo ativo.
- Removendo o CIG se todos os CISs estiverem desconectados.
Quando seu retorno de chamada EvtAcxStreamReleaseHardware é invocado, o driver de streaming IHV ACX libera seus recursos de pipeline de áudio.
Desconexão do ponto de extremidade
O perfil de áudio Bluetooth LE do Windows 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 do PACS que ele não está disponível para streaming. Quando o ponto de extremidade é desconectado, o serviço de áudio do Windows invalida todos os fluxos ativos para o ponto de extremidade. Isso resulta na pausa do fluxo e nas sequências de liberação.
Remoção de endpoint
Um ponto de extremidade de áudio Bluetooth LE é 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 é removido do Windows ou o rádio Bluetooth é desativado.
- Quando o perfil de áudio Bluetooth LE do Windows remove seu circuito, o ACX desabilita suas interfaces de ponto de extremidade para sinalizar ao serviço de áudio do Windows que o ponto de extremidade deve ser removido.
- Quando as interfaces são desabilitadas, o serviço de áudio do Windows invalida todos os fluxos ativos para o ponto de extremidade de áudio Bluetooth LE, essa operação resulta na pausa do fluxo e libera retornos de chamada a serem invocados no circuito de streaming.
- Para concluir a remoção do ponto de extremidade, o ACX invalida o circuito do driver de streaming IHV ACX, o que resulta no WDF invocando o retorno de chamada de limpeza do circuito.
- Quando seu retorno de chamada de limpeza é invocado, o driver de streaming IHV ACX libera seu circuito.
Volume e mudo
O circuito de streaming IHV ACX só deve incluir elementos de volume e mudo se o driver de streaming exigir um mecanismo 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 de áudio Bluetooth LE usem os perfis de controle de volume e microfone definidos pelo Bluetooth SIG para alterações de volume e mudo para pontos de extremidade de áudio unicast.
Se o dispositivo remoto Bluetooth LE Audio não der suporte aos serviços de controle de volume ou microfone, ou o ponto de extremidade for criado para transmissão de áudio, os elementos de volume e mudo no mecanismo de áudio deverão servir como um fallback para lidar com as solicitações de alteração do sistema de áudio. O sistema de áudio do Windows lida com alterações de volume e mudo. Se não houver nenhum mecanismo de áudio e o dispositivo remoto não der suporte ao volume, ou 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 o áudio clássico ou o á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 banda lateral 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 banda lateral 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 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 ao Bluetooth
- Diretrizes de desvio de HFP Bluetooth para drivers de áudio
- Streaming de áudio de bypass HFP por bluetooth