IP Library Granted Patent US 10,326,987
Granted Patent B2
US 10,326,987 · App. 15/453,714 · Granted Jun 18, 2019

Systems and methods for encoding alternative streams of video for use in adaptive bitrate streaming

Inventor: Auke Sjoerd van der Schaar (London, GB)
Assignee: DIVX, LLC
H04N19/115H04N19/156H04N19/187H04N19/30H04N21/23439H04N21/26258H04N21/6379H04N21/8456H04N19/70
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,326,987
App. No.
15/453,714
Granted
Jun 18, 2019
Kind
B2
Abstract

Systems and methods for encoding alternative streams for use in adaptive bitrate streaming based upon the delay of each stream in accordance with embodiments of the invention are described. One embodiment of the invention includes memory, and a processor configured by a source encoding application to: receive multimedia content, where the multimedia content includes source video data having a primary resolution and a primary sample aspect ratio; and encode the source video data as a set of alternative video streams, where: the alternative video streams have different maximum bitrates; and the alternative video streams are encoded to have an upper bound seek delay that is equal to or less than the upper bound seek delay of streams in the set of alternative video streams that are encoded at a higher maximum bitrate.

Claims (174)

1. A playback device for playing content from a plurality of alternative streams, the playback device comprising:

a set of one or more processors; and

a non-volatile storage containing an application for causing the set of one or more processors to perform steps of:

obtaining a top level index file identifying a plurality of alternative video streams and specifying a maximum bitrate for each of the plurality of alternative video streams, where the plurality of alternative video streams comprises a first and a second alternative video stream and the specified maximum bitrate of the second alternative video stream is higher than the specified maximum bitrate of the first alternative video stream;

during an initial startup period:

obtaining at least one network data rate measurement;

selecting the first alternative video stream based upon a comparison between the specified maximum bitrates for each of the plurality of streams and the at least one network data rate measurement;

requesting at least one chunk of the first alternative video stream;

storing the at least one chunk of the first alternative video stream in a buffer of the playback device; and

playing back at least one chunk of the first alternative stream stored in the buffer;

obtaining at least one additional network data rate measurement;

determining that the network data rate is greater than the specified maximum bitrate for the second alternative video stream based upon the at least one additional network data rate measurement;

when the network data rate is determined to be greater than the specified maximum bitrate for the second alternative video stream, requesting at least one chunk of the second alternative video stream;

when a minimum buffer level criterion is satisfied based upon a playback duration of chunks of video content stored in the buffer of the playback device:

obtaining at least one further network data rate measurement;

selecting a stream from the plurality of alternative video streams based upon a playback duration of chunks of video content stored in the buffer of the playback device by selecting a stream from the plurality of alternative video streams such that the playback duration of chunks of video content stored in the buffer of the playback device is sufficient to prevent buffer underflow during downloading and playback of at least one chunk of the selected video stream based upon the at least one further network data rate measurement;

requesting at least one chunk of the selected stream from the plurality of alternative video streams;

storing the at least one chunk of the selected stream from the plurality of alternative video streams in the buffer of the playback device; and

playing back the at least one chunk of the selected stream from the plurality of alternative video streams stored in the buffer.

2. The playback device of claim 1 , wherein the first alternative video stream has a lowest specified maximum bitrate of the plurality of alternative video streams.

3. The playback device of claim 1 , wherein the application causes the set of one or more processors to perform a step of determining that the playback duration of chunks of video content stored in the buffer of the playback device is sufficient to prevent buffer underflow during downloading and playback of the at least one chunk of the selected video stream based upon the at least one further network data rate measurement by:

determining that the playback duration of the chunks of video content stored in the buffer of the playback device is greater than a lower bound seek delay of a sequence of a number of chunks of the selected stream.

4. The playback device of claim 3 , wherein the application further causes the set of one or more processors to perform step of determining the lower bound seek delay by evaluating:

Delay

=

max

chunks

(

i

=

0

n

size

chunk

i

rate

-

(

n

-

1

)

·

duration

chunk

)

(

1

)

where n+1 is the number of chunks in the sequence of a number of chunks of the selected stream,

size chunk i is the size of chunk i from the sequence of a number of chunks of the selected stream,

duration chunk is the duration of the chunks (assumed to be the same in the above equation), and

rate is the network data rate.

5. The playback device of claim 1 , wherein the application causes the set of one or more processors to perform a step of determining that the playback duration of chunks of video content stored in the buffer of the playback device is sufficient to prevent buffer underflow during downloading and playback of the at least one chunk of the selected video stream based upon the at least one further network data rate measurement by:

determining that the playback duration of chunks of video content stored in the buffer of the playback device is greater than an upper bound seek delay of the selected stream.

6. The playback device of claim 5 , wherein the application further causes the set of one or more processors to perform a step of determining the upper bound seek delay of the selected stream by evaluating:

Delay

=

level

buffersize

+

level

rate

·

duration

chunk

rate

where level buffersize is the maximum buffer size constraint used in encoding the selected stream;

duration chunk is the time taken to playback a chunk from the selected stream;

level rate is the bitrate of the selected stream; and

rate is the network data rate.

7. The playback device of claim 1 , wherein the buffer level criterion further comprises a network data rate reliability criterion.

8. The playback device of claim 1 , wherein the application causes the set of one or more processors to perform the step of selecting the stream from the plurality of alternative video streams using a safety margin.

9. The playback device of claim 1 , wherein the application causes the set of one or more processors to perform the step of selecting the stream from the plurality of alternative video streams using a hysteresis criterion.

10. A method of playing back media content from a plurality of alternative streams on a playback device, comprising:

obtaining a top level index file identifying a plurality of alternative video streams, and specifying a maximum bitrate for each of the plurality of alternative video streams, where the plurality of alternative video streams comprises a first and a second alternative video stream and the specified maximum bitrate of the second alternative video stream is higher than the specified maximum bitrate of the first alternative video stream;

during an initial startup period:

obtaining at least one network data rate measurement;

selecting the first alternative video stream based upon a comparison between the specified maximum bitrates for each of the plurality of streams and the at least one network data rate measurement;

requesting at least one chunk of the first alternative video stream;

storing the at least one chunk of the first alternative video stream in a buffer of the playback device;

playing back at least one chunk of the first alternative stream stored in the buffer:

obtaining at least one additional network data rate measurement;

determining that the network data rate is greater than the specified maximum bitrate for the second alternative video stream based upon the at least one additional network data rate measurement; and

when the network data rate is determined to be greater than the specified maximum bitrate for the second alternative video stream, requesting at least one chunk of the second alternative video stream; and

when a minimum buffer level criterion is satisfied based upon a playback duration of chunks of video content stored in the buffer of the playback device:

obtaining at least one further network data rate measurement;

selecting a stream from the plurality of alternative video streams based upon a playback duration of chunks of video content stored in the buffer of the playback device by selecting a stream from the plurality of alternative video streams such that the playback duration of chunks of video content stored in the buffer of the playback device is sufficient to prevent buffer underflow during downloading and playback of at least one chunk of the selected video stream based upon the at least one further network data rate measurement;

requesting at least one chunk of the selected stream from the plurality of alternative video streams;

storing the at least one chunk of the selected stream from the plurality of alternative video streams in the buffer of the playback device; and

playing back the at least one chunk of the selected stream from the plurality of alternative video streams stored in the buffer.

11. The method of claim 10 , wherein the first alternative stream has a lowest specified maximum bitrate of the plurality of alternative video streams.

12. The method of claim 10 , wherein determining that the playback duration of chunks of video content stored in the buffer of the playback device is sufficient to prevent buffer underflow during downloading and playback of the at least one chunk of the selected video stream based upon the at least one further network data rate measurement is performed by:

determining that the playback duration of the chunks of video content stored in the buffer of the playback device is greater than a lower bound seek delay of a sequence of a number of chunks of the selected stream.

13. The method of claim 12 , wherein the lower bound seek delay is determined by evaluating:

Delay

=

max

chunks

(

i

=

0

n

size

chunk

i

rate

-

(

n

-

1

)

·

duration

chunk

)

(

1

)

where n+1 is the number of chunks in the sequence of a number of chunks of the selected stream,

size chunk i is the size of chunk i from the sequence of a number of chunks of the selected stream,

duration chunk is the duration of the chunks (assumed to be the same in the above equation), and

rate is the network data rate.

14. The method of claim 10 , wherein determining that the playback duration of chunks of video content stored in the buffer of the playback device is sufficient to prevent buffer underflow during downloading and playback of the at least one chunk of the selected video stream based upon the at least one further network data rate measurement is performed by:

determining that the playback duration of chunks of video content stored in the buffer of the playback device is greater than an upper bound seek delay of the selected stream.

15. The method of claim 14 , wherein the upper bound seek delay of the selected stream is determined by evaluating:

Delay

=

level

buffersize

+

level

rate

·

duration

chunk

rate

where level buffersize is the maximum buffer size constraint used in encoding the selected stream;

duration chunk is the time taken to playback a chunk from the selected stream;

level rate is the bitrate of the selected stream; and

rate is the network data rate.

16. The method of claim 10 , wherein the buffer level criterion further comprises a network data rate reliability criterion.

17. The method of claim 10 , wherein selecting the stream from the plurality of alternative video streams is performed using a safety margin.

18. The method of claim 10 , wherein selecting the stream from the plurality of alternative video streams is performed using a hysteresis criterion.

Assignments (5)
CHANGE OF PRINCIPAL PLACE OF BUSINESS Recorded Mar 5, 2019
From: DIVX, LLC
To: DIVX, LLC
Reel/Frame 050407/0104 →
CHANGE OF NAME Recorded Mar 5, 2018
From: DIVX CF HOLDINGS LLC
To: DIVX, LLC
Reel/Frame 045498/0560 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 13, 2018
From: SONIC IP, INC.; DIVX, LLC
To: DIVX CF HOLDINGS LLC
Reel/Frame 045310/0020 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 26, 2017
From: VAN DER SCHAAR, AUKE SJOERD
To: DIVX, LLC
Reel/Frame 042819/0871 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 26, 2017
From: DIVX, LLC
To: SONIC IP, INC.
Reel/Frame 042819/0890 →
Continuity (4)
Continuation 14696035 · Apr 24, 2015
Continuation 13341504 · Dec 30, 2011
Provisional Application 61430502 · Jan 6, 2011
Related Publication 20170230655A1 · Aug 10, 2017
Cited By (1)
US 12,610,044