AAMP Adaptive Bitrate Behavior
Adaptive Bitrate (ABR) Manager
- Initial bitrate is configurable for 4k and non-4k, based on a desired target bitrate. The profile with smallest bitrate >= that target is picked. If target bitrate is higher than all available bitrates, top profile is picked.
- Current defaults:
- Initial bitrate: 2.5 mb – for non-4k playback
- Initial bitrate for 4K playback: 13mb ie, 3/4 profile
- As each fragment is downloaded, an estimated available bandwidth sample is computed and shared with ABR manager (total bytes / download time); configuration exists to exclude “too small” fragments from this sampling.
- ABR manager filters “old” estimated bandwidth samples, using average recent bandwidth samples for its estimated effective bandwidth (threshold = 5s).
- ABR manager will jump when detecting big swing in available bandwidth (allowing quick skip up/down over other profiles).
- ABR manager will more conservatively accommodate small shifts in available bandwidth (to avoid flipping up/down if we’re on the edge); requiring multiple satisfying samples before ramping up/down in this case
- Upon initial tune, with healthy network, ramps to top profile will occur after playout of three fragments (typically 3*2s=6s) at initial profile
- A “useNewABR” is recently introduced, to use a hybrid buffering/throughput model. This takes into account buffer health to avoid unnecessary rampdowns when buffer is healthy, along with a mechanism to escape “ABR valley” when buffers are healthy but throughput as measured appears poor.
Configuration/defaults:
abr-cache-life=<x in sec> lifetime value for abr cache for network bandwidth calculation(default 5 sec)
abr-cache-length=<x> length of abr cache for network bandwidth calculation (default 3)
abr-cache-outlier=<x in bytes> Outlier difference which will be ignored from network bandwidth calculation(default 5MB)
abr-nw-consistency=<x> Number of checks before profile incr/decr by 1.This is to avoid frequent profile switching with network change(default 2)
abr-skip-duration=<x> minimum duration of fragment to be downloaded before triggering abr (default 6 sec).
ABR Override
with VBN build we can create/use /opt/aamp.cfg to force a specific profile. The relevant configuration options are:
abr | disable abr mode (defaults on) |
default-bitrate | specify initial bitrate while tuning, or target bitrate while abr disabled (defaults to 2500000) |
default-bitrate-4k | specify initial bitrate while tuning 4K contents, or target bitrate while abr disabled for 4K contents (defaults to 13000000) |
For example:
“`abr
default-bitrate=1200000“`
Will disable abr and use the explicitly specified bitrate.