Patent ID: 8874634

Claim:
A method for managing adaptive streaming of data in a receiving device including data received from a server, wherein the server includes one or more streams of data, each stream of data including one or more data segments, each data segment being encoded into one of a plurality of different versions, each of the plurality of different versions having a different fidelity level, the method comprising: requesting a data stream using a buffer with an initial maximum window size for buffering received data associated with the requested data stream, wherein the initial data segments received as part of the data stream have a first fidelity level; receiving into the buffer one or more data segments associated with the data stream; removing from the buffer one or more data segments for use by a processor of the receiving device; determining a current window size of the buffer, wherein the current window size is equal to the maximum window size less any data segments which have been received that have not been removed from the buffer for use by the processor; comparing the current window size to a predetermined threshold; and increasing the maximum window size, wherein an updated maximum window size is increased to be larger than the initial maximum window size, and initiating a buffer size increase timer having a current timer value and a timer expiration value, when the current window size is less than the predetermined threshold; wherein, while the updated maximum window size is larger than the initial maximum window size and the current timer value of the buffer size increase timer is less than the timer expiration value, at regular intervals determining a present current window size and adjusting the updated maximum current window size so as to minimally maintain the current window size of at least the predetermined threshold; wherein the buffer size increase timer is terminated when the updated maximum window size is adjusted so as to be no longer larger than the initial maximum window size prior to current timer value of the buffer size increase timer reaching the timer expiration value; and wherein the bit rate level of subsequently received data segments is adjusted to a second fidelity level less than the first fidelity level when the buffer size increase timer reaches the timer expiration value.