Sobre o WASAPI
A WASAPI (API de Sessão de Áudio do Windows) 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 arquivos de cabeçalho Audioclient.h e Audiopolicy.h definem as interfaces WASAPI.
Cada fluxo de áudio é um membro de uma sessão de áudio. Por meio da abstração de 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 mecanismo de áudio é o componente de áudio de modo de usuário através do qual os aplicativos compartilham o acesso a um dispositivo de ponto de extremidade de áudio. O mecanismo de áudio transporta dados de áudio entre um buffer de ponto de extremidade e um dispositivo de ponto de extremidade. Para reproduzir um fluxo de áudio por meio 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 mecanismo de áudio mistura os fluxos dos vários aplicativos. Para gravar um fluxo de áudio de um dispositivo de ponto de extremidade de captura, um aplicativo lê periodicamente os dados de áudio de um buffer de ponto de extremidade de captura.
O WASAPI consiste em várias interfaces. O primeiro deles é a interface IAudioClient. Para acessar as interfaces WASAPI, um cliente primeiro obtém uma referência à interface IAudioClient de um dispositivo de ponto de extremidade de áudio chamando o método IMMDevice::Activate com 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 ponto de extremidade. Depois de inicializar um fluxo, o cliente pode obter referências às outras interfaces WASAPI chamando o método IAudioClient::GetService .
Muitos dos métodos no 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. Frequentemente, o aplicativo pode se recuperar desse erro. Para obter mais informações, consulte Recuperando-se de um erro de dispositivo inválido.
O WASAPI implementa as seguintes interfaces.
Interface | Descrição |
---|---|
IAudioCaptureClient | Permite que um cliente leia dados de entrada 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 que um cliente grave dados de saída em um buffer de 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 interface a seguir.
Interface | Descrição |
---|---|
IAudioSessionEventos | 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. |