Patent ID: 8914534

Claim:
A method of performing adaptive bitrate streaming of media on a playback device using a plurality of alternative streams of encoded video packaged within extensible binary markup language (EBML) container files, wherein each of the alternative streams of video is the same source video encoded using different encoding parameters in such a way that each portion of encoded video packed into an element of an EBML container file commences with an intra frame starting a closed Group of Pictures (GOP) and each of the EBML container files includes at least one element that specifies the encoding parameters of the stream contained within the EBML container file, and wherein the plurality of alternative streams of encoded video include alternative streams of encoded video encoded at different maximum bitrates, the method comprising: retrieving top level index data that identifies each of the plurality of EBML container files and describes at least the maximum bitrate of each of the alternative streams contained within the EBML container files; parsing the top level index data to obtain information identifying the plurality of EBML container files; requesting a portion of at least one of the EBML container files that contains the at least one element that specifies the encoding parameters of the stream contained within the EBML container file, wherein the at least one element that specifies the encoding parameters of the stream contained within the EBML container file specifies the frame height, frame width and sample aspect ratio of the video stream contained within the EBML container file; retrieving an index that references each element containing portions of encoded video within at least one of the EBML container files; utilizing the index to request portions of a first EBML container file that includes elements that contain portions of encoded video; receiving and buffering the requested elements; setting the frame height, frame width, and sample aspect ratio as specified by the at least one element in the requested portion of the at least one of the EBML container files prior to commencing decoding of the encoded video within the buffered elements; decoding the encoded video contained within the buffered elements utilizing the encoding parameters; measuring current streaming conditions by measuring the time taken to receive requested elements from the time at which the elements were requested; and selecting another of the EBML container files from which to retrieve elements containing portions of encoded video for decoding, where the selection is based upon the measured streaming conditions and the description of the bitrate of the alternative stream contained within the top level index data.