Condividi tramite


Interfaccia IAudioEndpointVolume (endpointvolume.h)

L'interfaccia IAudioEndpointVolume rappresenta i controlli del volume nel flusso audio verso o da un dispositivo endpoint audio. Un client ottiene un riferimento all'interfaccia IAudioEndpointVolume di un dispositivo endpoint chiamando il metodo IMMDevice::Activate con parametro iid impostato su REFIID IID_IAudioEndpointVolume.

Le applicazioni audio che usano l'API MMDevice e WASAPI in genere usano l'interfaccia ISimpleAudioVolume per gestire i livelli di volume di flusso su base sessione. In rari casi, un'applicazione audio specializzata potrebbe richiedere l'uso dell'interfaccia IAudioEndpointVolume per controllare il livello di volume master di un dispositivo endpoint audio. Un client di IAudioEndpointVolume deve prestare attenzione a evitare gli effetti potenzialmente dirompenti su altre applicazioni audio per modificare i livelli di volume master dei dispositivi endpoint audio. In genere, l'utente ha il controllo esclusivo sui livelli di volume master tramite il programma di controllo del volume di Windows, Sndvol.exe.

Se il dispositivo adattatore che trasmette dati audio a o dal dispositivo endpoint dispone di controlli di volume hardware e di disattivazione, l'interfaccia IAudioEndpointVolume usa tali controlli per gestire il volume e disattivare le impostazioni del flusso audio. Se il dispositivo audio non dispone di un controllo del volume hardware per il flusso, il motore audio implementa automaticamente i controlli volume e disattivazione nel software.

Per le applicazioni che gestiscono flussi in modalità condivisa da e verso dispositivi endpoint, il comportamento di IAudioEndpointVolume è diverso per i flussi di rendering e i flussi di acquisizione.

Per un flusso di rendering in modalità condivisa, il controllo del volume dell'endpoint a cui accede il client tramite l'interfaccia IAudioEndpointVolume opera indipendentemente dai controlli del volume per sessione implementati dalle interfacce ISimpleAudioVolume e IChannelAudioVolume . Di conseguenza, il livello di volume del flusso di rendering restituisce gli effetti combinati del controllo del volume dell'endpoint e dei controlli per sessione.

Per un flusso di acquisizione in modalità condivisa, i controlli del volume per sessione implementati dall'interfaccia ISimpleAudioVolume e IChannelAudioVolume sono collegati direttamente al controllo del volume degli endpoint implementato dall'interfaccia IAudioEndpointVolume . La modifica del controllo del volume per sessione tramite i metodi nelle interfacce ISimpleAudioVolume e IChannelAudioVolume modifica l'impostazione del controllo volume dell'interfaccia IAudioEndpointVolume e il contrario è true. I livelli di volume rappresentati da ognuna delle interfacce corrispondono tra loro come indicato di seguito:

  • Per ogni canale in un flusso, IAudioEndpointVolume fornisce livelli di volume con tocco audio espresso in decibel (dB), mappati ai valori normalizzati nell'intervallo compreso tra 0,0 (volume minimo) e 1,0 (volume massimo). L'intervallo possibile dipende dal driver audio. Per informazioni dettagliate , vedere IAudioEndpointVolume::GetVolumeRange .
  • Il volume di sessione rappresentato da ISimpleAudioVolume::GetMasterVolume è il valore scalare compreso tra 0,0 e 1,0 che corrisponde all'impostazione più alta del volume tra i vari canali. Ad esempio, se il canale sinistro è impostato su 0,8 e il canale destro è impostato su 0,4, ISimpleAudioVolume::GetMasterVolume restituirà 0,8.
  • Quando il livello di volume per canale viene controllato tramite i metodi nell'interfaccia IChannelAudioVolume , il scalare che indica che il volume è sempre relativo al volume di sessione. Ciò significa che il canale o i canali con il volume più alto ha un volume pari a 1,0. Dato l'esempio di due canali, impostato su volumi pari a 0,8 e 0,4 da IAudioEndpointVolume::SetChannelVolumeLevelScalar, IChannelAudioVolume::GetChannelVolume indicherà volumi di 1.0 e 0.5.
Nota I client dell'API EndpointVolume non devono basarsi sul comportamento precedente perché potrebbe cambiare nelle versioni future.
 

Se un dispositivo dispone di controlli volume hardware e disattivazione, le modifiche apportate alle impostazioni del volume e della disattivazione del dispositivo tramite l'interfaccia IAudioEndpointVolume influiscono sul livello di volume sia in modalità condivisa che in modalità esclusiva. Se un dispositivo non dispone di controlli del volume hardware e disattiva i controlli, le modifiche apportate ai controlli del volume software e mute tramite l'interfaccia IAudioEndpointVolume influiscono sul livello di volume in modalità condivisa, ma non in modalità esclusiva. In modalità esclusiva, il client e il dispositivo scambiano direttamente i dati audio, ignorando i controlli software. Tuttavia, i controlli software sono persistenti e le modifiche apportate al volume mentre il dispositivo opera in modalità esclusiva si applica quando il dispositivo passa all'operazione in modalità condivisa.

Per determinare se un dispositivo dispone di controlli di volume hardware e di disattivazione, chiamare il metodo IAudioEndpointVolume::QueryHardwareSupport .

I metodi dell'interfaccia IAudioEndpointVolume consentono al client di esprimere i livelli di volume in decibel o come valori normalizzati, con taper audio. In quest'ultimo caso, un livello di volume viene espresso come valore a virgola mobile nell'intervallo normalizzato compreso tra 0,0 (volume minimo) e 1,0 (volume massimo). All'interno di questo intervallo, la relazione del livello di volume normalizzato all'attenuazione dell'ampiezza del segnale è descritta da una curva non lineare, audio-tapered. Per altre informazioni sulle curve con taper audio, vedere Controlli volume con tocco audio.

Inoltre, per supportare facilmente i dispositivi di scorrimento del volume nelle interfacce utente, l'interfaccia IAudioEndpointVolume consente ai client di impostare e ottenere livelli di volume espressi come valori discreti o "passaggi". I passaggi vengono distribuiti uniformemente su una curva non lineare e con taper audio. Se l'intervallo contiene n passaggi, i passaggi vengono numerati da 0 a n- 1, dove il passaggio 0 rappresenta il livello minimo del volume e il passaggio n- 1 rappresenta il massimo.

Per un esempio di codice che usa l'interfaccia IAudioEndpointVolume , vedere Controlli volume endpoint.

Ereditarietà

L'interfaccia IAudioEndpointVolume eredita dall'interfaccia IUnknown . IAudioEndpointVolume include anche questi tipi di membri:

Metodi

L'interfaccia IAudioEndpointVolume include questi metodi.

 
IAudioEndpointVolume::GetChannelCount

Il metodo GetChannelCount ottiene un conteggio dei canali nel flusso audio che entra o lascia il dispositivo dell'endpoint audio.
IAudioEndpointVolume::GetChannelVolumeLevel

Il metodo GetChannelVolumeLevel ottiene il livello di volume, in decibel, del canale specificato nel flusso audio che entra o lascia il dispositivo dell'endpoint audio.
IAudioEndpointVolume::GetChannelVolumeLevelScalar

Il metodo GetChannelVolumeLevelScalar ottiene il livello di volume normalizzato e con tocco audio del canale specificato del flusso audio che entra o lascia il dispositivo endpoint audio.
IAudioEndpointVolume::GetMasterVolumeLevel

Il metodo GetMasterVolumeLevel ottiene il livello del volume master, in decibel, del flusso audio che entra o lascia il dispositivo dell'endpoint audio.
IAudioEndpointVolume::GetMasterVolumeLevelScalar

Il metodo GetMasterVolumeLevelScalar ottiene il livello del volume master del flusso audio che entra o lascia il dispositivo dell'endpoint audio. Il livello del volume viene espresso come valore normalizzato, con taper audio nell'intervallo compreso tra 0,0 e 1,0.
IAudioEndpointVolume::GetMute

Il metodo GetMute ottiene lo stato di modifica del flusso audio che entra o lascia il dispositivo dell'endpoint audio.
IAudioEndpointVolume::GetVolumeRange

Il metodo GetVolumeRange ottiene l'intervallo di volumi, in decibel, del flusso audio che entra o lascia il dispositivo dell'endpoint audio.
IAudioEndpointVolume::GetVolumeStepInfo

Il metodo GetVolumeStepInfo ottiene informazioni sul passaggio corrente nell'intervallo di volumi.
IAudioEndpointVolume::QueryHardwareSupport

Il metodo QueryHardwareSupport esegue una query sul dispositivo endpoint audio per le funzioni supportate dall'hardware. (IAudioEndpointVolume.QueryHardwareSupport)
IAudioEndpointVolume::RegisterControlChangeNotify

Il metodo RegisterControlChangeNotify registra l'interfaccia di callback di notifica di un client.
IAudioEndpointVolume::SetChannelVolumeLevel

Il metodo SetChannelVolumeLevel imposta il livello del volume, in decibel, del canale specificato del flusso audio che entra o lascia il dispositivo dell'endpoint audio.
IAudioEndpointVolume::SetChannelVolumeLevelScalar

Il metodo SetChannelVolumeLevelScalar imposta il livello di volume normalizzato e con tocco audio del canale specificato nel flusso audio che entra o lascia il dispositivo dell'endpoint audio.
IAudioEndpointVolume::SetMasterVolumeLevel

Il metodo SetMasterVolumeLevel imposta il livello del volume master, in decibel, del flusso audio che entra o lascia il dispositivo dell'endpoint audio.
IAudioEndpointVolume::SetMasterVolumeLevelScalar

Il metodo SetMasterVolumeLevelScalar imposta il livello del volume master del flusso audio che entra o lascia il dispositivo dell'endpoint audio. Il livello del volume viene espresso come valore normalizzato, con taper audio nell'intervallo compreso tra 0,0 e 1,0.
IAudioEndpointVolume::SetMute

Il metodo SetMute imposta lo stato di modifica del flusso audio che entra o lascia il dispositivo dell'endpoint audio.
IAudioEndpointVolume::UnregisterControlChangeNotify

Il metodo UnregisterControlChangeNotify elimina la registrazione dell'interfaccia di callback di notifica di un client registrata in una chiamata precedente al metodo IAudioEndpointVolume::RegisterControlChangeNotify.
IAudioEndpointVolume::VolumeStepDown

Il metodo VolumeStepDown decrementa, per un passaggio, il livello del volume del flusso audio che entra o lascia il dispositivo dell'endpoint audio.
IAudioEndpointVolume::VolumeStepUp

Il metodo VolumeStepUp incrementa, per un passaggio, il livello di volume del flusso audio che entra o lascia il dispositivo dell'endpoint audio.

Requisiti

   
Client minimo supportato Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2008 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione endpointvolume.h

Vedi anche

Interfacce audio principali

EndpointVolume API

IMMDevice::Activate

Interfaccia ISimpleAudioVolume