Interface IAudioEndpointVolume (endpointvolume.h)

L’interface IAudioEndpointVolume représente les contrôles de volume sur le flux audio vers ou à partir d’un appareil de point de terminaison audio. Un client obtient une référence à l’interface IAudioEndpointVolume d’un appareil de point de terminaison en appelant la méthode IMMDevice::Activate avec le paramètre iid défini sur REFIID IID_IAudioEndpointVolume.

Les applications audio qui utilisent l’API MMDevice et WASAPI utilisent généralement l’interface ISimpleAudioVolume pour gérer les niveaux de volume de flux par session. Dans de rares cas, une application audio spécialisée peut nécessiter l’utilisation de l’interface IAudioEndpointVolume pour contrôler le master niveau de volume d’un appareil de point de terminaison audio. Un client d’IAudioEndpointVolume doit veiller à éviter les effets potentiellement perturbants sur d’autres applications audio de la modification des master niveaux de volume des appareils de point de terminaison audio. En règle générale, l’utilisateur dispose d’un contrôle exclusif sur les niveaux de volume master via le programme de contrôle de volume Windows, Sndvol.exe.

Si l’appareil adaptateur qui diffuse des données audio vers ou à partir de l’appareil de point de terminaison possède des contrôles de volume matériel et de désactivation, l’interface IAudioEndpointVolume utilise ces contrôles pour gérer les paramètres de volume et de désactivation du flux audio. Si le périphérique audio ne dispose pas d’un contrôle de volume matériel pour le flux, le moteur audio implémente automatiquement les contrôles de volume et de désactivation dans le logiciel.

Pour les applications qui gèrent des flux en mode partagé vers et depuis des appareils de point de terminaison, le comportement de IAudioEndpointVolume est différent pour le rendu des flux et les flux de capture.

Pour un flux de rendu en mode partagé, le contrôle de volume de point de terminaison auquel le client accède via l’interface IAudioEndpointVolume fonctionne indépendamment des contrôles de volume par session que les interfaces ISimpleAudioVolume et IChannelAudioVolume implémentent . Ainsi, le niveau de volume du flux de rendu résulte des effets combinés du contrôle de volume du point de terminaison et des contrôles par session.

Pour un flux de capture en mode partagé, les contrôles de volume par session que les interfaces ISimpleAudioVolume et IChannelAudioVolume implémentent sont liés directement au contrôle de volume de point de terminaison implémenté par l’interface IAudioEndpointVolume . La modification du contrôle de volume par session par le biais des méthodes dans les interfaces ISimpleAudioVolume et IChannelAudioVolume modifie le paramètre du contrôle de volume de l’interface IAudioEndpointVolume , et l’inverse est également vrai. Les niveaux de volume représentés par chacune des interfaces correspondent les uns aux autres comme suit :

  • Pour chaque canal d’un flux, IAudioEndpointVolume fournit des niveaux de volume audio réduits exprimés en décibels (dB), qui sont mappés à des valeurs normalisées comprises entre 0,0 (volume minimal) et 1,0 (volume maximal). La plage possible dépend du pilote audio. Pour plus d’informations, consultez IAudioEndpointVolumeVolumeRange::GetVolumeRange .
  • Le volume de session représenté par ISimpleAudioVolume::GetMasterVolume est la valeur scalaire comprise entre 0,0 et 1,0 qui correspond au paramètre de volume le plus élevé sur les différents canaux. Ainsi, par exemple, si le canal gauche est défini sur 0,8 et que le canal de droite est défini sur 0,4, ISimpleAudioVolume::GetMasterVolume retourne 0,8.
  • Lorsque le niveau de volume par canal est contrôlé via les méthodes de l’interface IChannelAudioVolume , le scalaire indiquant que le volume est toujours relatif au volume de session. Cela signifie que le ou les canaux avec le volume le plus élevé ont un volume de 1,0. Dans l’exemple de deux canaux, défini sur des volumes de 0,8 et 0,4 par IAudioEndpointVolume::SetChannelVolumeLevelScalar, IChannelAudioVolume::GetChannelVolume indique les volumes de 1.0 et 0.5.
Note Les clients de l’API EndpointVolume ne doivent pas s’appuyer sur le comportement précédent, car il peut changer dans les versions ultérieures.
 

Si un appareil dispose de contrôles de volume matériel et de désactivation, les modifications apportées aux paramètres de volume et de désactivation de l’appareil via l’interface IAudioEndpointVolume affectent le niveau de volume en mode partagé et en mode exclusif. Si un appareil ne dispose pas de contrôles de volume matériel et de mise en sourdine, les modifications apportées au volume logiciel et aux contrôles de désactivation par le biais de l’interface IAudioEndpointVolume affectent le niveau de volume en mode partagé, mais pas en mode exclusif. En mode exclusif, le client et l’appareil échangent directement des données audio, en contournant les contrôles logiciels. Toutefois, les contrôles logiciels sont persistants et les modifications de volume effectuées lorsque l’appareil fonctionne en mode exclusif prennent effet lorsque l’appareil passe en mode partagé.

Pour déterminer si un appareil dispose de contrôles de volume matériel et de désactivation, appelez la méthode IAudioEndpointVolume::QueryHardwareSupport .

Les méthodes de l’interface IAudioEndpointVolume permettent au client d’exprimer des niveaux de volume en décibels ou sous forme de valeurs normalisées et audio-coniques. Dans ce dernier cas, un niveau de volume est exprimé sous la forme d’une valeur à virgule flottante dans la plage normalisée comprise entre 0,0 (volume minimal) et 1,0 (volume maximal). Dans cette plage, la relation entre le niveau de volume normalisé et l’atténuation de l’amplitude du signal est décrite par une courbe non linéaire et audio-cononique. Pour plus d’informations sur les courbes à coniques audio, consultez Contrôles de volume à coniques audio.

En outre, pour prendre en charge facilement les curseurs de volume dans les interfaces utilisateur, l’interface IAudioEndpointVolume permet aux clients de définir et d’obtenir des niveaux de volume qui sont exprimés sous forme de valeurs discrètes ou « étapes ». Les étapes sont réparties uniformément sur une courbe non linéaire et audio-cononique. Si la plage contient n étapes, les étapes sont numérotées de 0 à n–1, où l’étape 0 représente le niveau de volume minimal et l’étape n– 1 représente le maximum.

Pour obtenir un exemple de code qui utilise l’interface IAudioEndpointVolume , consultez Contrôles de volume du point de terminaison.

Héritage

L’interface IAudioEndpointVolume hérite de l’interface IUnknown . IAudioEndpointVolume a également les types de membres suivants :

Méthodes

L’interface IAudioEndpointVolume a ces méthodes.

 
IAudioEndpointVolume::GetChannelCount

La méthode GetChannelCount obtient le nombre de canaux dans le flux audio qui entre ou quitte l’appareil de point de terminaison audio.
IAudioEndpointVolume::GetChannelVolumeLevel

La méthode GetChannelVolumeLevel obtient le niveau de volume, en décibels, du canal spécifié dans le flux audio qui entre ou quitte l’appareil de point de terminaison audio.
IAudioEndpointVolume::GetChannelVolumeLevelScalar

La méthode GetChannelVolumeLevelScalar obtient le niveau de volume normalisé et audio-coniques du canal spécifié du flux audio qui entre ou quitte l’appareil de point de terminaison audio.
IAudioEndpointVolume::GetMasterVolumeLevel

La méthode GetMasterVolumeLevel obtient le niveau de volume master, en décibels, du flux audio qui entre ou quitte l’appareil de point de terminaison audio.
IAudioEndpointVolume::GetMasterVolumeLevelScalar

La méthode GetMasterVolumeLevelScalar obtient le niveau de volume master du flux audio qui entre ou sort de l’appareil de point de terminaison audio. Le niveau de volume est exprimé sous la forme d’une valeur audio normalisée dans la plage comprise entre 0,0 et 1,0.
IAudioEndpointVolume::GetMute

La méthode GetMute obtient l’état de désactivation du flux audio qui entre ou quitte l’appareil de point de terminaison audio.
IAudioEndpointVolume::GetVolumeRange

La méthode GetVolumeRange obtient la plage de volumes, en décibels, du flux audio qui entre ou sort de l’appareil de point de terminaison audio.
IAudioEndpointVolume::GetVolumeStepInfo

La méthode GetVolumeStepInfo obtient des informations sur l’étape actuelle dans la plage de volumes.
IAudioEndpointVolume::QueryHardwareSupport

La méthode QueryHardwareSupport interroge le périphérique de point de terminaison audio pour ses fonctions matérielles prises en charge. (IAudioEndpointVolume.QueryHardwareSupport)
IAudioEndpointVolume::RegisterControlChangeNotify

La méthode RegisterControlChangeNotify inscrit l’interface de rappel de notification d’un client.
IAudioEndpointVolume::SetChannelVolumeLevel

La méthode SetChannelVolumeLevel définit le niveau de volume, en décibels, du canal spécifié du flux audio qui entre ou quitte l’appareil de point de terminaison audio.
IAudioEndpointVolume::SetChannelVolumeLevelScalar

La méthode SetChannelVolumeLevelScalar définit le niveau de volume audio normalisé du canal spécifié dans le flux audio qui entre ou quitte l’appareil de point de terminaison audio.
IAudioEndpointVolume::SetMasterVolumeLevel

La méthode SetMasterVolumeLevel définit le niveau de volume master, en décibels, du flux audio qui entre ou quitte l’appareil de point de terminaison audio.
IAudioEndpointVolume::SetMasterVolumeLevelScalar

La méthode SetMasterVolumeLevelScalar définit le niveau de volume master du flux audio qui entre ou sort de l’appareil de point de terminaison audio. Le niveau de volume est exprimé sous la forme d’une valeur audio normalisée dans la plage comprise entre 0,0 et 1,0.
IAudioEndpointVolume::SetMute

La méthode SetMute définit l’état de désactivation du flux audio qui entre ou sort du périphérique de point de terminaison audio.
IAudioEndpointVolume::UnregisterControlChangeNotify

La méthode UnregisterControlChangeNotify supprime l’inscription de l’interface de rappel de notification d’un client que le client a inscrite lors d’un appel précédent à la méthode IAudioEndpointVolume::RegisterControlChangeNotify.
IAudioEndpointVolume::VolumeStepDown

La méthode VolumeStepDown décrémente, d’une étape, le niveau de volume du flux audio qui entre ou sort de l’appareil de point de terminaison audio.
IAudioEndpointVolume::VolumeStepUp

La méthode VolumeStepUp incrémente, d’une étape, le niveau de volume du flux audio qui entre ou quitte le périphérique de point de terminaison audio.

Spécifications

   
Client minimal pris en charge Windows Vista [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête endpointvolume.h

Voir aussi

Interfaces audio principales

EndpointVolume API

IMMDevice::Activate

ISimpleAudioVolume, interface