IAudioEndpointVolume-Schnittstelle (endpointvolume.h)

Die IAudioEndpointVolume-Schnittstelle stellt die Lautstärkeregler für den Audiodatenstrom an oder von einem Audioendpunktgerät dar. Ein Client ruft einen Verweis auf die IAudioEndpointVolume-Schnittstelle eines Endpunktgeräts durch Aufrufen der IMMDevice::Activate-Methode ab, wobei der Parameter iid auf REFIID IID_IAudioEndpointVolume festgelegt ist.

Audioanwendungen, die die MMDevice-API und WASAPI verwenden, verwenden in der Regel die ISimpleAudioVolume-Schnittstelle , um die Streamlautstärken pro Sitzung zu verwalten. In seltenen Fällen erfordert eine spezielle Audioanwendung möglicherweise die Verwendung der IAudioEndpointVolume-Schnittstelle, um die master Lautstärke eines Audioendpunktgeräts zu steuern. Ein Client von IAudioEndpointVolume muss darauf achten, die potenziell störenden Auswirkungen der Änderung der master Lautstärkepegel von Audioendpunktgeräten auf andere Audioanwendungen zu vermeiden. In der Regel hat der Benutzer die exklusive Kontrolle über die master Lautstärkepegel über das Windows-Lautstärkesteuerungsprogramm, Sndvol.exe.

Wenn das Adaptergerät, das Audiodaten an oder vom Endpunktgerät streamt, über Hardware-Lautstärke- und Stummschaltungssteuerelemente verfügt, verwendet die IAudioEndpointVolume-Schnittstelle diese Steuerelemente, um die Lautstärke- und Stummschaltungseinstellungen des Audiodatenstroms zu verwalten. Wenn dem Audiogerät keine Hardware-Lautstärkeregelung für den Stream fehlt, implementiert die Audio-Engine automatisch Lautstärke- und Stummschaltungssteuerungen in der Software.

Für Anwendungen, die Datenströme im freigegebenen Modus zu und von Endpunktgeräten verwalten, unterscheidet sich das Verhalten von IAudioEndpointVolume beim Rendern von Datenströmen und Aufnahmedatenströmen.

Bei einem Renderingstream im freigegebenen Modus funktioniert die Endpunktvolumesteuerung, auf die der Client über die IAudioEndpointVolume-Schnittstelle zugreift, unabhängig von den Volumesteuerelementen pro Sitzung, die die Schnittstellen ISimpleAudioVolume und IChannelAudioVolume implementieren. Daher ergibt sich die Volumeebene des Renderingstreams aus den kombinierten Effekten der Endpunktlautstärkesteuerung und der Steuerelemente pro Sitzung.

Bei einem Aufzeichnungsdatenstrom im freigegebenen Modus sind die Volumesteuerungen pro Sitzung, die von den Schnittstellen ISimpleAudioVolume und IChannelAudioVolume implementiert werden, direkt an die Von der IAudioEndpointVolume-Schnittstelle implementierte Endpunktvolume-Steuerung gebunden. Wenn Sie die Lautstärkesteuerung pro Sitzung über die Methoden in den Schnittstellen ISimpleAudioVolume und IChannelAudioVolume ändern, wird die Einstellung der Lautstärkeregelung der IAudioEndpointVolume-Schnittstelle geändert, und umgekehrt gilt auch der Fall. Die Volumeebenen, die von den einzelnen Schnittstellen dargestellt werden, entsprechen sich wie folgt:

  • IAudioEndpointVolume stellt für jeden Kanal in einem Stream audioverknöpfte Lautstärkepegel bereit, ausgedrückt in Dezibel (dB), die normalisierten Werten im Bereich von 0,0 (minimale Lautstärke) bis 1,0 (maximale Lautstärke) zugeordnet werden. Der mögliche Bereich hängt vom Audiotreiber ab. Weitere Informationen finden Sie unter IAudioEndpointVolume::GetVolumeRange .
  • Das durch ISimpleAudioVolume::GetMasterVolume dargestellte Sitzungsvolume ist der Skalarwert zwischen 0,0 und 1,0, der der Einstellung für die höchste Lautstärke in den verschiedenen Kanälen entspricht. Wenn also beispielsweise der linke Kanal auf 0,8 und der rechte Kanal auf 0,4 festgelegt ist, gibt ISimpleAudioVolume::GetMasterVolume 0,8 zurück.
  • Wenn die Volumeebene pro Kanal über die Methoden in der IChannelAudioVolume-Schnittstelle gesteuert wird, ist der Skalar, der die Lautstärke angibt, immer relativ zum Sitzungsvolume. Dies bedeutet, dass der Kanal oder die Kanäle mit der höchsten Lautstärke ein Volume von 1,0 aufweist. Aufgrund des Beispiels für zwei Kanäle, die von IAudioEndpointVolume::SetChannelVolume::SetChannelVolumeLevelScalar auf Volumes von 0,8 und 0,4 festgelegt sind, gibt IChannelAudioVolume::GetChannelVolume volumes von 1.0 und 0.5 an.
Hinweis Clients der EndpointVolume-API sollten sich nicht auf das vorherige Verhalten verlassen, da es sich in zukünftigen Releases ändern kann.
 

Wenn ein Gerät über Hardwarevolume- und Stummschaltungssteuerungen verfügt, wirken sich Änderungen an der Lautstärke und den Stummschaltungseinstellungen des Geräts über die IAudioEndpointVolume-Schnittstelle sowohl im freigegebenen Modus als auch im exklusiven Modus auf die Volumeebene aus. Wenn auf einem Gerät keine Hardwarevolume- und Stummschaltungssteuerungen vorhanden sind, wirken sich Änderungen, die über die IAudioEndpointVolume-Schnittstelle am Softwarevolume vorgenommen werden, auf die Volumeebene im freigegebenen Modus, jedoch nicht im exklusiven Modus. Im exklusiven Modus tauschen der Client und das Gerät Audiodaten direkt aus, wobei die Softwaresteuerelemente umgangen werden. Die Softwaresteuerelemente sind jedoch persistent, und Volumeänderungen, die während des Gerätebetriebs im exklusiven Modus vorgenommen werden, werden wirksam, wenn das Gerät in den Modus "Gemeinsam" wechselt.

Rufen Sie die IAudioEndpointVolume::QueryHardwareSupport-Methode auf, um zu bestimmen, ob ein Gerät über Hardwarevolume und Stummschaltungssteuerelemente verfügt.

Die Methoden der IAudioEndpointVolume-Schnittstelle ermöglichen es dem Client, Lautstärkepegel entweder in Dezibel oder als normalisierte Audio-Tapered-Werte auszudrücken. Im letzteren Fall wird eine Volumeebene als Gleitkommawert im normalisierten Bereich von 0,0 (Minimales Volumen) bis 1,0 (maximales Volumen) ausgedrückt. Innerhalb dieses Bereichs wird die Beziehung des normalisierten Lautstärkepegels zur Dämpfung der Signalamplitude durch eine nicht lineare, audioverkippte Kurve beschrieben. Weitere Informationen zu audioverknippten Kurven finden Sie unter Audio-Lautstärkesteuerungen.

Darüber hinaus ermöglicht die IAudioEndpointVolume-Schnittstelle zur bequemen Unterstützung von Volumeschiebereglern in Benutzeroberflächen Clients das Festlegen und Abrufen von Lautstärkepegeln, die als diskrete Werte oder "Schritte" ausgedrückt werden. Die Schritte sind gleichmäßig auf eine nicht lineare, audioverjüngte Kurve verteilt. Wenn der Bereich n Schritte enthält, werden die Schritte von 0 bis n–1 nummeriert, wobei Schritt 0 die minimale Lautstärke und Schritt n–1 das Maximum darstellt.

Ein Codebeispiel, das die IAudioEndpointVolume-Schnittstelle verwendet, finden Sie unter Endpoint Volume Controls.

Vererbung

Die IAudioEndpointVolume-Schnittstelle erbt von der IUnknown-Schnittstelle . IAudioEndpointVolume verfügt auch über diese Arten von Membern:

Methoden

Die IAudioEndpointVolume-Schnittstelle verfügt über diese Methoden.

 
IAudioEndpointVolume::GetChannelCount

Die GetChannelCount-Methode ruft die Anzahl der Kanäle im Audiodatenstrom ab, der das Audioendpunktgerät eingibt oder verlässt.
IAudioEndpointVolume::GetChannelVolumeLevel

Die GetChannelVolumeLevel-Methode ruft die Lautstärke des angegebenen Kanals im Audiodatenstrom in Dezibel ab, der in das Audioendpunktgerät eintritt oder dieses verlässt.
IAudioEndpointVolume::GetChannelVolumeLevelScalar

Die GetChannelVolumeLevelScalar-Methode ruft die normalisierte Lautstärkeebene des angegebenen Kanals des Audiodatenstroms ab, der in das Audioendpunktgerät eintritt oder dieses verlässt.
IAudioEndpointVolume::GetMasterVolumeLevel

Die GetMasterVolumeLevel-Methode ruft den master Lautstärkepegel des Audiodatenstroms in Dezibel ab, der in das Audioendpunktgerät ein- oder verlässt.
IAudioEndpointVolume::GetMasterVolumeLevelScalar

Die GetMasterVolumeLevelScalar-Methode ruft die master Lautstärke des Audiodatenstroms ab, der in das Audioendpunktgerät ein- oder verlässt. Der Lautstärkepegel wird als normalisierter Audiowert im Bereich von 0,0 bis 1,0 ausgedrückt.
IAudioEndpointVolume::GetMute

Die GetMute-Methode ruft den Stummschaltungszustand des Audiodatenstroms ab, der in das Audioendpunktgerät eintritt oder dieses verlässt.
IAudioEndpointVolume::GetVolumeRange

Die GetVolumeRange-Methode ruft den Lautstärkebereich des Audiodatenstroms in Dezibel ab, der in das Audioendpunktgerät eintritt oder dieses verlässt.
IAudioEndpointVolume::GetVolumeStepInfo

Die GetVolumeStepInfo-Methode ruft Informationen zum aktuellen Schritt im Volumebereich ab.
IAudioEndpointVolume::QueryHardwareSupport

Die QueryHardwareSupport-Methode fragt das Audioendpunktgerät nach seinen hardwareunterstützten Funktionen ab. (IAudioEndpointVolume.QueryHardwareSupport)
IAudioEndpointVolume::RegisterControlChangeNotify

Die RegisterControlChangeNotify-Methode registriert die Benachrichtigungsrückrufschnittstelle eines Clients.
IAudioEndpointVolume::SetChannelVolumeLevel

Die SetChannelVolumeLevel-Methode legt den Lautstärkepegel des angegebenen Kanals des Audiodatenstroms in Dezibel fest, der in das Audioendpunktgerät eintritt oder dieses verlässt.
IAudioEndpointVolume::SetChannelVolumeLevelScalar

Die SetChannelVolumeLevelScalar-Methode legt die normalisierte Lautstärke des angegebenen Kanals im Audiodatenstrom fest, der in das Audioendpunktgerät eintritt oder dieses verlässt.
IAudioEndpointVolume::SetMasterVolumeLevel

Die SetMasterVolumeLevel-Methode legt den master Lautstärkepegel des Audiodatenstroms in Dezibel fest, der in das Audioendpunktgerät eintritt oder dieses verlässt.
IAudioEndpointVolume::SetMasterVolumeLevelScalar

Die SetMasterVolumeLevelScalar-Methode legt die master Lautstärke des Audiodatenstroms fest, der in das Audioendpunktgerät eintritt oder dieses verlässt. Der Lautstärkepegel wird als normalisierter Audiowert im Bereich von 0,0 bis 1,0 ausgedrückt.
IAudioEndpointVolume::SetMute

Die SetMute-Methode legt den Stummschaltungszustand des Audiodatenstroms fest, der in das Audioendpunktgerät eintritt oder dieses verlässt.
IAudioEndpointVolume::UnregisterControlChangeNotify

Die UnregisterControlChangeNotify-Methode löscht die Registrierung der Benachrichtigungsrückrufschnittstelle eines Clients, die der Client bei einem vorherigen Aufruf der IAudioEndpointVolume::RegisterControlChangeNotify-Methode registriert hat.
IAudioEndpointVolume::VolumeStepDown

Die VolumeStepDown-Methode verringert die Lautstärke des Audiodatenstroms, der in das Audioendpunktgerät ein- oder verlässt, um einen Schritt.
IAudioEndpointVolume::VolumeStepUp

Die VolumeStepUp-Methode erhöht die Lautstärke des Audiodatenstroms, der in das Audioendpunktgerät ein- oder verlässt.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile endpointvolume.h

Weitere Informationen

Kernaudioschnittstellen

EndpointVolume-API

IMMDevice::Activate

ISimpleAudioVolume-Schnittstelle