IP Library Granted Patent US 8,433,814
Granted Patent B2
US 8,433,814 · App. 12/504,528 · Granted Apr 30, 2013

Digital content distribution system and method

Inventors: Anthony Neal Park (San Jose, CA); Neil D. Hunt (Los Altos, CA); Wei Wei (Fremont, CA)
Assignee: NETFLIX, Inc.
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 8,433,814
App. No.
12/504,528
Granted
Apr 30, 2013
Kind
B2
Abstract

One embodiment of the present invention sets forth a technique for selecting a content distribution network (CDN) comprising at least one content server, from a plurality of CDNs, and a playing digital content file from the CDN on a content player. Selecting the CDN is based on a rank order of CDNs, an assigned weight value for each CDN, and a bandwidth measured between the content player and each CDN. Advantageously, a given content player may select a CDN based on prevailing network and CDN loading conditions, thereby increasing overall robustness and reliability when downloading digital content file from a CDN.

Claims (56)

1. A method for downloading a digital content file from a content distribution network (CDN) residing within a content distribution system, the method comprising:

receiving a CDN list from a content directory server that includes one or more CDNs residing within the content distribution system and also includes a rank and a weight for each of the one or more CDNs;

selecting a CDN from the CDN list from which to download the digital content file based on a bandwidth test, wherein the selected CDN is capable of downloading a portion of the digital content file to a content player machine at a highest bit rate associated with the content player machine or has a weighted bandwidth greater than or equal to the weighted bandwidth associated with any other CDN included in the CDN list, the weighted bandwidth associated with a particular CDN being equal to the product of the bit rate at which the particular CDN can download the portion of the digital content file to the content player machine and the weight included in the CDN list for the particular CDN;

launching a buffering thread configured to download digital content associated with the digital content file from the selected CDN and to store the digital content in a content buffer; and

launching a playback thread configured to play the digital content stored in the content buffer.

2. The method of claim 1 , wherein the step of selecting comprises the steps of:

computing, for a first CDN in the CDN list, a first bit rate at which the first CDN can download the portion of the digital content file to the content player machine; and

determining whether the first bit rate is equal to the highest bit rate associated with the content player machine.

3. The method of claim 2 , wherein the first bit rate is equal to the highest bit rate associated with the content player machine, and the step of selecting further comprises the step of selecting the first CDN.

4. The method of claim 2 , wherein the first bit rate is not equal to the highest bit rate associated with the content player machine, and the step of selecting further comprises the steps of:

computing, for a second CDN in the CDN list, a second bit rate at which the second CDN can download the portion of the digital content file to the content player machine; and

determining whether the second bit rate is equal to the highest bit rate associated with the content player machine.

5. The method of claim 1 , wherein no CDN in the CDN list is capable of downloading the portion of the digital content file to the content player machine at the highest bit rate, and the step of selecting comprises the steps of:

for each CDN included in the CDN list, computing a bit rate at which the portion of the digital content file can be downloaded to the content player machine; and

for each CDN included in the CDN list, computing the weighted bandwidth associated with the CDN.

6. The method of claim 5 , wherein a first CDN in the CDN list has a weighted bandwidth that is greater than the weighted bandwidth associated with any other CDN included in the CDN list, and the step of selecting further comprises the step of selecting the first CDN.

7. The method of claim 5 , wherein two or more CDNs in the CDN list have the same weighted bandwidth, and the step of selecting further comprises the step of selecting a first CDN of the two or more CDNs that has the lowest relative rank set forth in the CDN list.

8. The method of claim 1 , wherein the buffering thread is further configured to continue downloading and storing the digital content associated with the digital content file until the buffering thread encounters a quit signal indicating that a buffer under-run condition has occurred or an end-of-stream signal indicating that the entire digital content file has been downloaded and played.

9. The method of claim 8 , wherein the playback thread is configured to:

continue playing the digital content stored in the content buffer until determining that the content buffer is empty; and

send the quit signal to the buffering thread, if the entire digital content file has not been played, or

send the end-of-stream signal to a content player management thread, if the entire digital content file has been played.

10. The method of claim 9 , wherein the step of selecting a CDN is repeated to select a new CDN from the CDN list, if the playback thread sends the quit signal to the buffering thread.

11. The method of claim 1 , wherein the digital content file comprises digital content associated with a movie or a television show.

12. The method of claim 1 , wherein a CDN from the CDN is selected based only on the highest bit rate associated with the content player device or only on the weighted bandwidths associated with the CDNs included in the CDN list.

13. A non-transitory computer-readable medium including instructions that, when executed by a processing unit, cause the processing unit to download a digital content file from a content distribution network (CDN) residing within a content distribution system, by performing the steps of:

receiving a CDN list from a content directory server that includes one or more CDNs residing within the content distribution system and also includes a rank and a weight for each of the one or more CDNs;

selecting a CDN from the CDN list from which to download the digital content file based on a bandwidth test, wherein the selected CDN is capable of downloading a portion of the digital content file to a content player machine at a highest bit rate associated with the content player machine or has a weighted bandwidth greater than or equal to the weighted bandwidth associated with any other CDN included in the CDN list, the weighted bandwidth associated with a particular CDN being equal to the product of the bit rate at which the particular CDN can download the portion of the digital content file to the content player machine and the weight included in the CDN list for the particular CDN;

launching a buffering thread configured to download digital content associated with the digital content file from the selected CDN and to store the digital content in a content buffer; and

launching a playback thread configured to play the digital content stored in the content buffer.

14. The non-transitory computer-readable medium of claim 13 , wherein the step of selecting comprises the steps of:

computing, for a first CDN in the CDN list, a first bit rate at which the first CDN can download the portion of the digital content file to the content player machine; and

determining whether the first bit rate is equal to the highest bit rate associated with the content player machine.

15. The non-transitory computer-readable medium of claim 14 , wherein the first bit rate is equal to the highest bit rate associated with the content player machine, and the step of selecting further comprises the step of selecting the first CDN.

16. The non-transitory computer-readable medium of claim 14 , wherein the first bit rate is not equal to the highest bit rate associated with the content player machine, and the step of selecting further comprises the steps of:

computing, for a second CDN in the CDN list, a second bit rate at which the second CDN can download the portion of the digital content file to the content player machine; and

determining whether the second bit rate is equal to the highest bit rate associated with the content player machine.

17. The non-transitory computer-readable medium of claim 13 , wherein no CDN in the CDN list is capable of downloading the portion of the digital content file to the content player machine at the highest bit rate, and the step of selecting comprises the steps of:

for each CDN included in the CDN list, computing a bit rate at which the portion of the digital content file can be downloaded to the content player machine; and

for each CDN included in the CDN list, computing the weighted bandwidth associated with the CDN.

18. The non-transitory computer-readable medium of claim 17 , wherein a first CDN in the CDN list has a weighted bandwidth that is greater than the weighted bandwidth associated with any other CDN included in the CDN list, and the step of selecting further comprises the step of selecting the first CDN.

19. The non-transitory computer-readable medium of claim 17 , wherein two or more CDNs in the CDN list have the same weighted bandwidth, and the step of selecting further comprises the step of selecting a first CDN of the two or more CDNs that has the lowest relative rank set forth in the CDN list.

20. The non-transitory computer-readable medium of claim 13 , wherein the buffering thread is further configured to continue downloading and storing the digital content associated with the digital content file until the buffering thread encounters a quit signal indicating that a buffer under-run condition has occurred or an end-of-stream signal indicating that the entire digital content file has been downloaded and played.

21. The non-transitory computer-readable medium of claim 20 , wherein the playback thread is configured to:

continue playing the digital content stored in the content buffer until determining that the content buffer is empty; and

send the quit signal to the buffering thread, if the entire digital content file has not been played, or

send the end-of-stream signal to a content player management thread, if the entire digital content file has been played.

22. The computer-readable medium of claim 13 , wherein a CDN from the CDN is selected based only on the highest bit rate associated with the content player device or only on the weighted bandwidths associated with the CDNs included in the CDN list.

23. A content player device configured to download a digital content file from a content distribution network (CDN) residing within a content distribution system, the content player device comprising:

a memory that includes a content buffer for storing downloaded digital content; and

a processing unit coupled to the memory and configured to:

receive a CDN list from a content directory server that includes one or more CDNs residing within the content distribution system and also includes a rank and a weight for each of the one or more CDNs,

select a CDN from the CDN list from which to download the digital content file based on a bandwidth test, wherein the selected CDN is capable of downloading a portion of the digital content file to the content player device at a highest bit rate associated with the content player device or has a weighted bandwidth greater than or equal to the weighted bandwidth associated with any other CDN included in the CDN list, the weighted bandwidth associated with a particular CDN being equal to the product of the bit rate at which the particular CDN can download the portion of the digital content file to the content player machine and the weight included in the CDN list for the particular CDN,

launch a buffering thread configured to download digital content associated with the digital content file from the selected CDN and to store the digital content in the content buffer, and

launch a playback thread configured to play the digital content stored in the content buffer on a display device coupled to the content player device.

24. The content player device of claim 23 , wherein a CDN from the CDN is selected based only on the highest bit rate associated with the content player device or only on the weighted bandwidths associated with the CDNs included in the CDN list.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 17, 2009
From: PARK, ANTHONY NEAL; HUNT, NEIL D.; WEI, WEI
To: NETFLIX, INC.
Reel/Frame 022969/0272 →
Continuity (1)
Related Publication 20110016225A1 · Jan 20, 2011