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.
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 |