US 12,250,404 B2
Systems and methods for performing adaptive bitrate streaming
Jason Braness, San Diego, CA (US); Auke Sjoerd van der Schaar, Los Angeles, CA (US); and Kourosh Soroushian, San Diego, CA (US)
Assigned to DIVX, LLC, San Diego, CA (US)
Filed by DIVX, LLC, San Diego, CA (US)
Filed on Aug. 16, 2024, as Appl. No. 18/807,838.
Application 18/807,838 is a continuation of application No. 18/301,075, filed on Apr. 14, 2023.
Application 18/301,075 is a continuation of application No. 17/240,827, filed on Apr. 26, 2021, granted, now 11,638,033, issued on Apr. 25, 2023.
Application 17/240,827 is a continuation of application No. 16/525,073, filed on Jul. 29, 2019, granted, now 10,992,955, issued on Apr. 27, 2021.
Application 16/525,073 is a continuation of application No. 16/155,840, filed on Oct. 9, 2018, granted, now 10,368,096, issued on Jul. 30, 2019.
Application 16/155,840 is a continuation of application No. 15/881,351, filed on Jan. 26, 2018, abandoned.
Application 15/881,351 is a continuation of application No. 15/005,990, filed on Jan. 25, 2016, granted, now 9,883,204, issued on Jan. 30, 2018.
Application 15/005,990 is a continuation of application No. 13/221,794, filed on Aug. 30, 2011, granted, now 9,247,312, issued on Jan. 26, 2016.
Claims priority of provisional application 61/430,110, filed on Jan. 5, 2011.
Prior Publication US 2024/0414369 A1, Dec. 12, 2024
Int. Cl. H04N 19/593 (2014.01); G11B 27/00 (2006.01); G11B 27/11 (2006.01); G11B 27/32 (2006.01); H04L 65/612 (2022.01); H04L 65/613 (2022.01); H04L 65/70 (2022.01); H04N 19/172 (2014.01); H04N 19/177 (2014.01); H04N 19/40 (2014.01); H04N 21/2343 (2011.01); H04N 21/2387 (2011.01); H04N 21/262 (2011.01); H04N 21/2662 (2011.01); H04N 21/426 (2011.01); H04N 21/435 (2011.01); H04N 21/44 (2011.01); H04N 21/442 (2011.01); H04N 21/6587 (2011.01); H04N 21/845 (2011.01); H04N 21/8543 (2011.01); H04N 21/854 (2011.01)
CPC H04N 19/593 (2014.11) [G11B 27/005 (2013.01); G11B 27/11 (2013.01); G11B 27/322 (2013.01); H04L 65/612 (2022.05); H04L 65/613 (2022.05); H04L 65/70 (2022.05); H04N 19/172 (2014.11); H04N 19/177 (2014.11); H04N 19/40 (2014.11); H04N 21/234345 (2013.01); H04N 21/23439 (2013.01); H04N 21/2387 (2013.01); H04N 21/26258 (2013.01); H04N 21/2662 (2013.01); H04N 21/42607 (2013.01); H04N 21/435 (2013.01); H04N 21/44004 (2013.01); H04N 21/44008 (2013.01); H04N 21/44209 (2013.01); H04N 21/6587 (2013.01); H04N 21/8455 (2013.01); H04N 21/8456 (2013.01); H04N 21/8543 (2013.01); H04N 21/85406 (2013.01)] 21 Claims
OG exemplary drawing
 
1. A method of performing adaptive bitrate streaming using a playback device that selects between different streams of encoded media during playback according to streaming conditions experienced by the playback device, the method comprising:
obtaining, using a playback device via a network, a top level index file for a piece of media content that includes an audio sequence and a video sequence, where the top level index file identifies:
alternative streams of encoded video that are available to the playback device, where:
each of the alternative streams of encoded video is an encoding of the video sequence;
each of the alternative streams of encoded video is encoded as a plurality of portions of encoded video; and
the alternative streams of encoded video are encoded at different bitrates; at least one stream of encoded audio, where:
each of the at least one stream of encoded audio is an encoding of the audio sequence; and
each of the at least one stream of encoded audio is encoded as a plurality of portions of encoded video; and
separate index files that contain information concerning the locations of container files that contain the identified alternative streams of encoded video and the identified at least one stream of encoded audio;
selecting, using the playback device, a first stream of encoded video to utilize to commence playback from the alternative streams of encoded video identified in the top level index file;
obtaining, using a playback device via the network, a first index file from the separate index files identified in the top level index file, where the first index file is an index file for the first stream of encoded video and contains information concerning the location of at least one container file that contains the first stream of encoded video;
obtaining, using the playback device via the network utilizing information from the first index file, a header for the first stream of encoded video;
configuring a video decoder within the playback device using information contained within the header for the first stream of encoded video;
selecting, using the playback device, a first stream of encoded audio to utilize to commence playback from the at least one stream of encoded audio identified in the top level index file;
obtaining, using a playback device via the network, an audio index file from the separate index files identified in the top level index file, where the audio index file is an index file for the first stream of encoded audio and contains information concerning the location of at least one container file that contains the first stream of encoded audio;
obtaining, using the playback device via the network utilizing information from the audio index file, a header for the first stream of encoded audio;
configuring an audio decoder within the playback device using information contained within the header for the first stream of encoded audio;
obtaining, using the playback device via the network utilizing information from the first index file, at least a first portion of encoded video from the first stream of encoded video;
obtaining, using the playback device via the network utilizing information from the audio index file, at least a first portion of encoded audio from the first stream of encoded audio;
commencing playback of the media content by:
decoding, using the video decoder within the playback device, encoded video within the at least a first portion of encoded video from the first stream of encoded video; and
decoding, using the audio decoder within the playback device, encoded audio within the at least a first portion of encoded audio from the first stream of encoded audio;
as the playback device obtains additional portions of encoded media, evaluating at the playback device, current streaming conditions experienced by the playback device;
selecting, using the playback device based upon the current streaming conditions experienced by the playback device, a second stream of encoded video from the alternative streams of encoded video identified in the top level index file;
storing, within memory of the playback device, the index file and the information contained within the header for the first stream of encoded video used to configure the video decoder;
obtaining, using the playback device via the network, a second index file from the separate index files identified in the top level index file, where the second index file is an index file for the second stream of encoded video and contains the locations of at least one container file that contains the plurality of portions of encoded video of the second stream of encoded video;
obtaining, using the playback device via the network utilizing information from the second index file, a header for the second stream of encoded video;
configuring a video decoder within the playback device using information contained within the header for the second stream of encoded video;
obtaining, using the playback device via the network utilizing information from the second index file, at least one portion of encoded video from the second stream of encoded video;
obtaining, using the playback device via the network utilizing information from the audio index file, at least one additional portion of encoded audio from the first stream of encoded audio; and
continuing playback of the media content by:
decoding, using the video decoder within the playback device, encoded video within the at least one portion of encoded video from the second stream of encoded video; and
decoding, using the audio decoder within the playback device, encoded audio within the at least one additional portion of encoded audio from the first stream of encoded audio.