IP Library Granted Patent US 9,426,500
Granted Patent B2
US 9,426,500 · App. 14/156,153 · Granted Aug 23, 2016

Optimal quality adaptive video delivery

Inventor: Fenglin Yin (Lexington, MA)
Assignee: Verizon and Redbox Digital Entertainment Services, LLC
H04N21/23439H04N21/2385H04N21/23805H04N21/234345H04N21/25833H04N21/25858H04N21/26216H04N21/426H04N21/4424H04N21/47202H04N21/8193H04N21/8456H04N21/8586
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 9,426,500
App. No.
14/156,153
Granted
Aug 23, 2016
Kind
B2
Abstract

A method, performed by a computer device, may include receiving a request for a video asset from a user device, wherein the request includes information identifying a device type associated with the user device and a processor load associated with the user device. The method may further include determining a bandwidth capacity associated with a connection to the user device; selecting a codec and a quality level for the requested video asset based on the device type, the processor load, and the determined bandwidth capacity; identifying a Uniform Resource Identifier associated with the selected codec and quality level for the requested video asset; and providing the identified Uniform Resource Identifier to the user device.

Claims (88)

1. A method, performed by a computer device, the method comprising:

receiving, by the computer device via a network, a request for a video asset from a user device, wherein the request includes information identifying a device type associated with the user device and a processor load associated with the user device, wherein the computer device includes a database that stores Uniform Resource Identifiers for particular video assets;

obtaining, by the computer device, information identifying a last viewed position for the requested video asset for a user account associated with the user device;

identifying, by the computer device, a segment of the requested video asset based on the obtained information identifying the last viewed position for the requested video asset;

determining, by the computer device, a bandwidth capacity associated with a connection to the user device;

selecting, by the computer device, a codec and a quality level for the requested video asset based on the device type, the processor load, and the determined bandwidth capacity;

identifying, by the computer device, a Uniform Resource Identifier associated with the selected codec and quality level for the requested video asset using the database, wherein identifying the Uniform Resource Identifier associated with the selected codec and quality level for the requested video asset includes:

identifying a segment Uniform Resource Identifier associated with the selected codec and quality level for the identified segment of the requested video asset;

providing, by the computer device via the network, the identified segment Uniform Resource Identifier to the user device;

receiving, by the computer device via the network, a request for a next segment of the requested video asset from the user device, wherein the request for the next segment includes

processor load information that indicates that the processor load associated with the user device has changed;

selecting, by the computer device, a different codec for the requested video asset, based on the processor load information that indicates that the processor load associated with the user device has changed;

identifying, by the computer device, a different Uniform Resource Identifier associated with the different codec for the requested video asset using the database; and

providing, by the computer device via the network, the identified different Uniform Resource Identifier to the user device.

2. The method of claim 1 , wherein selecting the codec and the quality level includes selecting a Moving Picture Experts Group Four (MPEG-4) codec or selecting a High Efficiency Video Coding (HEVC) codec.

3. The method of claim 1 , wherein selecting the codec and the quality level includes:

determining that the device type is not configured to handle a High Efficiency Video Coding (HEVC) codec; and

selecting a Moving Picture Experts Group Four (MPEG-4) codec, in response to determining that the device type is not configured to handle the HEVC codec.

4. The method of claim 1 , wherein selecting the codec and the quality level includes:

determining that the processor load is higher than a processor load threshold associated with a High Efficiency Video Coding (HEVC) codec; and

selecting a Moving Picture Experts Group Four (MPEG-4) codec, in response to determining that the processor load is higher than the processor load threshold associated with the HEVC codec.

5. The method of claim 1 , wherein selecting the codec and the quality level includes:

dynamically selecting the quality level based on the determined bandwidth capacity, wherein the quality level includes one or more of:

a particular color depth;

a particular chroma subsampling rate;

a particular frame rate; or

a particular bit rate.

6. The method of claim 1 , further comprising:

determining that the requested video asset corresponds to a live transmission;

determining a time to fetch a manifestation file for the requested video asset; and

wherein selecting the codec and the quality level is further based on the determined time to fetch the manifestation file for the requested video asset.

7. The method of claim 1 , wherein selecting the different codec for the requested video asset includes changing from one of a High Efficiency Video Coding (HEVC) codec and a Moving Picture Experts Group Four (MPEG-4) codec to another one of the HEVC codec and the MPEG-4 codec.

8. A computer device comprising:

logic configured to:

receive, via a network, a request for a video asset from a user device, wherein the request includes information identifying a device type associated with the user device and a processor load associated with the user device, wherein the computer device includes a database that stores Uniform Resource Identifiers for particular video assets;

obtain information identifying a last viewed position for the requested video asset for a user account associated with the user device;

identify a segment of the requested video asset based on the obtained information identifying the last viewed position for the requested video asset;

determine a bandwidth capacity associated with a connection to the user device;

select a codec and a quality level for the requested video asset based on the device type, the processor load, and the determined bandwidth capacity;

identify a Uniform Resource Identifier associated with the selected codec and quality level for the requested video asset using the database, wherein, when identifying the Uniform Resource Identifier associated with the selected codec and quality level for the requested video asset, the logic is further configured to:

identify a segment Uniform Resource Identifier associated with the selected codec and quality level for the identified segment of the requested video asset;

provide, via the network, the identified segment Uniform Resource Identifier to the user device;

receive, via the network, a request for a next segment of the requested video asset from the user device, wherein the request for the next segment includes

processor load information that indicates that the processor load associated with the user device has changed;

select a different codec for the requested video asset, based on the processor load information that indicates that the processor load associated with the user device has changed;

identify a different Uniform Resource Identifier associated with the different codec for the requested video asset using the database; and

provide, via the network, the identified different Uniform Resource Identifier to the user device.

9. The computer device of claim 8 , wherein when selecting the codec and the quality level, the logic is further configured to:

select a Moving Picture Experts Group Four (MPEG-4) codec or selecting a High Efficiency Video Coding (HEVC) codec.

10. The computer device of claim 8 , wherein when selecting the codec and the quality level, the logic is further configured to:

determine that the device type is not configured to handle a High Efficiency Video Coding (HEVC) codec; and

select a Moving Picture Experts Group Four (MPEG-4) codec, in response to determining that the device type is not configured to handle the HEVC codec.

11. The computer device of claim 8 , wherein when selecting the codec and the quality level, the logic is further configured to:

determine that the processor load is higher than a processor load threshold associated with a High Efficiency Video Coding (HEVC) codec; and

select a Moving Picture Experts Group Four (MPEG-4) codec, in response to determining that the processor load is higher than the processor load threshold associated with the HEVC codec.

12. The computer device of claim 8 , wherein when selecting the codec and the quality level, the logic is further configured to:

select the quality level based on the determined bandwidth capacity, wherein the quality level includes one or more of:

a particular color depth;

a particular chroma subsampling rate;

a particular frame rate; or

a particular bit rate.

13. The computer device of claim 8 , wherein the logic is further configured to:

determine that the requested video asset corresponds to a live transmission;

determine a time to fetch a manifestation file for the requested video asset; and

wherein the logic is further configured to select the codec and the quality level based on the determined time to fetch the manifestation file for the requested video asset.

14. A non-transitory computer-readable medium storing instructions executable on one or more processors, the non-transitory computer-readable medium comprising:

one or more instructions to receive, by a computer device and via a network, a request for a video asset from a user device, wherein the request includes information identifying a device type associated with the user device and a processor load associated with the user device, wherein the computer device includes a database that stores Uniform Resource Identifiers for particular video assets;

one or more instructions to obtain information identifying a last viewed position for the requested video asset for a user account associated with the user device;

one or more instructions to identify a segment of the requested video asset based on the obtained information identifying the last viewed position for the requested video asset;

one or more instructions to determine a bandwidth capacity associated with a connection to the user device;

one or more instructions to select a codec and a quality level for the requested video asset based on the device type, the processor load, and the determined bandwidth capacity;

one or more instructions to identify a Uniform Resource Identifier associated with the selected codec and quality level for the requested video asset using the database, wherein, the one or more instructions to identify the Uniform Resource Identifier associated with the selected codec and quality level for the requested video asset further include:

one or more instructions to identify a segment Uniform Resource Identifier associated with the selected codec and quality level for the identified segment of the requested video asset;

one or more instructions to provide, via the network, the identified segment Uniform Resource Identifier to the user device;

one or more instructions to receive, via the network, a request for a next segment of the requested video asset from the user device, wherein the request for the next segment includes

processor load information that indicates that the processor load associated with the user device has changed;

one or more instructions to select a different codec for the requested video asset, based on the processor load information that indicates that the processor load associated with the user device has changed;

one or more instructions to identify a different Uniform Resource Identifier associated with the different codec for the requested video asset using the database; and

one or more instructions to provide, via the network, the identified different Uniform Resource Identifier to the user device.

15. The non-transitory computer-readable medium of claim 14 , wherein the one or more instructions to select the codec and the quality level for the requested video asset include:

one or more instructions to determine that the processor load is higher than a processor load threshold associated with a High Efficiency Video Coding (HEVC) codec; and

one or more instructions to select a Moving Picture Experts Group Four (MPEG-4) codec, in response to determining that the processor load is higher than the processor load threshold associated with the HEVC codec.

16. The method of claim 1 , wherein the processor load information includes information identifying a number of active central processing units (CPUs).

17. The method of claim 1 , wherein the processor load information includes at least one of:

a percent capacity for a particular processor;

a number of threads being handled by the particular processor; or

a queue length associated with the particular processor.

18. The method of claim 1 , wherein the processor load information includes information identifying applications running on the user device.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 26, 2018
From: VERIZON AND REDBOX DIGITAL ENTERTAINMENT SERVICES, LLC
To: VERIZON PATENT AND LICENSING INC.
Reel/Frame 046977/0259 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2014
From: YIN, FENGLIN
To: VERIZON AND REDBOX DIGITAL ENTERTAINMENT SERVICES, LLC
Reel/Frame 031978/0163 →
Continuity (1)
Related Publication 20150201225A1 · Jul 16, 2015