Интерфейс IAudioEndpointVolume (endpointvolume.h)

Интерфейс IAudioEndpointVolume представляет элементы управления громкостью в звуковом потоке на устройство конечной точки звука или из нее. Клиент получает ссылку на интерфейс IAudioEndpointVolume устройства конечной точки, вызывая метод IMMDevice::Activate с параметром iid , равным REFIID IID_IAudioEndpointVolume.

Звуковые приложения, использующие API MMDevice и WASAPI , обычно используют интерфейс ISimpleAudioVolume для управления уровнями громкости потока для каждого сеанса. В редких случаях специализированное звуковое приложение может потребовать использования интерфейса IAudioEndpointVolume для управления уровнем громкости master устройства конечной точки звука. Клиент IAudioEndpointVolume должен позаботиться о том, чтобы избежать потенциально разрушительных последствий для других звуковых приложений при изменении master уровней громкости конечных точек аудиоустройств. Как правило, пользователь имеет монопольный контроль над уровнями громкости master с помощью программы управления громкостями Windows, Sndvol.exe.

Если устройство адаптера, которое выполняет потоковую передачу звуковых данных на устройство конечной точки или с него, имеет аппаратные элементы управления громкостью и отключением звука, интерфейс IAudioEndpointVolume использует эти элементы управления для управления параметрами громкости и отключения звука звукового потока. Если звуковое устройство не имеет аппаратного управления громкостью для потока, звуковой модуль автоматически реализует элементы управления громкостью и отключением звука в программном обеспечении.

Для приложений, которые управляют потоками общего режима на устройства конечных точек и с устройств конечных точек, поведение IAudioEndpointVolume отличается для потоков отрисовки и захвата потоков.

Для потока отрисовки в общем режиме элемент управления громкостью конечной точки, к которому клиент обращается через интерфейс IAudioEndpointVolume , работает независимо от элементов управления объемом для каждого сеанса, которые реализуют интерфейсы ISimpleAudioVolume и IChannelAudioVolume . Таким образом, уровень громкости потока отрисовки является результатом объединенных эффектов управления объемом конечной точки и элементов управления для каждого сеанса.

Для потока записи общего режима элементы управления объемом для каждого сеанса, реализуемые интерфейсами ISimpleAudioVolume и IChannelAudioVolume , привязаны непосредственно к элементу управления громкостью конечной точки, реализованной интерфейсом IAudioEndpointVolume . Изменение элемента управления громкостью для каждого сеанса с помощью методов в интерфейсах ISimpleAudioVolume и IChannelAudioVolume изменяет настройку элемента управления громкостью интерфейса IAudioEndpointVolume , и обратное также верно. Уровни тома, представленные каждым из интерфейсов, соответствуют друг другу следующим образом:

  • Для каждого канала в потоке IAudioEndpointVolumeпредоставляет звуковые уровни громкости, выраженные в децибелах (дБ), которые сопоставляются с нормализованными значениями в диапазоне от 0,0 (минимальный объем) до 1,0 (максимальный объем). Возможный диапазон зависит от звукового драйвера. Дополнительные сведения см. в разделе IAudioEndpointVolume::GetVolumeRange .
  • Том сеанса, представленный ISimpleAudioVolume::GetMasterVolume , является скалярным значением в диапазоне от 0,0 до 1,0, которое соответствует параметру наибольшего объема в различных каналах. Например, если левый канал имеет значение 0,8, а правый — 0,4, то ISimpleAudioVolume::GetMasterVolume вернет значение 0,8.
  • Если уровень громкости канала управляется с помощью методов в интерфейсе IChannelAudioVolume , скаляр, указывающий том, всегда находится относительно тома сеанса. Это означает, что канал или каналы с наибольшим томом имеют том 1,0. В примере двух каналов для IChannelAudioVolume::GetChannelVolume заданы тома 0,8 и 0,4 по IAudioEndpointVolume::SetChannelVolume::SetChannelLevelScalar, IChannelAudioVolume будет указывать тома 1,0 и 0,5.
Примечание Клиенты API EndpointVolume не должны полагаться на предыдущее поведение, так как оно может измениться в будущих выпусках.
 

Если на устройстве есть аппаратные элементы управления громкостью и отключением звука, изменения, внесенные в параметры громкости устройства и отключения звука с помощью интерфейса IAudioEndpointVolume , влияют на уровень громкости как в общем, так и в монопольном режиме. Если на устройстве отсутствуют аппаратные элементы управления громкостью и выключением звука, изменения, внесенные в программный том и отключающие элементы управления с помощью интерфейса IAudioEndpointVolume , влияют на уровень громкости в общем режиме, но не в монопольном режиме. В монопольном режиме клиент и устройство обмениваются звуковыми данными напрямую, минуя элементы управления программным обеспечением. Однако элементы управления программным обеспечением являются постоянными, а изменения тома, внесенные во время работы устройства в монопольном режиме, вступают в силу, когда устройство переключается на режим работы в общем режиме.

Чтобы определить, имеет ли устройство элементы управления томом оборудования и отключением звука, вызовите метод IAudioEndpointVolume::QueryHardwareSupport .

Методы интерфейса IAudioEndpointVolume позволяют клиенту выражать уровни громкости в децибелах или в виде нормализованных звуковых значений. В последнем случае уровень громкости выражается в виде значения с плавающей запятой в нормализованном диапазоне от 0,0 (минимальный объем) до 1,0 (максимальный объем). В этом диапазоне связь нормализованного уровня громкости с затуханием амплитуды сигнала описывается нелинейной звуковой кривой. Дополнительные сведения о кривых с коникой звука см. в разделе Аудио-конусообразные элементы управления громкости.

Кроме того, для удобной поддержки ползунков громкости в пользовательских интерфейсах интерфейс IAudioEndpointVolume позволяет клиентам устанавливать и получать уровни громкости, выраженные в виде дискретных значений или шагов. Шаги равномерно распределены по нелинейной кривой со звуком. Если диапазон содержит n шагов, шаги нумеруются от 0 до n–1, где шаг 0 представляет минимальный уровень громкости, а шаг n–1 — максимальный.

Пример кода, в котором используется интерфейс IAudioEndpointVolume , см. в разделе Элементы управления громкостью конечных точек.

Наследование

Интерфейс IAudioEndpointVolume наследуется от интерфейса IUnknown . IAudioEndpointVolume также содержит следующие типы элементов:

Методы

Интерфейс IAudioEndpointVolume содержит следующие методы.

 
IAudioEndpointVolume::GetChannelCount

Метод GetChannelCount получает количество каналов в звуковом потоке, который входит или покидает устройство конечной точки аудио.
IAudioEndpointVolume::GetChannelVolumeLevel

Метод GetChannelVolumeLevel получает уровень громкости указанного канала в звуковом потоке, который входит или покидает устройство конечной точки звука.
IAudioEndpointVolume::GetChannelVolumeLevelScalar

Метод GetChannelVolumeLevelScalar получает нормализованный уровень громкости звука указанного канала аудиопотока, который входит или покидает устройство конечной точки звука.
IAudioEndpointVolume::GetMasterVolumeLevel

Метод GetMasterVolumeLevel получает master уровне громкости аудиопотока, который входит в устройство конечной точки звука или покидает его.
IAudioEndpointVolume::GetMasterVolumeLevelScalar

Метод GetMasterVolumeLevelScalar получает master уровень громкости аудиопотока, который входит или покидает устройство конечной точки звука. Уровень громкости выражается как нормализованное звуковое значение в диапазоне от 0,0 до 1,0.
IAudioEndpointVolume::GetMute

Метод GetMute получает состояние отключения звукового потока, который входит в устройство конечной точки звука или покидает его.
IAudioEndpointVolume::GetVolumeRange

Метод GetVolumeRange получает диапазон громкости (в децибелах) аудиопотока, который входит в устройство конечной точки звука или покидает его.
IAudioEndpointVolume::GetVolumeStepInfo

Метод GetVolumeStepInfo получает сведения о текущем шаге в диапазоне томов.
IAudioEndpointVolume::QueryHardwareSupport

Метод QueryHardwareSupport запрашивает у конечного устройства аудио его аппаратные функции. (IAudioEndpointVolume.QueryHardwareSupport)
IAudioEndpointVolume::RegisterControlChangeNotify

Метод RegisterControlChangeNotify регистрирует интерфейс обратного вызова уведомления клиента.
IAudioEndpointVolume::SetChannelVolumeLevel

Метод SetChannelVolumeLevel задает уровень громкости в децибелах указанного канала аудиопотока, который входит или покидает устройство конечной точки звука.
IAudioEndpointVolume::SetChannelVolumeLevelScalar

Метод SetChannelVolumeLevelScalar задает нормализованный уровень громкости звука указанного канала в аудиопотоке, который входит или покидает устройство конечной точки аудио.
IAudioEndpointVolume::SetMasterVolumeLevel

Метод SetMasterVolumeLevel задает master уровень громкости аудиопотока, который входит или покидает устройство конечной точки звука.
IAudioEndpointVolume::SetMasterVolumeLevelScalar

Метод SetMasterVolumeLevelScalar задает master уровень громкости аудиопотока, который входит или покидает устройство конечной точки аудио. Уровень громкости выражается как нормализованное звуковое значение в диапазоне от 0,0 до 1,0.
IAudioEndpointVolume::SetMute

Метод SetMute задает состояние выключения звукового потока, который входит в устройство конечной точки звука или покидает его.
IAudioEndpointVolume::UnregisterControlChangeNotify

Метод UnregisterControlChangeNotify удаляет регистрацию интерфейса обратного вызова уведомления клиента, зарегистрированного клиентом в предыдущем вызове метода IAudioEndpointVolume::RegisterControlChangeNotify.
IAudioEndpointVolume::VolumeStepDown

Метод VolumeStepDown на один шаг уменьшает уровень громкости аудиопотока, который входит или покидает устройство конечной точки звука.
IAudioEndpointVolume::VolumeStepUp

Метод VolumeStepUp увеличивает на один шаг уровень громкости звукового потока, который входит или покидает устройство конечной точки звука.

Требования

   
Минимальная версия клиента Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header endpointvolume.h

См. также раздел

Основные звуковые интерфейсы

EndpointVolume API

IMMDevice::Activate

Интерфейс ISimpleAudioVolume