Patent ID: 8321905

Claim:
A method implemented at a client computer that communicates with a media streaming server, the method comprising: receiving a first media stream from the media streaming server; storing the first media stream in a single buffer; playing buffered content of the first media stream from the single buffer; requesting, from the media streaming server, a switch from the first media stream to a second media stream at a specified switching time offset of the first media stream, the switching time offset corresponding to the buffered content of the first media stream being stored in the single buffer at a time of the requesting the switch; receiving the second media stream from the media streaming server in response to the request and before the buffered content of the first media stream is fully played, wherein initially received content of the second media stream corresponds to the buffered content of the first media stream; if the second media stream is received before playing of the buffered content of the first media stream has reached the specified switching time offset, replacing, in the single buffer, a portion of un-played buffered content of the first media stream starting at the specified switching time offset with a portion of the received second media stream, playing un-replaced buffered content of the first media stream from the single buffer, and playing, after said playing the un-replaced buffered content of the first media stream, buffered content of the second media stream from the single buffer starting at the specified switching time offset; and if the second media stream is received after playing of the buffered content of the first media stream has passed beyond the specified switching time offset, identifying a time offset corresponding to buffered content of the first media stream that is in the single buffer upon receipt of the second media stream, replacing, in the single buffer, a portion of un-played buffered content of the first media stream starting at the identified time offset with a portion of the received second media stream, playing un-replaced buffered content of the first media stream from the single buffer, and playing, after said playing the un-replaced buffered content of the first media stream, buffered content of the second media stream from the single buffer starting at the identified time offset.