Deliver consistent quality with CAE
March 7, 2019

Does playback of VBR streams generated by CAE deliver high QoE? Yes.

Pratima Ashok Dhuldhule (Senior Engineer, Advanced Video) & Darshan Datt K. S. (Manager, Advanced Video)

Have you ever wondered if VBR streams resulting from CAE negatively impact QoE, in comparison with CBR stream playback? Read on to quash those thoughts. By using the right representation or manifest file, you can deliver the best QoE, thus motivating viewers to keep coming back for more content.

ABR, CAE and VBR

Adaptive Bitrate (ABR) streaming has become ubiquitous in video streaming industry owing to the benefits it offers such as reduced buffering, quick start time and good QoE for both high-end and low-end internet connections

While ABR streaming does pose some challenges, users and developers can overcome these by leveraging Content Adaptive Encoding (CAE). CAE allocates the required bits to video based on content complexity, thus achieving the best trade-off between ‘encode-quality’ and ‘bitrate/bandwidth/storage-space’.

Read our previous blog, for more insights on Content Adaptive Encoding (CAE).

CAE solutions typically result in Variable Bitrate (VBR) streams, in contrast to traditional DVB compliant broadcast encoders that generate Constant Bitrate (CBR) streams. Now, one of the top concerns that has emerged is with regard to the Quality of Experience (QoE) of VBR stream playback as against CBR stream playback.

The Playback QoE Debate

QoE in the case of ABR playback depends not only on the best encode-quality but also on fewer number of switches between ABR representations during playback.

There is a perception in the industry that VBR streams produced by CAE introduce higher number of representation-switches due to bitrate variation, thereby reducing the playback QoE.

In this blog, we clear this perception by showing you how VBR streams result in similar or better switching than traditional CBR streams ‘by using an appropriate representation or manifest file’.

Ittiam Experiments with Popular Players

We compared the following design choices by studying the number of representation-switches made when playing streams through widely used players (such as VideoJS and DashJS).

  • VBR encoding vs CBR encoding
  • Target bitrate represented VBR streams vs peak bitrate represented VBR streams

Common setup details

  • Chunk duration: 10 seconds.
  • ABR representation: Captured in Table 1.
ABR Resolution Peak Bitrate
(kbps)
Average Bitrate
(kbps)
 ABR1  1920×1080  4000  2900
 ABR2  1920×1080  3000  2100
 ABR3  1280×720  2000  1300
 ABR4  1280×720  1000  700


Table 1: ABR representations used for validation

  • Tool used for bitrate throttling: Chrome’s “inspect element” or Charles Debugging Proxy for Safari
  • Encoder used for encoding streams: x264
  • Encoding modes: CBR and VBR (in addition to the encoder, THINKode – Ittiam’s ML based CAE solution was used for generating VBR streams )
  • Container formats: HLS and DASH

Figure 1 represents the segment level bitrates for CBR and VBR streams.

Figure 1: Bitrate Representation for VBR and CBR Streams

Experiment 1: Peak bitrate represented VBR vs CBR streams

Observations with DashJS player
Note: The ABR strategy of DashJS player was set to default Dynamic strategy. (This switches between Bola and Throughput strategy to leverage the strengths of both. Read about these strategies here.)

  • Number of representation switches observed for VBR stream: 1
  • Number of representation switches for CBR stream: 1

Figure 2 provides the actual representations chosen by the DashJS player.

Figure 2: VBR vs. CBR Streams on DashJS Player

DashJS uses 1000kbps as initial bandwidth and hence downloaded ABR4 as the first segment for both VBR and CBR streams. The number of switches remained the same for both streams during the entire playback.

Observations with VideoJS player

  • Number of representation switches for VBR: 2
  • Number of representation switches for CBR: 2

Figure 3 provides the actual representations chosen by the VideoJS player

THINKode VBR stream vs CBR

Figure 3: VBR vs. CBR Streams on VideoJS Player

The first bitrate resolution chosen by VideoJS player is always with respect to assumed initial 4Mbps bandwidth. Therefore, the player started with ABR2 and switched to ABR4 in both VBR and CBR streams. Though the number of representation switches remained the same, it is worthwhile to note that in case of CBR, the player continued to play ABR4 stream for a longer duration before settling at ABR3. However
with VBR, the player quickly switched to ABR3.

Observations with Safari browser

  • Number of representation switches for VBR: 0
  • Number of representation switches for CBR: 1
VBR vs CBR stream playback

Figure 4: VBR vs. CBR Streams on Safari Player

The Safari player always chooses the first representation from the ABR list in the manifest file for initial segment download. We kept the ABR2 stream as the first representation in the HLS manifest file.

While both the streams started with ABR2, the CBR stream quickly switched to ABR3 as the player found this the safe representation considering available bandwidth and buffer level. As for VBR stream, player continued with ABR2 due to optimal buffer levels resulting from low bitrate of first few segments – a behavior expected from players which continuously download segments without waiting for the buffer level to reduce.

Experiment: Peak bitrate represented VBR vs average bitrate represented VBR

Observations with DashJS player

  • Number of representation switches observed for peak bitrate: 1
  • Number of representation switches observed for average bitrate: 1

Figure 5 provides the actual representations chosen by the DashJS player.

Figure 5: Peak vs. Average Bitrate in Manifest on DashJS

DashJS player considers throughput as well as buffer level to choose a bitrate representation.

The number of representation-switches for both cases remained the same. The player also chose higher quality representation for average bitrate represented VBR stream based on the represented bitrate.

Observations with VideoJS player

  • Number of representation switches observed for peak bitrate: 2
  • Number of representation switches observed for average bitrate: 3

Figure 6 provides the actual representations chosen by the VideoJS player.

CAE and VBR

Figure 6: Peak vs. Average Bitrate in Manifest on VideoJS

There were higher representation-switches for average bitrate represented stream.

For peak bitrate represented streams, the segment bitrate can never cross the peak bitrate. Therefore, the player can smoothly play the ABR steam with lesser representation-switches.

Observations with Safari player

  • Number of representation switches observed for peak bitrate: 0
  • Number of representation switches observed for average bitrate: 4

Figure 7 provides the actual representations chosen by the Safari player.

VBR stream playback

Figure 7: Peak vs. Average Bitrate in Manifest on Safari

The Safari player behavior was similar to VideoJS player. The number of representation-switches for average bitrate represented stream was much higher than that of peak bitrate represented stream.

As mentioned earlier, for peak bitrate represented streams, the segment bitrate can never cross the peak bitrate. The player can therefore smoothly play the ABR steam with lesser representation-switches.

Conclusion

Our experiments clearly show that with the most popular ABR players, peak bitrate represented VBR streams provide similar QoE as traditional CBR streams or even better in some cases.

This is a definite proof that we can confidently leverage CAE solutions such as Ittiam’s THINKode to deliver the best ‘QoE’, even as we achieve the best trade-off between encode-quality and bitrate/bandwidth/storage-space.