Rastreamento da cabeça no Áudio de baixa energia

O áudio Bluetooth (BT) de baixa energia (LE) introduz os mecanismos de transporte lógico assíncrono orientado a conexão (LE-ACL) e isócrono (LE-ISO) para dados de monitoramento da posição da cabeça (HT).

O Android 15 oferece suporte a ajustes de modo de latência para HT com base no uso do mecanismo de transporte LE-ACL ou LE-ISO.

Nesta página, descrevemos como a estrutura de áudio, a HAL de áudio e a pilha Bluetooth interagem para descobrir e selecionar os mecanismos de transporte LE-ACL ou LE-ISO compatíveis com o host e o headset.

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 espacializador.

Propriedade do sistema

A implementação do fornecedor de 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 transportes compatíveis na ordem de preferência:

  • le-acl: transporte LE-ACL, quando os dados da unidade de medição inercial (IMU) são informados pela pilha de sensores.
  • iso-hw: transporte ISO com capacidade de tunelamento de dados HT diretamente do controlador Bluetooth para o espacializador no DSP de áudio.
  • iso-sw: transporte ISO sem capacidade de tunelamento, quando os dados da IMU são informados pela pilha de sensores.

Modos de latência

No caso do áudio BT LE, o mecanismo para a pilha BT indicar os modos de latência compatíveis para o HAL de áudio e a estrutura de áudio é o mesmo definido para o BT clássico (A2DP). A HAL de áudio informa os modos de latência compatíveis de acordo com o dispositivo de áudio selecionado.

As implementações A2DP são compatíveis apenas com os 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á uma restrição específica na latência. Esse modo é usado quando a baixa latência não é compatível (indicada pela HAL) ou quando o HT não está ativo (indicado pelo framework).

  • LOW: esse valor indica uma latência relativamente baixa (por exemplo, menos de 100 ms) compatível com a operação HT. Esse modo é usado quando a baixa latência é compatível 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 a baixa latência é compatível, o HID é transmitido pelo protocolo ISO, e não pode ser tunelado para o mecanismo de efeito espacializador (indicado pela HAL).
    • Quando o HT está ativo e o protocolo ISO é usado quando a estrutura de áudio fornece os dados HID ao mecanismo de efeitos espacializador (indicado pela estrutura).

    Nesse modo, a biblioteca de computação HT no framework faz todo o pré-processamento dos dados da IMU e a conciliação com os movimentos do smartphone indicados pelos sensores dele.

  • DYNAMIC_SPATIAL_AUDIO_HARDWARE: esse modo é usado quando uma das seguintes condições é atendida:

    • Quando a baixa latência é compatível, o HID é transmitido pelo protocolo ISO, e pode ser tunelado para o mecanismo de efeito espacializador (indicado pelo HAL).
    • Quando o HT está ativo e o protocolo ISO é usado quando os dados HID são encapsulados no mecanismo de efeitos de espacialização (indicado pela estrutura).

    Nesse modo, o mecanismo de efeito espacializador recebe os dados brutos da IMU diretamente da pilha ou do controlador BT. A implementação do efeito espacializador faz todo o pré-processamento dos dados da IMU e a conciliação com os movimentos do smartphone indicados pelos sensores dele.

Os enums de modo de latência são mapeados para a propriedade do sistema bluetooth.core.le.dsa_transport_preference em Spatializer.cpp.

Suporte ao espacializador

O controlador spatializer no serviço de política de áudio controla a seleção do protocolo de transporte HT em áudio LE. A implementação do mecanismo de efeito espacializador indica suporte ao tunelamento de dados HT com a capacidade HeadTracking.ConnectionMode.

Os modos de conexão 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 palco para a HAL. Esse modo padrão corresponde ao modo atual com BT clássico.
  • DIRECT_TO_SENSOR_SW: o mecanismo de efeito espacializador 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 da IMU libheadtracking do AOSP ou implementações de espacializador descarregadas do DSP podem usar o modo DIRECT_TO_SENSOR_SW.
  • DIRECT_TO_SENSOR_TUNNEL: o mecanismo de efeito espacializador se conecta diretamente ao sensor por tunelamento de hardware. A estrutura de áudio controla apenas o estado ativado do sensor. As implementações de espacializador descarregadas do DSP podem usar o modo DIRECT_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 compatíveis informados pela HAL. O modo de latência é definido com base no estado atual de ativação do HT, no suporte atual do espacializador 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:

  1. O framework carrega a preferência de transporte da bluetooth.core.le.dsa_transport_preference propriedade do sistema.
  2. Os modos de latência compatíveis informados pelo HAL de áudio são filtrados e ordenados de acordo com a lista carregada na etapa 1.
  3. Se o modo de baixa latência de maior prioridade for iso-hw e a implementação do espacializador oferecer suporte à conexão direta do sensor (ou seja, DIRECT_TO_SENSOR_SW ou DIRECT_TO_SENSOR_TUNNEL estiverem definidos no espacializador), o modo de latência será definido como DYNAMIC_SPATIAL_AUDIO_HARDWARE.
  4. Se o modo de baixa latência de maior prioridade for iso-hw e a implementação do espacializador não oferecer suporte à conexão direta do sensor (DIRECT_TO_SENSOR_SW ou DIRECT_TO_SENSOR_TUNNEL não estiverem definidos no espacializador), o próximo modo preferido (iso-sw ou le-acl) vai determinar o modo de latência (DYNAMIC_SPATIAL_AUDIO_SOFTWARE ou LOW).

    Se o próximo modo preferido não for especificado, o sistema vai informar um erro de configuração do produto.