Daily Adaptive Bitrate

Unlock next-gen video quality with Daily Adaptive Bitrate, combining ultra-reliable calls and the best visual experience your network can offer—automatically adjusting in real-time to your changing needs.

Overview

Video calls must be reliable. This is a given.

With current-gen simulcast technology, to make calls ultra-reliable, you need to preconfigure conservative simulcast settings. This works, but it also means that your users may have a sub-par visual experience. If you increase the bitrate to send video at a higher resolution, then your users may experience a drop in call reliability.

The problem behind the quality-reliability trade-off is how traditional simulcast works—a sender has a predefined number of simulcast layers, usually three, where the settings are statically configured in advance of a call. If a network issue arises, the only available options are to reduce the frame rate or drop to a lower simulcast layer.

Let’s look at an example:

You configure your application with a conservative three-layer simulcast setting:

  • High layer:
    • Max bitrate: 700 kbps
    • Target resolution: 640x360
    • Max framerate: 30 fps
  • Medium layer:
    • Max bitrate: 200 kbps
    • Target resolution: 427x240
    • Max framerate: 15 fps
  • Low layer:
    • Max bitrate: 100 kbps
    • Target resolution: 320x180
    • Max framerate: 15 fps

A user joins a 1:1 a call from a WiFi network with speeds of 5 Mbps download, 1 Mbps upload. Upon joining the call, due to the network’s slow upload speed, the user is unable to send all three layers. The available options are to either: a) drop the framerate, or b) drop the highest layer.

As a result, this user will:

  • Send either 360p video @ 15 fps or 240p video @ 15 fps
  • Receive video 360p video @ 30 fps

Balancing reliability and quality

Daily’s Adaptive Bitrate offers a new solution to this problem. Instead of configuring static settings in advance of the call, Daily’s solution automatically adjusts to changing network conditions. When the network is constrained, the bitrate and resolution will be dropped to ensure that the call remains connected with enough throughput for audio. When there’s available bandwidth, the upload bitrate bitrate and resolution will be increased up to 2 Mbps at 720p resolution to deliver high quality video.

In 1:1 calls, only a single layer of video is sent, which saves bandwidth and allows for higher overall video quality.

In multi-party calls, the top layer is always adaptive based on network conditions and lower layers are used for smaller UI elements or as a fallback for poor network conditions.

Let’s revisit our example:

The user joining the 1:1 call doesn’t need to preconfigure their settings. Instead, they can just join the call and Daily Adaptive Bitrate will automatically adjust the settings. Given the 5 Mbps download, 1 Mbps upload network, the user will:

  • Send video at 540p @ 30 fps (around 800 kbps)
  • Receive video 720p @ 30 fps (around 2 Mbps)

Compared to the static configuration, this is a dramatic increase in call quality for the user without sacrificing call reliability.

Usage

  • If you're a Prebuilt customer, Adaptive Bitrate is enabled by default. No additonal configuration is needed. If you want to disable it, you can do so by setting the enable_adaptive_simulcast domain property (e.g. all calls) or room property (e.g. specific calls) to false.
  • If you’ve built a custom app, here are the minimum versions that you'll need to upgrade to in order to use Daily Adaptive Bitrate:
    • daily-js: 0.60.0 or later
    • react-native-daily-js: 0.61.0 or later
    • daily-android: 0.18.0 or later
    • daily-ios: 0.18.0 or later
  • Multi-party Adaptive Bitrate is now available to test. You can do so by setting the enable_multiparty_adaptive_simulcast domain property (e.g. all calls) or room property (e.g. specific calls) to true.

Demo

If you want to try this for yourself, the easiest way is to join a Daily Prebuilt call with one of your colleagues or friends.

Caveats

  • Daily Adaptive Bitrate works for camera video only.
  • When enabled for 1:1 calls and when a third participant joins the call, standard simulcast settings will be automatically enabled. When the call participant count drops back to two participants, Daily Adaptive Bitrate will be automatically re-enabled.
  • Daily Adaptive Bitrate works best on Chrome and Safari (both desktop and mobile). Firefox users can join the call, but they’ll send video using 3-layer simulcast.

Feedback

Let us know about your experience:

Suggested posts