Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Depois de enumerar os dispositivos de ponto de extremidade de áudio no sistema e identificar um dispositivo de renderização ou captura adequado, a próxima tarefa para um aplicativo cliente de áudio é abrir uma conexão com o dispositivo de ponto de extremidade e gerenciar o fluxo de dados de áudio nessa conexão. WASAPI permite que os clientes criem e gerenciem fluxos de áudio.
WASAPI implementa várias interfaces para fornecer serviços de gerenciamento de fluxo para clientes de áudio. A interface principal é IAudioClient. Um cliente obtém a interface IAudioClient para um dispositivo de ponto de extremidade de áudio chamando o método IMMDevice::Activate (com parâmetro iid definido como REFIID IID_IAudioClient) no objeto de ponto de extremidade.
O cliente chama os métodos no IAudioClient interface para fazer o seguinte:
- Descubra quais formatos de áudio o dispositivo de ponto final suporta.
- Obtenha o tamanho do buffer do ponto final.
- Obtenha o formato e a latência do fluxo.
- Inicie, pare e redefina o fluxo que flui através do dispositivo de ponto final.
- Aceda a serviços de áudio adicionais.
Para criar um fluxo, um cliente chama o IAudioClient::Initialize método. Por meio desse método, o cliente especifica o formato de dados para o fluxo, o tamanho do buffer de ponto de extremidade e se o fluxo opera no modo compartilhado ou exclusivo.
Os métodos restantes na interface IAudioClient se dividem em dois grupos:
- Métodos que podem ser chamados somente depois que o fluxo foi aberto pelo IAudioClient::Initialize.
- Métodos que podem ser chamados a qualquer momento antes ou depois do Inicializar chamada.
Os seguintes métodos podem ser chamados somente após a chamada para IAudioClient::Initialize:
- IAudioClient::GetBufferSize
- IAudioClient::GetCurrentPadding
- IAudioClient::GetService
- IAudioClient::GetStreamLatency
- IAudioClient::Redefinir
- IAudioClient::Iniciar
- IAudioClient::Parar
Os seguintes métodos podem ser chamados antes ou depois do IAudioClient::Initialize chamada:
Para acessar os serviços de cliente de áudio adicionais, o cliente chama o IAudioClient::GetService método. Através deste método, o cliente pode obter referências para as seguintes interfaces:
-
Grava dados de renderização em um buffer de ponto de extremidade de renderização de áudio.
-
Lê dados capturados de um buffer de ponto de extremidade de captura de áudio.
-
Comunica-se com o gestor de sessões de áudio para configurar e gerir a sessão de áudio associada ao fluxo.
-
Controla o nível de volume da sessão de áudio associada ao fluxo.
-
Controla os níveis de volume dos canais individuais na sessão de áudio associada ao fluxo.
-
Monitora a taxa de dados do fluxo e a posição do fluxo.
Além disso, os clientes WASAPI que exigem notificação de eventos relacionados à sessão devem implementar a seguinte interface:
-
Para receber notificações de eventos, o cliente passa um ponteiro para seu interface IAudioSessionEvents para o método IAudioSessionControl::RegisterAudioSessionNotification como um parâmetro de chamada.
Finalmente, um cliente pode usar uma API de nível superior para criar um fluxo de áudio, mas também exigir acesso aos controles de sessão e controles de volume para a sessão que contém o fluxo. Uma API de nível superior normalmente não fornece esse acesso. O cliente pode obter os controles para uma sessão específica através do interface IAudioSessionManager. Essa interface permite que o cliente obtenha o IAudioSessionControl e interfaces de ISimpleAudioVolume para uma sessão sem exigir que o cliente use a interfaceIAudioClientpara criar um fluxo e atribuir o fluxo à sessão. Um cliente obtém o interface IAudioSessionManager para um dispositivo de ponto de extremidade de áudio chamando o método IMMDevice::Activate (com parâmetro iid definido como REFIID IID_IAudioSessionManager) no objeto de ponto de extremidade.
As interfaces IAudioSessionControl, IAudioSessionEventse IAudioSessionManager são definidas no arquivo de cabeçalho Audiopolicy.h. Todas as outras interfaces WASAPI são definidas no arquivo de cabeçalho Audioclient.h.
As seções a seguir descrevem como usar o WASAPI para gerenciar fluxos de áudio:
- Sobre o WASAPI
- renderizar um fluxo
- Capturando um fluxo
- de gravação de loopback
- Exclusive-Mode Streams
- Recuperando-se de um erro de Invalid-Device
- Usando um dispositivo de comunicação
- de roteamento de fluxo
Tópicos relacionados