1. Introduction
In the past decade, there has been a tremendous growth in streaming media applications, thanks to the fast development of network services and the remarkable growth of smart mobile devices. The total number of unique viewers of VoD in the US is more than 190 million in June 2015 and keeps increasing [1]. Adaptive HTTP streaming protocols such as HTTP Live Streaming (HLS) [2], Silverlight Smooth Streaming (MSS) [3], HTTP Dynamic Streaming (HDS) [4], and Dynamic Adaptive Streaming over HTTP (DASH) [5] achieve decoder-driven rate adaptation by providing multiple video streams of each content in a variety of bitrates and breaking these video streams into small HTTP file segments. The media information of each segment is stored in a manifest file, which is created at the server and transmitted to the client for the players to find the specification and location of each segment. Throughout the streaming process, the player adaptively switches among the available streams by selecting the corresponding segments based on the playback rate, the buffer condition and the instantaneous TCP throughput.