×

Systems and methods for encoding source media in matroska container files for adaptive bitrate streaming using hypertext transfer protocol

  • US 9,883,204 B2
  • Filed: 01/25/2016
  • Issued: 01/30/2018
  • Est. Priority Date: 01/05/2011
  • Status: Active Grant
First Claim
Patent Images

1. A playback device configured to decode video from a plurality of alternative video streams with different maximum bitrates and packed in container files, wherein the container files are extensible binary markup language (EBML) files, the playback device comprising:

  • a processor configured via a playback application to decode at least one multimedia file containing an encoded source video;

    wherein the playback application further configures the processor to;

    parse a top level index to obtain information that identifies a plurality of EBML container files, wherein each EBML container file of the plurality of EBML container files comprises a set of alternative portions of a source video, wherein the set of alternative portions for each EBML container file is encoded using a different maximum bitrate that is associated with a particular alternative video stream using a different set of encoding parameters, wherein each alternative portion of a set of alternative portions is stored in a Cluster element of the EBML container and commences with an intra frame starting a closed Group of Pictures (GOP), wherein corresponding alternative portions in the sets of alternative portions of different EBML container files share a same time code, wherein the top level index describes at least the maximum bitrate of the particular alternative video stream associated with each EBML container file and is separate from the EBML container files;

    request a portion of at least one of the plurality of EBML container files based on the maximum bitrate of the particular alternative stream associated with the at least one EBML container file, wherein the requested portion comprises an element that specifies the set of encoding parameters used to encode the set of alternative portions of the source video contained within the EBML container file;

    retrieve an index from a Cues element within the at least one EBML container file, wherein a first index entry of the index references an initial byte for a first Cluster element comprising a first alternative portion and a second index entry of the index references an initial byte for a next Cluster element comprising a second alternative portion;

    infer a size of the given Cluster element from at least the first and second index entries of the Cues element within the at least one EBML container file;

    request at least a portion of the first alternative portion from the Cluster element of the at least one EBML container file by retrieving a byte range of the at least one EBML container file based on the inferred size and the initial byte of the first Cluster;

    receive and buffer the requested portion; and

    decode the encoded video contained within the buffered Cluster elements utilizing the set of encoding parameters.

View all claims
  • 5 Assignments
Timeline View
Assignment View
    ×
    ×