Adaptive Bitrate (ABR) Manager

Presentation

  1. 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.
    1. Current defaults:
    2. Initial bitrate: 2.5 mb - for non-4k playback
    3. Initial bitrate for 4K playback: 13mb ie, 3/4 profile
  2. 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. 
  3. ABR manager filters "old" estimated bandwidth samples, using average recent bandwidth samples for its estimated effective bandwidth (threshold = 5s).
  4. ABR manager will jump when detecting big swing in available bandwidth (allowing quick skip up/down over other profiles).
  5. 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
  6. Upon initial tune, with healthy network, ramps to top profile will occur after playout of three fragments (typically 3*2s=6s) at initial profile
  7. 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-bitratespecify initial bitrate while tuning, or target bitrate while abr disabled (defaults to 2500000)
default-bitrate-4kspecify 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.


Bandwidth Throttling

To throttle the bandwidth, enable linux traffic control in the kernel using the tc utility. (This means one can change the bandwidth throttling fair easily from a terminal / script.)

In a terminal, initialize traffic control with a bandwidth of 15000kbit:

modprobe ifb
ifconfig ifb0 up
 
tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: protocol all u32 match u32 0 0 action mirred egress redirect dev ifb0
 
tc qdisc add dev ifb0 root handle 1: htb default 1
tc class add dev ifb0 parent 1: classid 1:1 htb rate 15000kbit
(Here it is connected via ethernet but if its connected on wifi replace eth0 with wlan0, change it according to the interface in the device)

To drop the bandwidth to 5000kbit:

tc class change dev ifb0 parent 1: classid 1:1 htb rate 5000kbit


Review to refer => RDKAAMP-371

  • No labels