fix: add minimum AudioDataBytes floor for low-bandwidth servers

The auto-bitrate formula 'bandwidth/840 - 42' produces negative values
for servers with bandwidth below ~35 kbps. A negative AudioDataBytes
would cause the Opus encoder to be configured with zero or negative
bitrate, producing invalid output.

Add a floor of 10 bytes per frame (8 kbps), the minimum usable Opus
bitrate for intelligible voice.
This commit is contained in:
Brandon McGinty (deepseek)
2026-08-08 19:18:23 -04:00
committed by Brandon McGinty
parent 1bdf15e8e1
commit 64a3ea6c32
+7 -1
View File
@@ -9,10 +9,16 @@ import (
var autoBitrate = &Listener{
Connect: func(e *gumble.ConnectEvent) {
if e.MaximumBitrate != nil {
const safety = 5
const (
safety = 5
minBytes = 10 // minimum bytes per frame for usable Opus (8 kbps)
)
interval := e.Client.Config.AudioInterval
dataBytes := (*e.MaximumBitrate / (8 * (int(time.Second/interval) + safety))) - 32 - 10
if dataBytes < minBytes {
dataBytes = minBytes
}
e.Client.Config.AudioDataBytes = dataBytes
}
},