O áudio Bluetooth (BT) de baixa energia (LE) apresenta os mecanismos de transporte lógico assíncrono orientado a conexões (LE-ACL) e isócrono (LE-ISO) para dados de rastreamento da posição da cabeça (HT, na sigla em inglês).
O Android 15 oferece suporte a ajustes do modo de latência para HT com base no uso do mecanismo de transporte LE-ACL ou LE-ISO.
Esta página descreve como o framework de áudio, o HAL de áudio e a pilha de Bluetooth interagem para descobrir e selecionar os mecanismos de transporte LE-ACL ou LE-ISO compatíveis com o host e o fone de ouvido.
Suporte para LE-ACL e LE-ISO
O Android 15 inclui suporte para mecanismos de transporte LE-ACL e LE-ISO usando uma propriedade do sistema definida pelo fornecedor, modos de latência da HAL de áudio e modos de conexão do spatializer.
Propriedade do sistema
A implementação do fornecedor do smartphone lista os mecanismos de transporte compatíveis na
propriedade do sistema bluetooth.core.le.dsa_transport_preference
. O valor é uma lista de strings separadas por vírgulas,
que lista os meios de transporte compatíveis na ordem de preferência:
le-acl
: transporte LE-ACL, quando os dados da unidade de medição inercial (IMU, na sigla em inglês) são informados pela pilha de sensores.iso-hw
: transporte ISO com capacidade de encaminhar dados de HT diretamente do controlador Bluetooth para o spatializer no DSP de áudio.iso-sw
: transporte ISO sem capacidade de encapsulamento, quando os dados de IMU são informados pela pilha de sensores.
Modos de latência
No caso do áudio BT LE, o mecanismo para a pilha de BT indicar os modos de latência compatíveis para o HAL de áudio e o framework de áudio é o mesmo definido para o BT Classic (A2DP). O HAL de áudio informa os modos de latência compatíveis de acordo com o dispositivo de áudio selecionado.
As implementações do A2DP oferecem suporte apenas aos modos FREE
e LOW_LATENCY
.
Por outro lado, para áudio BT LE, os seguintes modos de latência são definidos na HAL de áudio para oferecer suporte à adição de mecanismos de transporte LE-ACL e LE-ISO:
FREE
: esse valor indica que não há restrição específica na latência. Esse modo é usado quando a baixa latência não é compatível (indicada pelo HAL) ou quando a HT não está ativa (indicada pelo framework).LOW
: esse valor indica uma latência relativamente baixa (menos de 100 ms) compatível com a operação HT. Esse modo é usado quando a baixa latência é aceita e o HID é transmitido pelo protocolo ACL (indicado pelo HAL) ou quando o HT está ativo e nenhum outro modo de baixa latência está disponível (indicado pelo framework).DYNAMIC_SPATIAL_AUDIO_SOFTWARE
: esse modo é usado quando uma das seguintes condições é atendida:- Quando há suporte para baixa latência, o HID é transmitido pelo protocolo ISO e o HID não pode ser encapsulado no mecanismo de efeito espacial (indicado pela HAL).
- Quando o HT está ativo e o protocolo ISO é usado quando o framework de áudio fornece os dados de HID ao mecanismo de efeito espacial (indicado pelo framework).
Nesse modo, a biblioteca de computação HT no framework faz todo o pré-processamento nos dados de IMU e a reconciliação com os movimentos do smartphone indicados pelos sensores do smartphone.
DYNAMIC_SPATIAL_AUDIO_HARDWARE
: esse modo é usado quando uma das seguintes condições é atendida:- Quando há suporte para baixa latência, o HID é transmitido pelo protocolo ISO e pode ser encapsulado no mecanismo de efeito de espacialização (indicado pelo HAL).
- Quando o HT ativo e o protocolo ISO são usados quando os dados HID são encapsulados no mecanismo de efeito espacial (indicado pelo framework).
Nesse modo, o mecanismo de efeito de espacialização recebe os dados não processados da IMU diretamente da pilha ou do controlador de BT. A implementação do efeito de espacialização faz todo o pré-processamento dos dados de IMU e a reconciliação com os movimentos do smartphone indicados pelos sensores.
Os tipos enumerados de modo de latência são mapeados para a propriedade do sistema bluetooth.core.le.dsa_transport_preference
em Spatializer.cpp
.
Suporte a spatializer
O controlador de espacialização
no serviço de política de áudio controla a seleção do protocolo de transporte
HT sobre áudio LE. A implementação do mecanismo de efeito de spatializador indica
suporte ao encapsulamento de dados de HT com o recurso HeadTracking.ConnectionMode
.
Os modos de conexão de HT compatíveis são os seguintes:
FRAMEWORK_PROCESSED
: o framework de áudio fornece dados de IMU pré-processados em um formato de vetor de cabeça para estágio para HAL. Esse modo padrão corresponde ao modo atual com o BT clássico.DIRECT_TO_SENSOR_SW
: o mecanismo de efeito de espacialização se conecta diretamente ao sensor pela pilha de software do sensor. O framework de áudio controla apenas o estado ativado do sensor. Implementações de software que não usam o pré-processamento de dados IMUlibheadtracking
do AOSP ou implementações de spatializer descarregados do DSP podem usar o modoDIRECT_TO_SENSOR_SW
.DIRECT_TO_SENSOR_TUNNEL
: o mecanismo de efeito de espacialização se conecta diretamente ao sensor por tunelamento de hardware. O framework de áudio controla apenas o estado ativado do sensor. As implementações de spatializer descarregadas do DSP podem usar o modoDIRECT_TO_SENSOR_TUNNEL
.
Seleção do modo de latência
O framework seleciona um modo de latência na lista de modos de latência com suporte informados pela HAL. O modo de latência é definido com base no estado de ativação atual do HT, no suporte ao spatializer atual e na propriedade do sistema especificada pelo fornecedor que estabelece uma ordem de prioridade entre os mecanismos de transporte.
O framework usa o seguinte processo em selectHeadtrackingConnectionMode_l
para selecionar o modo de latência:
- O framework carrega a preferência de transporte da
propriedade do sistema
bluetooth.core.le.dsa_transport_preference
. - Os modos de latência com suporte informados pela HAL de áudio são filtrados e ordenados em relação à lista carregada na etapa 1.
- Se o modo de baixa latência de maior prioridade for
iso-hw
e a implementação do spatializer oferecer suporte à conexão direta do sensor (ou seja,DIRECT_TO_SENSOR_SW
ouDIRECT_TO_SENSOR_TUNNEL
estiverem definidos no spatializer), o modo de latência será definido comoDYNAMIC_SPATIAL_AUDIO_HARDWARE
. Se o modo de baixa latência de maior prioridade for
iso-hw
e a implementação do espacial não oferecer suporte à conexão direta do sensor (DIRECT_TO_SENSOR_SW
ouDIRECT_TO_SENSOR_TUNNEL
não estiverem definidos no espacializador), o próximo modo preferido (iso-sw
oule-acl
) vai determinar o modo de latência (que éDYNAMIC_SPATIAL_AUDIO_SOFTWARE
ouLOW
).Se o próximo modo preferido não for especificado, o sistema vai mostrar um erro de configuração do produto.