Antarmuka IAudioEndpointVolume (endpointvolume.h)

Antarmuka IAudioEndpointVolume mewakili kontrol volume pada aliran audio ke atau dari perangkat titik akhir audio. Klien mendapatkan referensi ke antarmuka IAudioEndpointVolume dari perangkat titik akhir dengan memanggil metode IMMDevice::Activate dengan parameter iid diatur ke REFIID IID_IAudioEndpointVolume.

Aplikasi audio yang menggunakan MMDevice API dan WASAPI biasanya menggunakan antarmuka ISimpleAudioVolume untuk mengelola tingkat volume aliran per sesi. Dalam kasus yang jarang terjadi, aplikasi audio khusus mungkin memerlukan penggunaan antarmuka IAudioEndpointVolume untuk mengontrol tingkat volume master perangkat titik akhir audio. Klien IAudioEndpointVolume harus berhati-hati untuk menghindari efek yang berpotensi mengganggu pada aplikasi audio lain untuk mengubah tingkat volume master perangkat titik akhir audio. Biasanya, pengguna memiliki kontrol eksklusif atas tingkat volume master melalui program kontrol volume Windows, Sndvol.exe.

Jika perangkat adaptor yang mengalirkan data audio ke atau dari perangkat titik akhir memiliki volume perangkat keras dan kontrol bisukan, antarmuka IAudioEndpointVolume menggunakan kontrol tersebut untuk mengelola volume dan mematikan suara pengaturan aliran audio. Jika perangkat audio tidak memiliki kontrol volume perangkat keras untuk aliran, mesin audio secara otomatis mengimplementasikan kontrol volume dan bisukan dalam perangkat lunak.

Untuk aplikasi yang mengelola aliran mode bersama ke dan dari perangkat titik akhir, perilaku IAudioEndpointVolume berbeda untuk merender aliran dan menangkap aliran.

Untuk aliran penyajian mode bersama, kontrol volume titik akhir yang diakses klien melalui antarmuka IAudioEndpointVolume beroperasi secara independen dari kontrol volume per sesi yang diterapkan antarmuka ISimpleAudioVolume dan IChannelAudioVolume . Dengan demikian, tingkat volume aliran penyajian dihasilkan dari efek gabungan kontrol volume titik akhir dan kontrol per sesi.

Untuk aliran pengambilan mode bersama, volume per sesi mengontrol bahwa antarmuka ISimpleAudioVolume dan IChannelAudioVolume diikat langsung ke kontrol volume titik akhir yang diterapkan oleh antarmuka IAudioEndpointVolume . Mengubah kontrol volume per sesi melalui metode di antarmuka ISimpleAudioVolume dan IChannelAudioVolume mengubah pengaturan kontrol volume antarmuka IAudioEndpointVolume , dan sebaliknya juga benar. Tingkat volume yang diwakili oleh masing-masing antarmuka sesuai satu sama lain sebagai berikut:

  • Untuk setiap saluran dalam aliran, IAudioEndpointVolume menyediakan tingkat volume audio-tapered yang dinyatakan dalam desibel (dB), yang dipetakan ke nilai yang dinormalisasi dalam rentang 0,0 (volume minimum) hingga 1,0 (volume maksimum). Rentang yang mungkin tergantung pada driver audio. Lihat IAudioEndpointVolume::GetVolumeRange untuk detailnya.
  • Volume sesi yang diwakili oleh ISimpleAudioVolume::GetMasterVolume adalah nilai skalar mulai dari 0,0 hingga 1,0 yang sesuai dengan pengaturan volume tertinggi di berbagai saluran. Jadi, misalnya, jika saluran kiri diatur ke 0,8, dan saluran kanan diatur ke 0,4, maka ISimpleAudioVolume::GetMasterVolume akan mengembalikan 0,8.
  • Ketika tingkat volume per saluran dikontrol melalui metode di antarmuka IChannelAudioVolume , skalar yang menunjukkan volume selalu relatif terhadap volume sesi. Ini berarti bahwa saluran atau saluran dengan volume tertinggi memiliki volume 1,0. Mengingat contoh dua saluran, diatur ke volume 0,8 dan 0,4 oleh IAudioEndpointVolume::SetChannelVolumeLevelScalar, IChannelAudioVolume::GetChannelVolume akan menunjukkan volume 1,0 dan 0,5.
Catatan Klien API EndpointVolume tidak boleh mengandalkan perilaku sebelumnya karena mungkin berubah dalam rilis mendatang.
 

Jika perangkat memiliki volume perangkat keras dan kontrol bisukan, perubahan yang dilakukan pada volume perangkat dan pengaturan bisukan melalui antarmuka IAudioEndpointVolume memengaruhi tingkat volume dalam mode bersama dan mode eksklusif. Jika perangkat tidak memiliki volume perangkat keras dan kontrol bisukan, perubahan yang dilakukan pada volume perangkat lunak dan membisukan kontrol melalui antarmuka IAudioEndpointVolume memengaruhi tingkat volume dalam mode bersama, tetapi tidak dalam mode eksklusif. Dalam mode eksklusif, klien dan perangkat bertukar data audio secara langsung, melewati kontrol perangkat lunak. Namun, kontrol perangkat lunak persisten, dan perubahan volume yang dilakukan saat perangkat beroperasi dalam mode eksklusif berlaku ketika perangkat beralih ke operasi mode bersama.

Untuk menentukan apakah perangkat memiliki volume perangkat keras dan kontrol bisukan, panggil metode IAudioEndpointVolume::QueryHardwareSupport .

Metode antarmuka IAudioEndpointVolume memungkinkan klien untuk mengekspresikan tingkat volume baik dalam desibel atau sebagai nilai yang dinormalisasi dan di-taper audio. Dalam kasus terakhir, tingkat volume dinyatakan sebagai nilai floating-point dalam rentang yang dinormalisasi dari 0,0 (volume minimum) hingga 1,0 (volume maksimum). Dalam rentang ini, hubungan tingkat volume yang dinormalisasi dengan redaman amplitude sinyal dijelaskan oleh kurva nonlinear dan audio-tapered. Untuk informasi selengkapnya tentang kurva audio-tapered, lihat Audio-Tapered Volume Controls.

Selain itu, untuk mendukung penggeser volume dengan mudah di antarmuka pengguna, antarmuka IAudioEndpointVolume memungkinkan klien untuk mengatur dan mendapatkan tingkat volume yang dinyatakan sebagai nilai diskrit atau "langkah". Langkah-langkahnya didistribusikan secara seragam melalui kurva nonlinear dan berujung audio. Jika rentang berisi n langkah, langkah-langkahnya diberi nomor dari 0 hingga n– 1, di mana langkah 0 mewakili tingkat volume minimum dan langkah n– 1 menunjukkan maksimum.

Untuk contoh kode yang menggunakan antarmuka IAudioEndpointVolume , lihat Kontrol Volume Titik Akhir.

Warisan

Antarmuka IAudioEndpointVolume mewarisi dari antarmuka IUnknown . IAudioEndpointVolume juga memiliki jenis anggota ini:

Metode

Antarmuka IAudioEndpointVolume memiliki metode ini.

 
IAudioEndpointVolume::GetChannelCount

Metode GetChannelCount mendapatkan hitungan saluran dalam aliran audio yang masuk atau meninggalkan perangkat titik akhir audio.
IAudioEndpointVolume::GetChannelVolumeLevel

Metode GetChannelVolumeLevel mendapatkan tingkat volume, dalam desibel, dari saluran yang ditentukan dalam aliran audio yang memasuki atau meninggalkan perangkat titik akhir audio.
IAudioEndpointVolume::GetChannelVolumeLevelScalar

Metode GetChannelVolumeLevelScalar mendapatkan tingkat volume audio-tapered yang dinormalisasi dari saluran tertentu dari aliran audio yang masuk atau meninggalkan perangkat titik akhir audio.
IAudioEndpointVolume::GetMasterVolumeLevel

Metode GetMasterVolumeLevel mendapatkan tingkat volume master, dalam desibel, dari aliran audio yang masuk atau meninggalkan perangkat titik akhir audio.
IAudioEndpointVolume::GetMasterVolumeLevelScalar

Metode GetMasterVolumeLevelScalar mendapatkan tingkat volume master aliran audio yang masuk atau meninggalkan perangkat titik akhir audio. Tingkat volume dinyatakan sebagai nilai yang dinormalisasi dan di-taper audio dalam rentang dari 0,0 hingga 1,0.
IAudioEndpointVolume::GetMute

Metode GetMute mendapatkan status mematikan suara aliran audio yang masuk atau meninggalkan perangkat titik akhir audio.
IAudioEndpointVolume::GetVolumeRange

Metode GetVolumeRange mendapatkan rentang volume, dalam desibel, dari aliran audio yang masuk atau meninggalkan perangkat titik akhir audio.
IAudioEndpointVolume::GetVolumeStepInfo

Metode GetVolumeStepInfo mendapatkan informasi tentang langkah saat ini dalam rentang volume.
IAudioEndpointVolume::QueryHardwareSupport

Metode QueryHardwareSupport meminta perangkat titik akhir audio untuk fungsi yang didukung perangkat kerasnya. (IAudioEndpointVolume.QueryHardwareSupport)
IAudioEndpointVolume::RegisterControlChangeNotify

Metode RegisterControlChangeNotify mendaftarkan antarmuka panggilan balik pemberitahuan klien.
IAudioEndpointVolume::SetChannelVolumeLevel

Metode SetChannelVolumeLevel mengatur tingkat volume, dalam desibel, dari saluran aliran audio yang ditentukan yang memasuki atau meninggalkan perangkat titik akhir audio.
IAudioEndpointVolume::SetChannelVolumeLevelScalar

Metode SetChannelVolumeLevelScalar mengatur tingkat volume audio-tapered yang dinormalisasi dari saluran yang ditentukan dalam aliran audio yang memasuki atau meninggalkan perangkat titik akhir audio.
IAudioEndpointVolume::SetMasterVolumeLevel

Metode SetMasterVolumeLevel mengatur tingkat volume master, dalam desibel, dari aliran audio yang masuk atau meninggalkan perangkat titik akhir audio.
IAudioEndpointVolume::SetMasterVolumeLevelScalar

Metode SetMasterVolumeLevelScalar mengatur tingkat volume master aliran audio yang masuk atau meninggalkan perangkat titik akhir audio. Tingkat volume dinyatakan sebagai nilai yang dinormalisasi dan di-taper audio dalam rentang dari 0,0 hingga 1,0.
IAudioEndpointVolume::SetMute

Metode SetMute mengatur status mematikan suara aliran audio yang masuk atau meninggalkan perangkat titik akhir audio.
IAudioEndpointVolume::UnregisterControlChangeNotify

Metode UnregisterControlChangeNotify menghapus pendaftaran antarmuka panggilan balik pemberitahuan klien yang didaftarkan klien dalam panggilan sebelumnya ke metode IAudioEndpointVolume::RegisterControlChangeNotify.
IAudioEndpointVolume::VolumeStepDown

Metode VolumeStepDown mengalami penurunan, dengan satu langkah, tingkat volume aliran audio yang masuk atau meninggalkan perangkat titik akhir audio.
IAudioEndpointVolume::VolumeStepUp

Metode VolumeStepUp bertambah, dengan satu langkah, tingkat volume aliran audio yang masuk atau meninggalkan perangkat titik akhir audio.

Persyaratan

   
Klien minimum yang didukung Windows Vista [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2008 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header endpointvolume.h

Lihat juga

Antarmuka Audio Inti

EndpointVolume API

IMMDevice::Activate

Antarmuka ISimpleAudioVolume