Interfaz IAudioEndpointVolume (endpointvolume.h)

La interfaz IAudioEndpointVolume representa los controles de volumen de la secuencia de audio hacia o desde un dispositivo de punto de conexión de audio. Un cliente obtiene una referencia a la interfaz IAudioEndpointVolume de un dispositivo de extremo llamando al método IMMDevice::Activate con el parámetro iid establecido en REFIID IID_IAudioEndpointVolume.

Las aplicaciones de audio que usan la API MMDevice y WASAPI suelen usar la interfaz ISimpleAudioVolume para administrar los niveles de volumen de flujo por sesión. En raras ocasiones, una aplicación de audio especializada podría requerir el uso de la interfaz IAudioEndpointVolume para controlar el nivel de volumen maestro de un dispositivo de punto de conexión de audio. Un cliente de IAudioEndpointVolume debe tener cuidado para evitar los efectos potencialmente perjudiciales en otras aplicaciones de audio para modificar los niveles de volumen maestro de los dispositivos de punto de conexión de audio. Normalmente, el usuario tiene control exclusivo sobre los niveles de volumen maestro a través del programa de control de volumen de Windows, Sndvol.exe.

Si el dispositivo de adaptador que transmite datos de audio hacia o desde el dispositivo de punto de conexión tiene controles de volumen de hardware y silenciamiento, la interfaz IAudioEndpointVolume usa esos controles para administrar la configuración de volumen y silenciar la secuencia de audio. Si el dispositivo de audio no tiene un control de volumen de hardware para la secuencia, el motor de audio implementa automáticamente los controles de volumen y silenciación en el software.

En el caso de las aplicaciones que administran flujos en modo compartido hacia y desde dispositivos de punto de conexión, el comportamiento de IAudioEndpointVolume es diferente para representar secuencias y capturar secuencias.

En el caso de una secuencia de representación en modo compartido, el control de volumen del punto de conexión al que accede el cliente a través de la interfaz IAudioEndpointVolume funciona independientemente de los controles de volumen por sesión que implementan las interfaces ISimpleAudioVolume e IChannelAudioVolume . Por lo tanto, el nivel de volumen de la secuencia de representación se obtiene de los efectos combinados del control de volumen del punto de conexión y de los controles por sesión.

En el caso de una secuencia de captura en modo compartido, los controles de volumen por sesión que las interfaces ISimpleAudioVolume e IChannelAudioVolume implementan están vinculadas directamente al control de volumen del punto de conexión implementado por la interfaz IAudioEndpointVolume . El cambio del control de volumen por sesión a través de los métodos de las interfaces ISimpleAudioVolume e IChannelAudioVolume cambia la configuración del control de volumen de la interfaz IAudioEndpointVolume y la inversa también es true. Los niveles de volumen representados por cada una de las interfaces se corresponden entre sí de la siguiente manera:

  • Para cada canal de una secuencia, IAudioEndpointVolume proporciona niveles de volumen con cinta de audio expresados en decibelios (dB), que se asignan a valores normalizados en el intervalo de 0,0 (volumen mínimo) a 1,0 (volumen máximo). El intervalo posible depende del controlador de audio. Consulte IAudioEndpointVolume::GetVolumeRange para obtener más información.
  • El volumen de sesión representado por ISimpleAudioVolume::GetMasterVolume es el valor escalar comprendido entre 0,0 y 1,0 que corresponde a la configuración de volumen más alta en los distintos canales. Por lo tanto, por ejemplo, si el canal izquierdo está establecido en 0,8 y el canal derecho se establece en 0,4, ISimpleAudioVolume::GetMasterVolume devolverá 0,8.
  • Cuando el nivel de volumen por canal se controla a través de los métodos de la interfaz IChannelAudioVolume , el escalar que indica que el volumen siempre es relativo al volumen de sesión. Esto significa que el canal o los canales con el mayor volumen tiene un volumen de 1,0. Dado el ejemplo de dos canales, se establece en volúmenes de 0,8 y 0,4 por IAudioEndpointVolume::SetChannelVolumeLevelScalar, IChannelAudioVolume::GetChannelVolume indicará volúmenes de 1.0 y 0.5.
Nota Los clientes de la API EndpointVolume no deben basarse en el comportamiento anterior porque podría cambiar en futuras versiones.
 

Si un dispositivo tiene controles de volumen de hardware y silenciación, los cambios realizados en el volumen del dispositivo y la configuración de silenciar a través de la interfaz IAudioEndpointVolume afectan al nivel de volumen tanto en modo compartido como en modo exclusivo. Si un dispositivo carece de controles de volumen de hardware y silenciación, los cambios realizados en el volumen de software y los controles silenciados a través de la interfaz IAudioEndpointVolume afectan al nivel de volumen en modo compartido, pero no en modo exclusivo. En modo exclusivo, el cliente y el dispositivo intercambian datos de audio directamente, omitiendo los controles de software. Sin embargo, los controles de software son persistentes y los cambios de volumen realizados mientras el dispositivo funciona en modo exclusivo surten efecto cuando el dispositivo cambia a la operación en modo compartido.

Para determinar si un dispositivo tiene controles de volumen de hardware y silenciar, llame al método IAudioEndpointVolume::QueryHardwareSupport .

Los métodos de la interfaz IAudioEndpointVolume permiten al cliente expresar los niveles de volumen en decibelios o como valores normalizados y con cinta de audio. En este último caso, un nivel de volumen se expresa como un valor de punto flotante en el intervalo normalizado de 0,0 (volumen mínimo) a 1,0 (volumen máximo). Dentro de este intervalo, la relación del nivel de volumen normalizado con la atenuación de la amplitud de señal se describe mediante una curva no lineal y con cinta de audio. Para obtener más información sobre las curvas con cinta de audio, vea Controles de volumen con cinta de audio.

Además, para admitir convenientemente controles deslizantes de volumen en interfaces de usuario, la interfaz IAudioEndpointVolume permite a los clientes establecer y obtener niveles de volumen que se expresan como valores discretos o "pasos". Los pasos se distribuyen uniformemente en una curva no lineal y con cinta de audio. Si el intervalo contiene n pasos, los pasos se numeran de 0 a n– 1, donde el paso 0 representa el nivel de volumen mínimo y el paso n– 1 representa el máximo.

Para obtener un ejemplo de código que usa la interfaz IAudioEndpointVolume , vea Endpoint Volume Controls.

Herencia

La interfaz IAudioEndpointVolume hereda de la interfaz IUnknown . IAudioEndpointVolume también tiene estos tipos de miembros:

Métodos

La interfaz IAudioEndpointVolume tiene estos métodos.

 
IAudioEndpointVolume::GetChannelCount

El método GetChannelCount obtiene un recuento de los canales de la secuencia de audio que entra o sale del dispositivo de punto de conexión de audio.
IAudioEndpointVolume::GetChannelVolumeLevel

El método GetChannelVolumeLevel obtiene el nivel de volumen, en decibelios, del canal especificado en la secuencia de audio que entra o sale del dispositivo de punto de conexión de audio.
IAudioEndpointVolume::GetChannelVolumeLevelScalar

El método GetChannelVolumeLevelScalar obtiene el nivel de volumen normalizado y con cinta de audio del canal especificado de la secuencia de audio que entra o sale del dispositivo de punto de conexión de audio.
IAudioEndpointVolume::GetMasterVolumeLevel

El método GetMasterVolumeLevel obtiene el nivel de volumen maestro, en decibelios, de la secuencia de audio que entra o sale del dispositivo de punto de conexión de audio.
IAudioEndpointVolume::GetMasterVolumeLevelScalar

El método GetMasterVolumeLevelScalar obtiene el nivel de volumen maestro de la secuencia de audio que entra o sale del dispositivo de punto de conexión de audio. El nivel de volumen se expresa como un valor normalizado con cinta de audio en el intervalo de 0,0 a 1,0.
IAudioEndpointVolume::GetMute

El método GetMute obtiene el estado de silenciamiento de la secuencia de audio que entra o sale del dispositivo de punto de conexión de audio.
IAudioEndpointVolume::GetVolumeRange

El método GetVolumeRange obtiene el intervalo de volúmenes, en decibelios, de la secuencia de audio que entra o sale del dispositivo de punto de conexión de audio.
IAudioEndpointVolume::GetVolumeStepInfo

El método GetVolumeStepInfo obtiene información sobre el paso actual del intervalo de volúmenes.
IAudioEndpointVolume::QueryHardwareSupport

El método QueryHardwareSupport consulta el dispositivo de punto de conexión de audio para sus funciones compatibles con hardware. (IAudioEndpointVolume.QueryHardwareSupport)
IAudioEndpointVolume::RegisterControlChangeNotify

El método RegisterControlChangeNotify registra la interfaz de devolución de llamada de notificación de un cliente.
IAudioEndpointVolume::SetChannelVolumeLevel

El método SetChannelVolumeLevel establece el nivel de volumen, en decibelios, del canal especificado de la secuencia de audio que entra o sale del dispositivo de punto de conexión de audio.
IAudioEndpointVolume::SetChannelVolumeLevelScalar

El método SetChannelVolumeLevelScalar establece el nivel de volumen normalizado y con cinta de audio del canal especificado en la secuencia de audio que entra o sale del dispositivo de punto de conexión de audio.
IAudioEndpointVolume::SetMasterVolumeLevel

El método SetMasterVolumeLevel establece el nivel de volumen maestro, en decibelios, de la secuencia de audio que entra o sale del dispositivo de punto de conexión de audio.
IAudioEndpointVolume::SetMasterVolumeLevelScalar

El método SetMasterVolumeLevelScalar establece el nivel de volumen maestro de la secuencia de audio que entra o sale del dispositivo de punto de conexión de audio. El nivel de volumen se expresa como un valor normalizado con cinta de audio en el intervalo de 0,0 a 1,0.
IAudioEndpointVolume::SetMute

El método SetMute establece el estado de silenciamiento de la secuencia de audio que entra o sale del dispositivo de punto de conexión de audio.
IAudioEndpointVolume::UnregisterControlChangeNotify

El método UnregisterControlChangeNotify elimina el registro de la interfaz de devolución de llamada de notificación de un cliente que el cliente registró en una llamada anterior al método IAudioEndpointVolume::RegisterControlChangeNotify.
IAudioEndpointVolume::VolumeStepDown

El método VolumeStepDown disminuye, en un paso, el nivel de volumen de la secuencia de audio que entra o sale del dispositivo de punto de conexión de audio.
IAudioEndpointVolume::VolumeStepUp

El método VolumeStepUp incrementa, en un paso, el nivel de volumen de la secuencia de audio que entra o sale del dispositivo de punto de conexión de audio.

Requisitos

   
Cliente mínimo compatible Windows Vista [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado endpointvolume.h

Consulte también

Interfaces de audio principales

EndpointVolume API

IMMDevice::Activate

ISimpleAudioVolume (interfaz)