diff --git a/assets/images/bola.png b/assets/images/bola.png new file mode 100644 index 0000000000..39649a1bc6 Binary files /dev/null and b/assets/images/bola.png differ diff --git a/pages/advanced/abr/bola-rule.md b/pages/advanced/abr/bola-rule.md new file mode 100644 index 0000000000..b2921cbd67 --- /dev/null +++ b/pages/advanced/abr/bola-rule.md @@ -0,0 +1,40 @@ +--- +layout: default +title: BolaRule +parent: Adaptive Bitrate Streaming +grand_parent: Advanced Features +--- + +# BolaRule + +## Description + +The `BolaRule` is a buffer based ABR rule. BOLA uses a bitrate selection function that maps the current buffer level to +the bitrate of the next segment to be downloaded. The illustration below shows an example of a bitrate selection +function for a video that is encoded in three bitrates (1000, 2500 and 5000 kbps) and has a buffer capacity of 18 +seconds. The thresholds for switching to a different quality are at 5 and 10 seconds of buffer. + +![ABR]({{site.baseurl}}/assets/images/bola.png) + +For additional details about the BOLA rule check out the following two paper: + +* [From Theory to Practice: Improving Bitrate Adaptation in the DASH Reference Player](https://dl.acm.org/doi/pdf/10.1145/3336497) +* [BOLA: Near-optimal bitrate adaptation for online videos](https://ieeexplore.ieee.org/document/7524428) + +## Example + +```js +player.updateSettings({ + streaming: { + abr: { + rules: { + bolaRule: { + active: true + } + } + } + } +}); +``` + + diff --git a/pages/advanced/abr/settings.md b/pages/advanced/abr/settings.md index 9d51aed42a..99c221979b 100644 --- a/pages/advanced/abr/settings.md +++ b/pages/advanced/abr/settings.md @@ -47,7 +47,7 @@ player.updateSettings({ | ABR Rule | Description | |:-----------------|:---------------------------------------| | `throughputRule` | [ThroughputRule](throughput-rule.html) | -| `bolaRule` | tbd | +| `bolaRule` | [BolaRule](bola-rule.html) | **Important**: If both `throughputRule` and `bolaRule` are enabled dash.js dynamically switches between those two rules based on the current buffer level. @@ -91,7 +91,7 @@ player.updateSettings({ | ABR Rule | Description | |:-------------------------|:--------------------------------------------------------| | `insufficientBufferRule` | [InsufficientBufferRule](insufficient-buffer-rule.html) | -| `switchHistoryRule` | tbd | +| `switchHistoryRule` | [SwitchHistoryRule](switch-history-rule.html) | | `droppedFramesRule` | [DroppedFramesRule](dropped-frames-rule.html) | | `abandonRequestsRule` | [AbandonRequestRule](abandon-request-rule.html) | | `l2ARule` | [L2ARule](l2a.html) |