Compartilhar via


Interface IAudioEndpointVolume (endpointvolume.h)

A interface IAudioEndpointVolume representa os controles de volume no fluxo de áudio de ou para um dispositivo de ponto de extremidade de áudio. Um cliente obtém uma referência à interface IAudioEndpointVolume de um dispositivo de ponto de extremidade chamando o método IMMDevice::Activate com o parâmetro iid definido como REFIID IID_IAudioEndpointVolume.

Os aplicativos de áudio que usam a API MMDevice e o WASAPI normalmente usam a interface ISimpleAudioVolume para gerenciar os níveis de volume de fluxo por sessão. Em casos raros, um aplicativo de áudio especializado pode exigir o uso da interface IAudioEndpointVolume para controlar o nível de volume master de um dispositivo de ponto de extremidade de áudio. Um cliente do IAudioEndpointVolume deve ter cuidado para evitar os efeitos potencialmente disruptivos em outros aplicativos de áudio de alterar os níveis de volume master de dispositivos de ponto de extremidade de áudio. Normalmente, o usuário tem controle exclusivo sobre os níveis de volume master por meio do programa de controle de volume do Windows, Sndvol.exe.

Se o dispositivo adaptador que transmite dados de áudio de ou para o dispositivo de ponto de extremidade tiver controles de volume de hardware e mudo, a interface IAudioEndpointVolume usará esses controles para gerenciar o volume e ativar o mudo das configurações do fluxo de áudio. Se o dispositivo de áudio não tiver um controle de volume de hardware para o fluxo, o mecanismo de áudio implementará automaticamente controles de volume e mudo no software.

Para aplicativos que gerenciam fluxos de modo compartilhado de e para dispositivos de ponto de extremidade, o comportamento do IAudioEndpointVolume é diferente para renderizar fluxos e capturar fluxos.

Para um fluxo de renderização de modo compartilhado, o controle de volume do ponto de extremidade que o cliente acessa por meio da interface IAudioEndpointVolume opera independentemente dos controles de volume por sessão que as interfaces ISimpleAudioVolume e IChannelAudioVolume implementam . Assim, o nível de volume do fluxo de renderização resulta dos efeitos combinados do controle de volume do ponto de extremidade e dos controles por sessão.

Para um fluxo de captura de modo compartilhado, os controles de volume por sessão que as interfaces ISimpleAudioVolume e IChannelAudioVolume implementam estão vinculados diretamente ao controle de volume do ponto de extremidade implementado pela interface IAudioEndpointVolume . Alterar o controle de volume por sessão por meio dos métodos nas interfaces ISimpleAudioVolume e IChannelAudioVolume altera a configuração do controle de volume da interface IAudioEndpointVolume e o inverso também é verdadeiro. Os níveis de volume representados por cada uma das interfaces correspondem entre si da seguinte maneira:

  • Para cada canal em um fluxo, IAudioEndpointVolume fornece níveis de volume em fita de áudio expressos em decibéis (dB), mapeados para valores normalizados no intervalo de 0,0 (volume mínimo) a 1,0 (volume máximo). O intervalo possível depende do driver de áudio. Consulte IAudioEndpointVolume::GetVolumeRange para obter detalhes.
  • O volume de sessão representado por ISimpleAudioVolume::GetMasterVolume é o valor escalar que varia de 0,0 a 1,0 que corresponde à configuração de volume mais alto entre os vários canais. Portanto, por exemplo, se o canal esquerdo estiver definido como 0.8 e o canal direito estiver definido como 0.4, iSimpleAudioVolume::GetMasterVolume retornará 0,8.
  • Quando o nível de volume por canal é controlado por meio dos métodos na interface IChannelAudioVolume , o escalar indica que o volume é sempre relativo ao volume da sessão. Isso significa que o canal ou os canais com o maior volume têm um volume de 1,0. Dado o exemplo de dois canais, definido como volumes de 0,8 e 0,4 por IAudioEndpointVolume::SetChannelVolumeLevelScalar, IChannelAudioVolume::GetChannelVolume indicará volumes de 1,0 e 0,5.
Nota Os clientes da API EndpointVolume não devem depender do comportamento anterior, pois ela pode mudar em versões futuras.
 

Se um dispositivo tiver controles de mudo e volume de hardware, as alterações feitas nas configurações de volume e mudo do dispositivo por meio da interface IAudioEndpointVolume afetarão o nível de volume no modo compartilhado e no modo exclusivo. Se um dispositivo não tiver controles de mudo e volume de hardware, as alterações feitas no volume de software e os controles de mudo por meio da interface IAudioEndpointVolume afetarão o nível de volume no modo compartilhado, mas não no modo exclusivo. No modo exclusivo, o cliente e o dispositivo trocam dados de áudio diretamente, ignorando os controles de software. No entanto, os controles de software são persistentes e as alterações de volume feitas enquanto o dispositivo opera no modo exclusivo entrarão em vigor quando o dispositivo mudar para a operação de modo compartilhado.

Para determinar se um dispositivo tem controles de mudo e volume de hardware, chame o método IAudioEndpointVolume::QueryHardwareSupport .

Os métodos da interface IAudioEndpointVolume permitem que o cliente expresse níveis de volume em decibéis ou valores normalizados e com áudio em fita. No último caso, um nível de volume é expresso como um valor de ponto flutuante no intervalo normalizado de 0,0 (volume mínimo) a 1,0 (volume máximo). Dentro desse intervalo, a relação do nível de volume normalizado com a atenuação da amplitude do sinal é descrita por uma curva afilada de áudio não linear. Para obter mais informações sobre curvas afilados em áudio, consulte Controles de volume em fita de áudio.

Além disso, para dar suporte conveniente a controles deslizantes de volume em interfaces do usuário, a interface IAudioEndpointVolume permite que os clientes definam e obtenham níveis de volume expressos como valores discretos ou "etapas". As etapas são distribuídas uniformemente em uma curva afilado de áudio não linear. Se o intervalo contiver n etapas, as etapas serão numeradas de 0 a n– 1, em que a etapa 0 representa o nível mínimo de volume e a etapa n– 1 representa o máximo.

Para obter um exemplo de código que usa a interface IAudioEndpointVolume , consulte Controles de volume do ponto de extremidade.

Herança

A interface IAudioEndpointVolume herda da interface IUnknown . IAudioEndpointVolume também tem esses tipos de membros:

Métodos

A interface IAudioEndpointVolume tem esses métodos.

 
IAudioEndpointVolume::GetChannelCount

O método GetChannelCount obtém uma contagem dos canais no fluxo de áudio que insere ou sai do dispositivo de ponto de extremidade de áudio.
IAudioEndpointVolume::GetChannelVolumeLevel

O método GetChannelVolumeLevel obtém o nível de volume, em decibéis, do canal especificado no fluxo de áudio que entra ou sai do dispositivo de ponto de extremidade de áudio.
IAudioEndpointVolume::GetChannelVolumeLevelScalar

O método GetChannelVolumeLevelScalar obtém o nível de volume normalizado e gravado em áudio do canal especificado do fluxo de áudio que entra ou sai do dispositivo de ponto de extremidade de áudio.
IAudioEndpointVolume::GetMasterVolumeLevel

O método GetMasterVolumeLevel obtém o master nível de volume, em decibéis, do fluxo de áudio que entra ou sai do dispositivo de ponto de extremidade de áudio.
IAudioEndpointVolume::GetMasterVolumeLevelScalar

O método GetMasterVolumeLevelScalar obtém o nível de volume master do fluxo de áudio que entra ou sai do dispositivo de ponto de extremidade de áudio. O nível de volume é expresso como um valor normalizado e gravado em áudio no intervalo de 0,0 a 1,0.
IAudioEndpointVolume::GetMute

O método GetMute obtém o estado de ativação do fluxo de áudio que entra ou sai do dispositivo de ponto de extremidade de áudio.
IAudioEndpointVolume::GetVolumeRange

O método GetVolumeRange obtém o intervalo de volume, em decibéis, do fluxo de áudio que entra ou sai do dispositivo de ponto de extremidade de áudio.
IAudioEndpointVolume::GetVolumeStepInfo

O método GetVolumeStepInfo obtém informações sobre a etapa atual no intervalo de volumes.
IAudioEndpointVolume::QueryHardwareSupport

O método QueryHardwareSupport consulta o dispositivo de ponto de extremidade de áudio para suas funções com suporte de hardware. (IAudioEndpointVolume.QueryHardwareSupport)
IAudioEndpointVolume::RegisterControlChangeNotify

O método RegisterControlChangeNotify registra a interface de retorno de chamada de notificação de um cliente.
IAudioEndpointVolume::SetChannelVolumeLevel

O método SetChannelVolumeLevel define o nível de volume, em decibéis, do canal especificado do fluxo de áudio que entra ou sai do dispositivo de ponto de extremidade de áudio.
IAudioEndpointVolume::SetChannelVolumeLevelScalar

O método SetChannelVolumeLevelScalar define o nível de volume normalizado e gravado em áudio do canal especificado no fluxo de áudio que entra ou sai do dispositivo de ponto de extremidade de áudio.
IAudioEndpointVolume::SetMasterVolumeLevel

O método SetMasterVolumeLevel define o master nível de volume, em decibéis, do fluxo de áudio que entra ou sai do dispositivo de ponto de extremidade de áudio.
IAudioEndpointVolume::SetMasterVolumeLevelScalar

O método SetMasterVolumeLevelScalar define o master nível de volume do fluxo de áudio que entra ou sai do dispositivo de ponto de extremidade de áudio. O nível de volume é expresso como um valor normalizado e gravado em áudio no intervalo de 0,0 a 1,0.
IAudioEndpointVolume::SetMute

O método SetMute define o estado de ativação do fluxo de áudio que entra ou sai do dispositivo de ponto de extremidade de áudio.
IAudioEndpointVolume::UnregisterControlChangeNotify

O método UnregisterControlChangeNotify exclui o registro da interface de retorno de chamada de notificação de um cliente que o cliente registrou em uma chamada anterior para o método IAudioEndpointVolume::RegisterControlChangeNotify.
IAudioEndpointVolume::VolumeStepDown

O método VolumeStepDown diminui, por uma etapa, o nível de volume do fluxo de áudio que entra ou sai do dispositivo de ponto de extremidade de áudio.
IAudioEndpointVolume::VolumeStepUp

O método VolumeStepUp incrementa, em uma etapa, o nível de volume do fluxo de áudio que entra ou sai do dispositivo de ponto de extremidade de áudio.

Requisitos

   
Cliente mínimo com suporte Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho endpointvolume.h

Confira também

Principais interfaces de áudio

EndpointVolume API

IMMDevice::Activate

ISimpleAudioVolume Interface