EndpointVolume API
A API EndpointVolume permite que clientes especializados controlem e monitorem os níveis de volume de dispositivos de ponto de extremidade de áudio. Um cliente obtém referências às interfaces na API EndpointVolume obtendo a interface IMMDevice de um dispositivo de ponto de extremidade de áudio e chamando o método IMMDevice::Activate.
O arquivo de cabeçalho Endpointvolume.h define as interfaces na API EndpointVolume.
Os aplicativos de áudio que usam a API MMDevice e a WASAPI normalmente usam a interface ISimpleAudioVolume para controlar os níveis de volume por sessão. Apenas dois tipos de aplicativos de áudio exigem o uso da API EndpointVolume. Esses tipos de aplicativo são:
- Aplicativos que gerenciam os níveis de volume mestre de dispositivos de ponto de extremidade de áudio, semelhante ao programa de controle de volume do Windows, Sndvol.exe.
- Aplicativos de áudio profissional ("áudio profissional") que exigem acesso em modo exclusivo a dispositivos de ponto de extremidade de áudio.
O uso inadequado da API EndpointVolume pode interferir na política de áudio do Windows e interromper as configurações de volume do sistema do usuário.
Se um dispositivo de ponto de extremidade de áudio implementar controles de volume de hardware e mudo, a API EndpointVolume usará esses controles para gerenciar o volume do dispositivo. Caso contrário, a API EndpointVolume implementará os controles no software, de forma transparente para o cliente.
Se um dispositivo tiver controles de volume de hardware e mudo, as alterações feitas nas configurações de volume e mudo do dispositivo por meio da API EndpointVolume afetarão o nível de volume no modo compartilhado e no modo exclusivo. Se um dispositivo não tiver controles de volume de hardware e mudo, as alterações feitas nos controles de volume de software e mudo por meio da API EndpointVolume 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 do software.
Para aplicativos que devem gerenciar controles de volume e mudo de hardware, a API EndpointVolume oferece duas vantagens potenciais sobre a API DeviceTopology.
Primeiro, vários dispositivos de adaptador de áudio não possuem controles de volume de hardware. Se um dispositivo não tiver um controle de volume de hardware, a interface IAudioEndpointVolume na API EndpointVolume implementará automaticamente um controle de volume de software no fluxo de ou para esse dispositivo. Para um cliente da API EndpointVolume, o resultado é o mesmo se o controle de volume for implementado no hardware pelo dispositivo ou no software pela interface da API EndpointVolume.
Em segundo lugar, mesmo que o dispositivo adaptador implemente controles de volume de hardware, um aplicativo que usa a API DeviceTopology para implementar um algoritmo de topologia transversal pode não conseguir localizar o controle que está procurando. Normalmente, esse aplicativo é projetado para atravessar a topologia de hardware de um determinado dispositivo ou conjunto de dispositivos relacionados. O aplicativo corre o risco de falhar se tentar atravessar a topologia de um dispositivo para o qual não foi especificamente projetado ou testado.
Somente aplicativos especializados que devem acessar funções de hardware diferentes dos controles de volume e mudo exigem o uso da API DeviceTopology. Para aplicativos que exigem controle apenas do nível de volume de um fluxo de modo exclusivo, a API EndpointVolume é mais simples de usar e funciona de forma confiável com uma ampla variedade de dispositivos de hardware de áudio.
Para obter exemplos de código que usam as interfaces na API EndpointVolume, consulte os seguintes tópicos:
Para ver um exemplo que usa a API EndpointVolume, consulte EndpointVolume no SDK do Windows.
A API EndpointVolume implementa as seguintes interfaces.
Interface | Descrição |
---|---|
IAudioEndpointVolume | Representa os controles de volume no fluxo de áudio de ou para um dispositivo de ponto de extremidade de áudio. |
IAudioMeterInformation | Representa um medidor de pico no fluxo de áudio de ou para um dispositivo de ponto de extremidade de áudio. |
Além disso, os clientes da API EndpointVolume que exigem notificação de alterações de volume e silenciamento em dispositivos de ponto de extremidade de áudio devem implementar a interface a seguir.
Interface | Descrição |
---|---|
IAudioEndpointVolumeCallback | Fornece notificações quando o nível de volume ou o estado de silenciamento de um dispositivo de ponto de extremidade de áudio é alterado. |
Tópicos relacionados