IP Library Granted Patent US 10,764,579
Granted Patent B2
US 10,764,579 · App. 16/443,254 · Granted Sep 1, 2020

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/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,764,579
App. No.
16/443,254
Granted
Sep 1, 2020
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 (128)

1. A playback device configured to perform adaptive bitrate streaming of media including a set of alternative video streams, the playback device comprising:

memory including a client application and a buffer; and

a processor, where the client application configures the processor to:

select a first video stream from a set of alternative video streams provided by a content server, where each stream in the set of alternative video streams is encoded to have an a different maximum bit rate and a lower bound seek delay;

request chunks of the first video stream from the content server via a network connection;

receive the chunks from the content server via the network connection;

store the requested chunks in the buffer;

playback the buffered chunks of the first video stream;

measure the channel data rate of the network connection;

obtain the lower bound seek delay of a second video stream from the first video stream;

determine that the playback duration of the amount of media downloaded from the second video stream during the time taken to playback buffered chunks of content from the first video stream is greater than or equal to the lower bound seek delay of the second video stream; and

select the second video stream from the set of alternative streams, based upon the determination that the playback duration of the amount of media downloaded from the second video stream during the time taken to playback buffered chunks of content from the first video stream is greater than or equal to the lower bound seek delay of the second video stream.

2. The playback device of claim 1 , wherein the client application configures the processor to measure the channel data rate of the network connection by configuring the processor to:

calculate the amount of data downloaded during a predetermined time interval;

observe a duration of any gaps during which no data is downloaded during the predetermined time interval;

calculate an effective time interval by subtracting the duration of any gaps from the predetermined time interval; and

divide the amount of data downloaded by the effective time interval to obtain a data rate measurement.

3. The playback device of claim 2 , wherein the client application further configures the processor to obtain a measured channel data rate by subtracting a predetermined safety margin from the data rate measurement.

4. The playback device of claim 1 , wherein:

the set of alternative streams of video are H.264 bitstreams that carry delay information in a SEI buffering message in an initial_cpb_removal_delay field; and

the client application configures the processor to select a second video stream from the set of alternative streams so that the playback duration of the amount of media downloaded from the second video stream during the time taken to playback buffered chunks of content from the first video stream is greater than or equal to a delay calculated using the value specified in the of the SEI buffering message in an initial_cpb_removal_delay field in the second stream.

5. The playback device of claim 1 , wherein:

a safe seek delay is included in each of the alternative video streams; and

the client application configures the processor to select a second video stream from the set of alternative streams so that the playback duration of the amount of media downloaded from the second video stream during the time taken to playback buffered chunks of content from the first video stream is greater than or equal to the safe seek delay.

6. The playback device of claim 5 , wherein the streams in the set of alternative streams of video are H.264 bitstreams that carry the safe seek delay in a SEI buffering message in an initial_cpb_removal_delay field.

7. The playback device of claim 1 , 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

)

where n 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.

8. A method of perform adaptive bitrate streaming of media including a set of alternative video streams, the method comprising:

selecting, using a playback device, a first video stream from a set of alternative video streams provided by a content server using a playback device, where each of the streams in the set of alternative video streams is encoded to have a different maximum bitrate and a lower bound seek delay;

requesting, using a playback device, chunks of the first video stream from the content server via a network connection using the playback device;

receiving, using a playback device, the chunks of the first video steam from the content server via the network connection;

storing, using a playback device, the requested chunks in a buffer of the playback device;

playing back, using a playback device, the buffered chunks of the first video stream using the playback device;

measuring, using a playback device, the channel data rate of the network connection using the playback device;

obtaining, using a playback device, the lower bound seek delay of a second video stream from the first video stream;

determining, using a playback device, that the playback duration of the amount of media downloaded from the second video stream during the time taken to playback buffered chunks of content from the first video stream is greater than or equal to the lower bound seek delay of the second video stream; and

selecting, using a playback device, the second video stream from the set of alternative streams using the playback device, based upon the determination that the playback duration of the amount of media downloaded from the second video stream during the time taken to playback buffered chunks of content from the first video stream is greater than or equal to the lower bound seek delay of the second video stream.

9. The method of claim 8 , wherein measuring the channel data rate of the network connection using the playback device further comprises:

calculating the amount of data downloaded during a predetermined time interval using the playback device;

observing a duration of any gaps during which no data is downloaded during the predetermined time interval using the playback device;

calculating an effective time interval by subtracting the duration of any gaps from the predetermined time interval using the playback device; and

dividing the amount of data downloaded by the effective time interval to obtain a data rate measurement using the playback device.

10. The method of claim 9 , wherein measuring the channel data rate of the network connection using the playback device further comprises obtaining a measured channel data rate by subtracting a predetermined safety margin from the data rate measurement.

11. The method of claim 8 , wherein:

the set of alternative streams of video are H.264 bitstreams that carry delay information in a SEI buffering message in a initial_cpb_removal_delay field; and

the client application configures the processor to select a second video stream from the set of alternative streams so that the playback duration of the amount of media downloaded from the second video stream during the time taken to playback buffered chunks of content from the first video stream is greater than or equal to a delay calculated using the value specified in the of the SEI buffering message in an initial_cpb_removal_delay field in the second stream.

12. The method of claim 8 , wherein:

a safe seek delay is included in each of the alternative video streams; and

the client application configures the processor to select a second video stream from the set of alternative streams so that the playback duration of the amount of media downloaded from the second video stream during the time taken to playback buffered chunks of content from the first video stream is greater than or equal to the safe seek delay.

13. The method of claim 12 , wherein the streams in the set of alternative streams of video are H.264 bitstreams that carry the safe seek delay in a SEI buffering message in a initial_cpb_removal_delay field.

14. The method of claim 8 , further comprising determining the lower bound seek delay by evaluating:

Delay

=

max

chunks

(

i

-

0

n

size

chunk

i

r

a

t

e

-

(

n

-

1

)

·

duration

chunk

)

where n 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 chunks (assumed to be the same in the above equation), and

rate is the network data rate.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 22, 2019
From: VAN DER SCHAAR, AUKE SJOERD
To: DIVX, LLC
Reel/Frame 050139/0688 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 22, 2019
From: DIVX, LLC
To: SONIC IP, INC.
Reel/Frame 050139/0692 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 22, 2019
From: SONIC IP, INC.
To: DIVX CF HOLDINGS LLC
Reel/Frame 050139/0703 →
CHANGE OF NAME Recorded Aug 22, 2019
From: DIVX CF HOLDINGS LLC
To: DIVX, LLC
Reel/Frame 050139/0722 →
Cited By (1)
US 12,610,044