Partilhar via


Sobre o WASAPI

A API de Sessão de Áudio do Windows (WASAPI) permite que os aplicativos cliente gerenciem o fluxo de dados de áudio entre o aplicativo e um dispositivo de ponto de extremidade de áudio .

Os ficheiros de cabeçalho Audioclient.h e Audiopolicy.h são responsáveis por definir as interfaces WASAPI.

Cada fluxo de áudio é membro de uma sessão de áudio . Através da abstração da sessão, um cliente WASAPI pode identificar um fluxo de áudio como membro de um grupo de fluxos de áudio relacionados. O sistema pode gerenciar todos os fluxos na sessão como uma única unidade.

O motor de áudio é o componente de áudio em modo utilizador através do qual as aplicações partilham o acesso a um dispositivo final de áudio. O mecanismo de áudio transporta dados de áudio entre um buffer de ponto final e um dispositivo de ponto final. Para reproduzir um fluxo de áudio através de um dispositivo de ponto de extremidade de renderização, um aplicativo grava periodicamente dados de áudio em um buffer de ponto de extremidade de renderização. O motor de áudio mistura os fluxos das várias aplicações. Para gravar um fluxo de áudio de um dispositivo de ponto de extremidade de captura, um aplicativo lê periodicamente dados de áudio de um buffer de ponto de extremidade de captura.

WASAPI consiste em várias interfaces. O primeiro deles é a interface IAudioClient. Para aceder às interfaces WASAPI, um cliente primeiro obtém uma referência à interface IAudioClient de um dispositivo de ponto final de áudio chamando o método IMMDevice::Activate em que o parâmetro iid é definido como REFIID IID_IAudioClient. O cliente chama o método IAudioClient::Initialize para inicializar um fluxo em um dispositivo de endpoint. Depois de inicializar um fluxo, o cliente pode obter referências para as outras interfaces WASAPI chamando o IAudioClient::GetService método.

Muitos dos métodos em WASAPI retornam o código de erro AUDCLNT_E_DEVICE_INVALIDATED se o dispositivo de ponto de extremidade de áudio que um aplicativo cliente está usando se tornar inválido. Freqüentemente, o aplicativo pode se recuperar desse erro. Para obter mais informações, consulte Recuperando-se de um erro Invalid-Device.

WASAPI implementa as seguintes interfaces.

Interface Descrição
IAudioCaptureClient Permite a um cliente a leitura de dados de entrada a partir de um buffer de ponto de extremidade de captura.
IAudioClient Permite que um cliente crie e inicialize um fluxo de áudio entre um aplicativo de áudio e o mecanismo de áudio ou o buffer de hardware de um dispositivo de ponto de extremidade de áudio.
IAudioClock Permite que um cliente monitore a taxa de dados de um fluxo e a posição atual no fluxo.
IAudioRenderClient Permite a um cliente gravar dados de saída num buffer do ponto de extremidade de renderização.
IAudioSessionControl Permite que um cliente configure os parâmetros de controle para uma sessão de áudio e monitore eventos na sessão.
IAudioSessionManager Permite que um cliente acesse os controles de sessão e os controles de volume para sessões de áudio entre processos e específicas do processo.
IAudioStreamVolume Permite que um cliente controle e monitore os níveis de volume de todos os canais em um fluxo de áudio.
IChannelAudioVolume Permite que um cliente controle os níveis de volume de todos os canais na sessão de áudio à qual o fluxo pertence.
ISimpleAudioVolume Permite que um cliente controle o nível de volume mestre de uma sessão de áudio.

 

Os clientes WASAPI que exigem notificação de eventos relacionados à sessão devem implementar a seguinte interface.

Interface Descrição
IAudioSessionEvents Fornece notificações de eventos relacionados à sessão, como alterações no nível de volume, nome para exibição e estado da sessão.

 

Gestão de Fluxos

Referência de Programação