Documentation
¶
Overview ¶
Package playoutdelay implements the WebRTC playout-delay RTP header extension (http://www.webrtc.org/experiments/rtp-hdrext/playout-delay).
Chrome's adaptive jitter buffer is one-way: it grows when packet timing gets jittery (e.g. the JetKVM H.264 encoder emitting variable-size frames during high-motion content like fullscreen YouTube on the host) and stubbornly refuses to shrink back, leaving the "Playback Delay" graph stuck at hundreds of milliseconds until the page is reloaded. Receiver- side knobs like jitterBufferTarget / playoutDelayHint / setMinimumJitterBufferDelay all cap the steady-state floor but cannot pull a ratcheted buffer back down.
The playout-delay extension is the sender-side counterpart: each outgoing RTP packet carries the desired minimum and maximum playout delay (in 10 ms increments). Chrome honours it as an authoritative override of its adaptive logic. We send min=max=0 on every video packet, which keeps the receiver pinned at the absolute floor.
Reference: https://webrtc.googlesource.com/src/+/HEAD/docs/native-code/rtp-hdrext/playout-delay/README.md
Index ¶
Constants ¶
const URI = "http://www.webrtc.org/experiments/rtp-hdrext/playout-delay"
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Factory ¶
Factory creates playout-delay interceptors with the given min/max bounds in 10 ms units. JetKVM uses min=max=0 — no buffering beyond decoder needs.
func NewFactory ¶
func NewFactory() *Factory
func (*Factory) NewInterceptor ¶
func (f *Factory) NewInterceptor(_ string) (interceptor.Interceptor, error)