IAudioEndpointVolume 介面 (endpointvolume.h)
IAudioEndpointVolume介面代表音訊資料流程上的音量控制項,或從音訊端點裝置進行。 用戶端會呼叫IMMDevice::Activate方法,並將參數iid設定為 REFIID IID_IAudioEndpointVolume,以取得端點裝置的IAudioEndpointVolume介面參考。
使用 MMDevice API 和 WASAPI 的音訊應用程式通常會使用 ISimpleAudioVolume 介面來管理每個會話的串流磁片區層級。 在罕見的情況下,特殊化音訊應用程式可能需要使用 IAudioEndpointVolume 介面來控制音訊端點裝置的主要音量層級。 IAudioEndpointVolume的用戶端必須小心避免其他音訊應用程式改變音訊端點裝置主要音量層級的潛在干擾性影響。 一般而言,使用者透過 Windows 磁片區控制程式對主要磁片區層級具有獨佔控制權,Sndvol.exe。
如果串流至端點裝置或從端點裝置串流音訊資料的配接器裝置具有硬體音量和靜音控制項, 則 IAudioEndpointVolume 介面會使用這些控制項來管理音訊資料流程的音量和靜音設定。 如果音訊裝置缺少資料流程的硬體音量控制,音訊引擎會自動在軟體中實作音量和靜音控制項。
對於管理來自端點裝置的共用模式資料流程的應用程式, IAudioEndpointVolume 的行為與轉譯資料流程和擷取資料流程的行為不同。
針對共用模式轉譯資料流程,用戶端透過 IAudioEndpointVolume 介面存取的端點磁片區控制項,與 ISimpleAudioVolume 和 IChannelAudioVolume 介面實作的每個會話磁片區控制項無關。 因此,轉譯資料流程的磁片區層級會從端點磁片區控制項和每個會話控制項的組合效果產生。
針對共用模式擷取資料流程, ISimpleAudioVolume 和 IChannelAudioVolume 介面實作的每個會話磁片區控制項會直接系結至 IAudioEndpointVolume 介面所實作的端點磁片區控制項。 透過 ISimpleAudioVolume 和 IChannelAudioVolume 介面中的方法變更每個會話磁片區控制項,也會變更 IAudioEndpointVolume 介面的磁片區控制項設定,而反向也是 true。 每個介面所代表的磁片區層級會彼此對應,如下所示:
- 針對資料流程中的每個通道, IAudioEndpointVolume 會提供以小數點表示 的音訊磁帶 磁片區層級, (dB) ,其會對應至介於 0.0 (最小音量) 到 1.0 (最大音量) 範圍內的標準化值。 可能的範圍取決於音訊驅動程式。 如需詳細資訊,請參閱 IAudioEndpointVolume::GetVolumeRange 。
- ISimpleAudioVolume::GetMasterVolume所代表的會話磁片區是一個純量值,範圍從 0.0 到 1.0,對應到各種通道的最高磁片區設定。 例如,如果左通道設定為 0.8,而右側通道設定為 0.4, 則 ISimpleAudioVolume::GetMasterVolume 會傳回 0.8。
- 當每個通道磁片區層級是透過 IChannelAudioVolume 介面中的方法來控制時,表示磁片區的純量一律相對於會話磁片區。 這表示具有最高磁片區的通道或通道數量為 1.0。 假設有兩個通道的範例,設定為 IAudioEndpointVolume::SetChannelVolumeLevelScalar的 0.8 和 0.4 磁片區, IChannelAudioVolume::GetChannelVolume 會指出 1.0 和 0.5 的磁片區。
如果裝置具有硬體磁片區和靜音控制項,則透過 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 方法會取得輸入或離開音訊端點裝置之音訊資料流程中指定通道的音量層級,以 decibel 為單位。 |
IAudioEndpointVolume::GetChannelVolumeLevelScalar GetChannelVolumeLevelScalar 方法會取得輸入或離開音訊端點裝置之指定音訊資料流程之指定通道的正規化音訊磁帶音量層級。 |
IAudioEndpointVolume::GetMasterVolumeLevel GetMasterVolumeLevel 方法會取得進入或離開音訊端點裝置之音訊資料流程的主要音量層級,以分貝為單位。 |
IAudioEndpointVolume::GetMasterVolumeLevelScalar GetMasterVolumeLevelScalar 方法會取得進入或離開音訊端點裝置之音訊資料流程的主要音量層級。 音量層級會以標準化的音訊磁帶值表示,範圍從 0.0 到 1.0。 |
IAudioEndpointVolume::GetMute GetMute 方法會取得進入或離開音訊端點裝置之音訊資料流程的靜音狀態。 |
IAudioEndpointVolume::GetVolumeRange GetVolumeRange 方法會取得進入或離開音訊端點裝置之音訊資料流程的音量範圍,以 decibel 為單位。 |
IAudioEndpointVolume::GetVolumeStepInfo GetVolumeStepInfo 方法會取得磁片區範圍中目前步驟的相關資訊。 |
IAudioEndpointVolume::QueryHardwareSupport QueryHardwareSupport 方法會查詢音訊端點裝置是否有其硬體支援的功能。 (IAudioEndpointVolume.QueryHardwareSupport) |
IAudioEndpointVolume::RegisterControlChangeNotify RegisterControlChangeNotify 方法會註冊用戶端的通知回呼介面。 |
IAudioEndpointVolume::SetChannelVolumeLevel SetChannelVolumeLevel 方法會設定輸入或離開音訊端點裝置之音訊資料流程指定通道的音量層級,以 decibel 為單位。 |
IAudioEndpointVolume::SetChannelVolumeLevelScalar SetChannelVolumeLevelScalar 方法會在進入或離開音訊端點裝置的音訊資料流程中,設定指定通道的正規化音訊磁帶音量層級。 |
IAudioEndpointVolume::SetMasterVolumeLevel SetMasterVolumeLevel 方法會設定進入或離開音訊端點裝置之音訊資料流程的主要音量層級,以分貝為單位。 |
IAudioEndpointVolume::SetMasterVolumeLevelScalar SetMasterVolumeLevelScalar 方法會設定進入或離開音訊端點裝置之音訊資料流程的主要音量層級。 音量層級會以標準化的音訊磁帶值表示,範圍從 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 |
標頭 | endpointvolume.h |