Drop the next inter frame when normalised buffer fullness
(bufferBits / windowBits) exceeds this value. Default 0.75 means
a frame is dropped once the leaky bucket has overshot by 3/4 of a
window — cheaper than encoding at max qi on a starved link, and
the canonical VC adaptation when the network can't drain bytes
fast enough. Set to a very large value to effectively disable.
Multiplier applied to the per-frame target budget when the next
frame is a keyframe. Typical VP8 keyframes are 4–8x larger than a
steady-state inter frame.
Upper bound on consecutive non-key drops, so a sudden drop in
available bandwidth doesn't freeze the receiver indefinitely. The
(maxConsecutiveDrops+1)’th frame is forced through even if the
buffer is still overfull, letting the encoder visibly catch up.
Maps normalised buffer fullness (bufferBits / windowBits) to qi
units. With the default of 16.0, a buffer that has overshot by one
full window worth of bits raises qi by 16 steps — enough to span
most of the minQi..maxQi range from a startQi mid-point as
fullness saturates at the ±2-window clamp inside update.
Record that a frame was dropped (no bits emitted). The buffer
still drains by one frame’s worth of target bits because the
real-time clock advanced even though we sent nothing.
Reset all in-flight controller state (leaky bucket, frame /
byte / drop counters, current qi back to startQi). The
configured bitrate / framerate / qi window are NOT touched. Pair
with Vp8Encoder.reset when restarting a session.
Change the target bitrate at runtime. Useful for ABR drivers
reacting to network feedback. The leaky bucket is NOT reset —
existing drift propagates into the new operating point so the
controller smoothly transitions. Throws if newBps <= 0.