Fuchsia 提供的音訊串流音量有五項因素,
用途
「使用情形」可讓系統向使用者傳達音訊內容的意義。兩種支援用法MEDIA
:音樂和影片等媒體內容,以及用於幹擾使用者工作的 INTERRUPTION
用法。每項用量都有各自的音量控制項。
AudioRenderers
和 AudioCapturers
等音訊串流必須加上用途標記。
用量
體積是介於 0 到 1 之間的浮點值,其中 0 為靜音,1 是串流的最大音量。
以下列舉部分範例:
- 如果將
MEDIA
的音量設為 0.5,並將INTERRUPTION
設為 1.0,則標記為INTERRUPTION
的串流會在目前的音量設為MEDIA
串流時,播放音量減半。 - 如果
INTERRUPTION
設為 0,使用者就無法聽到所有標記為INTERRUPTION
的串流。
用量增加
為了瞭解串流, Fuchsia 音訊子系統必須轉譯音量設定,以在每個輸出裝置的 dbfs 中取得。由於裝置的進化範圍和需要取得的音量對應範圍不同,因此每部輸出裝置可能會有不同的值。
翻譯完畢後,系統就會套用用量的增益調整。增益調整是以獲得 dbfs 為單位的永久設定。
當兩個用量位於相同磁碟區時,這種做法就非常實用。
舉例來說,如果 MEDIA
和 INTERRUPTION
都設為 0.7,但 MEDIA
的調整幅度為 -10db,則標記為 INTERRUPTION
的串流不會像回應 MEDIA
的情況一樣大聲。
串流增益
還能直接在串流中套用其他增益調整。此增益調整值是當地值。
舉例來說,如果系統中有兩個 AudioRenderer
項目獲得調整 -5db,另一個 (如未修改),仍會對 0db 的免運算增益調整。
靜音狀態
串流或使用情況可能會遭到靜音。串流設為靜音時,系統不會向使用者輸出串流。忽略用量後,系統不會向使用者輸出任何含有該用量的串流。
靜音期間,系統會保留音量和增加其他設定等設定。靜音時,音量可能會與 0 不同,因為音量可能會在設為靜音的情況下發生變更,但串流仍然無法聲音播放。
取消靜音後,如果串流期間未經修改,串流將根據先前的音量設定繼續輸出。
提升調整項的考量
音量並不是精準的線性圖,而對於人耳而言,音量相對接近。
增益是對數,因此增減對音量的影響有很大的差異,具體取決於套用該值的串流目前音量。