Explorando o Mecanismo de Áudio do Windows Vista

Este tópico apresenta uma visão geral do mecanismo de áudio do Windows Vista. Ele se concentra em conceitos que ajudarão você a entender como APOs e sAPOs funcionam juntos.

O diagrama a seguir apresenta um layout simplificado da estrutura interna do mecanismo de áudio.

Diagrama ilustrando o layout simplificado de um mecanismo de áudio do Windows Vista.

Como mostra o diagrama, APOs e sAPOs fornecidos pelo sistema são os blocos de construção básicos do mecanismo de áudio. O mecanismo de áudio configura as APOs e os sAPOs fornecidos pelo sistema em componentes chamados pipes. Há dois tipos de pipes no mecanismo de áudio:

  • Os pipes de fluxo são compostos por APOs e sAPOs que executam o processamento de áudio digital que é local para o fluxo de um único aplicativo. O sAPO nesse tipo de pipe é conhecido como sAPO de efeitos locais (LFX sAPO).

  • Os pipes de dispositivo são compostos por APOs e sAPOs que executam o processamento de áudio digital que afeta todos os fluxos globalmente. O sAPO nesse tipo de pipe é chamado de sAPO de efeitos globais (GFX sAPO).

A tabela a seguir mostra os sAPOs que estão disponíveis no mecanismo de áudio do Windows Vista e o tipo de efeitos do sistema que eles aplicam.

SAPO do Windows Vista Efeito do sistema

Aumento de baixo

LFX

Gerenciamento de graves

LFX

Equalização de intensidade

LFX

Proteção de baixa frequência

LFX

Preenchimento do Alto-Falante

LFX

Fantasma do alto-falante

LFX

Virtual Surround

LFX

Surround virtualizado sobre fones de ouvido

LFX

Som aprimorado para computadores portáteis

GFX

Correção de Sala

GFX

Quando um aplicativo de áudio inicia o processamento de áudio, o mecanismo de áudio configura as APOs fornecidas pelo sistema e os sAPOs em um grafo de áudio para processar os dados de áudio digital. O mecanismo que o mecanismo de áudio usa para criar o grafo de áudio é um detalhe do sistema e não será discutido.

O aplicativo de áudio pode iniciar a conexão no modo compartilhado ou no modo exclusivo. Embora um conjunto padrão de sAPOs esteja instalado com o Windows Vista, os sAPOs não são considerados componentes do sistema e, portanto, são personalizáveis.

Modo compartilhado

No modo compartilhado, um aplicativo de áudio compartilha o hardware de áudio com outros aplicativos de áudio que estão em execução em outros processos. O mecanismo de áudio mistura os fluxos desses aplicativos e reproduz a combinação resultante por meio do hardware. Qualquer aplicativo que abra um fluxo no modo compartilhado deve selecionar o formato de combinação usado pelo mecanismo de áudio. A vantagem de usar o modo compartilhado é que o mecanismo de áudio do Windows Vista fornece um APO (Objeto de Processamento de Áudio) interno para fornecer a funcionalidade de suporte necessária. A desvantagem de usar o modo compartilhado é que a latência de fluxo de áudio é maior do que no modo exclusivo. O exemplo de código a seguir mostra a sintaxe para inicializar um fluxo de áudio no modo compartilhado.

 hResult = pAudioClient->Initialize(
        AUDCLNT_SHAREMODE_SHARED, 
        0,
        0,
        0,
 pWfx,
        &m_SubmixGuid);

Modo exclusivo

Por outro lado, quando um aplicativo abre um fluxo no modo exclusivo, o aplicativo tem acesso exclusivo ao hardware de áudio. Nesse modo, o aplicativo pode selecionar qualquer formato de áudio compatível com o ponto de extremidade. A vantagem de usar o modo exclusivo é que a latência de fluxo de áudio é menor do que no modo compartilhado. A desvantagem de usar o modo exclusivo é que você deve fornecer seu próprio APO para lidar com a funcionalidade de suporte do mecanismo de áudio. Apenas um pequeno número de aplicativos de nível profissional exige esse modo de operação. O exemplo de código a seguir mostra a sintaxe para inicializar um fluxo de áudio no modo exclusivo.

 hResult = pAudioClient->Initialize(
            AUDCLNT_SHAREMODE_EXCLUSIVE,
            0,
            0,
            0,  
 pWfxEx,
            &m_SubmixGuid);

Depois que um aplicativo inicia o processamento de áudio, o construtor de grafo configura os sAPOs em um grafo de áudio e também inicializa os sAPOs. Em seguida, o serviço de áudio negocia com o APO LFX para estabelecer o formato dos dados de áudio na entrada e saída do APO. Para obter mais informações, confira Formatar Negociação.