Suporte à postura de áudio

Visão geral

Os dispositivos podem ser usados em diferentes posturas. Para um tablet, a postura basicamente significa a orientação que ela é mantida, como retrato ou paisagem. A experiência de áudio para esses dispositivos pode ser otimizada para posturas específicas. Por exemplo, os pontos de extremidade de áudio podem remapear canais esquerdo/direito para uma experiência estéreo adequada em orientações diferentes. Também é possível calibrar microfones para supressão de ruído, cancelamento de eco etc. com base em locais alterados de alto-falante/microfone após alterações de postura.

Suporte do sistema operacional Windows

Há suporte para a postura de áudio no Windows 11, versão 22000 e posterior.

Arquitetura

Cenários relacionados à postura para pontos de extremidade de áudio baseiam-se nas respostas do Shell às alterações de postura. O Shell funciona com sensores e entrada do usuário (por exemplo, bloqueio de orientação) para determinar a postura geral do sistema. A pilha de áudio do sistema operacional recebe notificações de postura do Shell e informa os pontos de extremidade de áudio que dão suporte à DDI da Postura de Áudio.

A Pilha de Áudio não altera o conteúdo do fluxo de áudio em resposta a alterações de postura. Em vez disso, a Pilha de Áudio informa o driver de áudio dessas alterações. A expectativa é que os componentes de áudio IHV se adaptem a essas alterações com o processamento de sinal implementado no hardware (DSP) ou como um APO de software.

Para computadores desktop, cenários relacionados à postura para pontos de extremidade de áudio se alinham com a exibição. A pilha de áudio do sistema operacional recebe notificações de postura da exibição e informa os pontos de extremidade de áudio que dão suporte à DDI da Postura de Áudio.

O diagrama a seguir mostra a relação e o fluxo de controle entre componentes envolvidos no tratamento de alterações de postura para dispositivos de áudio.

Diagrama mostrando a relação entre Shell do SO, Áudio do SO, APO, PortCls e Driver de Áudio no tratamento de alterações de postura para dispositivos de áudio.

Componentes

Shell e sensores do sistema operacional

O Shell monitora várias informações de sensor fornecidas pelos drivers de sensor. Juntamente com as informações do sensor, o Shell considera as preferências do usuário, como bloqueio de orientação e substituições de aplicativo, para determinar a postura do sistema.

Pilha de áudio do sistema operacional

A pilha de áudio do sistema operacional recebe informações de postura do Shell. Quando ocorre uma alteração na postura do sistema, a Pilha de Áudio informa pontos de extremidade de áudio com reconhecimento de postura usando uma propriedade KS.

Driver de áudio IHV e APO

O driver de áudio IHV, juntamente com um APO opcional, manipula as alterações de postura da Pilha de Áudio do SISTEMA Operacional. Somente os dispositivos de áudio integrados localizados diretamente no chassi main do computador que são afetados por alterações de postura devem indicar suporte para postura.

Requisitos de suporte do ponto de extremidade de áudio

A tabela a seguir mostra os tipos de ponto de extremidade de áudio que devem e não devem fornecer suporte à postura.

Tipo de ponto de extremidade de áudio Suporte à postura
Alto-falantes do Built-In Yes
Built-In matriz de microfone/microfone Yes
Wired-Headset No
HDMI/DisplayPort No
Áudio USB externo No
Áudio Bluetooth No

Requisitos do driver de áudio

As informações de postura são fornecidas ao driver de áudio IHV na forma de orientação. Espera-se que o driver de áudio IHV tenha conhecimento implícito sobre o fator forma do dispositivo e deve ser capaz de identificar a orientação padrão e as posições relativas do alto-falante/microfone. Essas informações podem ser recuperadas do ACPI ou por outro mecanismo IHV.

Estruturas e constantes de dados

PROPSETID

Esse é o GUID usado para a ID do conjunto de propriedades KS.

KSPROPSETID_AudioPosture =A3FB7B0D-474E-4F51-A379-51282DD4FA8F

ID DA PROPRIEDADE

Esse é o valor usado para a ID KSPROPERTY.

KSPROPERTY_AUDIOPOSTURE_ORIENTATION = 1

DESCRIÇÃO DA PROPRIEDADE – AUDIOPOSTURE_ORIENTATION

Essa propriedade especifica a orientação atual do sistema. A orientação é representada pelos graus de rotação da orientação padrão. As informações de orientação estão em sincronia com o Shell do sistema operacional, que inclui o bloqueio de orientação do usuário/aplicativo. O driver de áudio recebe essa enumeração ao manipular a solicitação de propriedade Set para KSPROPERTY_AUDIOPOSTURE_ORIENTATION.

typedef enum
{
    AUDIOPOSTURE_PANEL_ORIENTATION_NOTROTATED = 0,
    AUDIOPOSTURE_PANEL_ORIENTATION_ROTATED90DEGREESCOUNTERCLOCKWISE,
    AUDIOPOSTURE_PANEL_ORIENTATION_ROTATED180DEGREESCOUNTERCLOCKWISE,
    AUDIOPOSTURE_PANEL_ORIENTATION_ROTATED270DEGREESCOUNTERCLOCKWISE,
} AUDIOPOSTURE_ORIENTATION;

Para obter mais informações, consulte a enumeração AUDIOPOSTURE_ORIENTATION.

MANIPULAÇÃO DE PROPRIEDADE

O driver de áudio deve implementar KSPROPSETID_AudioPosture – KSPROPERTY_AUDIOPOSTURE_ORIENTATION como uma propriedade pin-wise que é acessada por meio do identificador de filtro. A propriedade deve ter suporte no pino de ponte, ou seja, o pino que representa o ponto de extremidade de hardware, para o ponto de extremidade.

SUPORTE BÁSICO – KSPROPERTY_TYPE_BASICSUPPORT

O driver de áudio deve retornar suporte para Definir e sinalizadores de acesso.

SET – KSPROPERTY_TYPE_SET

O driver de áudio recebe um ponteiro para AUDIOPOSTURE_ORIENTATION como o parâmetro de valor da solicitação de propriedade. Em resposta a essa solicitação de propriedade, o driver de áudio pode aplicar as alterações de hardware ou software necessárias para o novo estado de postura. Retornar êxito indica que o driver terminou de processar a alteração. Se um APO IHV precisar receber informações de postura do driver de áudio, os Módulos de Áudio poderão ser usados para fornecer o mecanismo de notificação. Os drivers devem armazenar em cache o valor para que ele possa ser aplicado ao sair de baixa potência/hibernação

AUDIOPOSTURE_ORIENTATION Orientation = *((AUDIOPOSTURE_ORIENTATION*)PropertyRequest->Value);

switch (Orientation)
{
    case AUDIOPOSTURE_ORIENTATION_NOTROTATED:
    //Cache and process the orientation
    .
    .
    case AUDIOPOSTURE_ORIENTATION_ROTATED90DEGREESCOUNTERCLOCKWISE:
    //Cache and process the orientation
    .
    .
    case AUDIOPOSTURE_ORIENTATION_ROTATED180DEGREESCOUNTERCLOCKWISE:
    //Cache and process the orientation
    .
    .
    case AUDIOPOSTURE_ORIENTATION_ROTATED270DEGREESCOUNTERCLOCKWISE:
    //Cache and process the orientation
    .
    .
}

Confira também

Modelo de Driver do Windows (WDM)

Visão geral dos drivers de áudio