Buffer-based ABR was introduced by Yin, Jindal et al. (Netflix paper, 2014) as an alternative to throughput estimation. The insight: the buffer level itself is an unbiased signal of whether you are downloading faster than you are playing. If the buffer is growing, you have headroom to upshift; if it is shrinking, you must downshift. There is no need to estimate throughput at all — the buffer is the integrating sensor.
The classical buffer-based algorithm defines a piecewise function from buffer level to chosen rendition: below 10 seconds of buffer, pick the lowest rendition; between 10 and 30 seconds, ramp up linearly; above 30 seconds, pick the highest. Variants change the thresholds and curve shape, but the structure is the same. The big win is that buffer-based ABR avoids the noise of throughput estimation on bursty networks — it ignores transient throughput drops and reacts only when the buffer actually shrinks.
In production most ABRs are hybrid. BOLA (Bola for "Buffer Occupancy based Lyapunov Algorithm", 2016) is a buffer-based algorithm with theoretical optimality bounds, used in dash.js. Netflix's production ABR combines buffer-based logic with throughput-aware safety constraints. Shaka and hls.js both ship hybrid algorithms by default. Pure throughput-based or pure buffer-based deployments are educational targets more than production reality.

