  In conventional HTTP-based adaptive streaming (HAS), a video source is
encoded at multiple levels of constant bitrate representations, and a client
makes its representation selections according to the measured network
bandwidth. While greatly simplifying adaptation to the varying network
conditions, this strategy is not the best for optimizing the video quality
experienced by end users. Quality fluctuation can be reduced if the natural
variability of video content is taken into consideration. In this work, we
study the design of a client rate adaptation algorithm to yield consistent
video quality. We assume that clients have visibility into incoming video
within a finite horizon. We also take advantage of the client-side video
buffer, by using it as a breathing room for not only network bandwidth
variability, but also video bitrate variability. The challenge, however, lies
in how to balance these two variabilities to yield consistent video quality
without risking a buffer underrun. We propose an optimization solution that
uses an online algorithm to adapt the video bitrate step-by-step, while
applying dynamic programming at each step. We incorporate our solution into
PANDA -- a practical rate adaptation algorithm designed for HAS deployment at
scale.
