home/ atoms/ jitter-buffer-overflow-underflow

A jitter buffer must define policies for underflow (empty) and overflow (full) conditions

Any finite jitter buffer faces two failure modes. Underflow happens when the buffer empties before the next packet arrives — the player has nothing to output. The standard approach is to treat underflow like packet loss: emit silence or a comfort-noise substitute and let the application’s loss-concealment layer handle recovery. Overflow happens when packets arrive faster than they are consumed (or a burst overfills the buffer). Options are: (a) grow the buffer dynamically, increasing latency, or (b) drop excess packets. Dropping can be selective — some strategies prefer dropping duplicate packets, silence segments, or the redundant copy in forward-error-correction schemes. The choice depends on acceptable latency versus acceptable glitch rate for the application.

Examples

During a network blackout of 200ms, a 60ms buffer empties after 60ms of silence. The application emits comfort noise or a repeated packet fragment until data resumes. On a sudden burst, a fixed buffer drops the oldest packets to make room, causing a brief skip.

Assessment

Name the two boundary conditions a jitter buffer must handle. For each, describe one concrete mitigation strategy and identify one downstream effect on perceived audio quality.

“Regardless of how you set the size of the buffer, any buffer that has finite size needs to decide what to do both when it is empty and when it is full.”
corpus · sounding-smooth-with-jitter-buffers-jacques-heunis · chunk 3