Adaptive Bitrate (ABR) selects which rendition to fetch next. Three families dominate: throughput-based, buffer-based, hybrid (BOLA, MPC). The choice shapes how the player handles network changes and how it trades stalls for quality.
Throughput-based (rate-based)
Pick highest rendition whose bitrate ≤ recent throughput × safety factor (~0.8). Simple, jittery — drops quality fast on transient slowdowns. Used in older HLS players.
Buffer-based (BOLA)
Pick rendition based on current buffer occupancy. High buffer → safe to try higher quality. Low buffer → conservative. Less jittery; can underutilize bandwidth.
Hybrid / MPC
Optimize trajectory: predict future throughput, choose rendition to maximize total quality minus stall penalty. Implemented in DASH-IF reference. Most modern players (Shaka, dash.js) ship a hybrid.