IP Library Granted Patent US 9,917,874
Granted Patent B2
US 9,917,874 · App. 12/887,483 · Granted Mar 13, 2018

Enhanced block-request streaming using block partitioning or request controls for improved client-side handling

Inventors: Michael G. Luby (Berkeley, CA); Mark Watson (San Francisco, CA); Lorenzo Vicisano (Berkeley, CA); Payam Pakzad (Mountain View, CA); Bin Wang (Fremont, CA)
Assignee: QUALCOMM Incorporated
H04L65/604H04L65/607H04N21/235H04N21/23106H04N21/23406H04N21/234327H04N21/2401H04N21/25808H04N21/2662H04N21/435H04N21/44004H04N21/44209H04N21/440227H04N21/84H04N21/8456H04L65/4084H04L65/602H04L65/80
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,917,874
App. No.
12/887,483
Granted
Mar 13, 2018
Kind
B2
Abstract

A block-request streaming system provides for improvements in the user experience and bandwidth efficiency of such systems, typically using an ingestion system that generates data in a form to be served by a conventional file server (HTTP, FTP, or the like), wherein the ingestion system intakes content and prepares it as files or data elements to be served by the file server. A client device can be adapted to take advantage of the ingestion process. The client device might be configured to optimize use of resources, given the information available to it from the ingestion system. This may include configurations to determine the sequence, timing and construction of block requests based on monitoring buffer size and rate of change of buffer size, use of variable sized requests, mapping of block requests to underlying transport connections, flexible pipelining of requests, and/or use of whole file requests based on statistical considerations.

Claims (52)

1. In a communication system wherein a client device receives blocks of media from one or more media ingestion systems, a method comprising:

identifying, at the client device, an amount of media stored in a buffer for storing received blocks of media prior to being consumed by an output of the client device;

identifying, at the client device, a rate of consumption of the media at the output of the client device;

determining a rate of change of the amount of the media stored in the buffer;

determine a current estimate T of a travel time of blocks of media and a current download speed R;

measure a number of bytes B delivered for a previous request, wherein the previous request was for a total number of bytes S; and

determining, for a plurality of block requests corresponding to blocks of the media being consumed by the output of the client device, a block to request and a timing of the request, wherein the block to request is determined based upon the amount of the media stored in the buffer and the rate of change of the amount of the media stored in the buffer, and the timing of the request is determined based in part of whether S minus B is less than a multiple of R multiplied by T, wherein the timing of the request is associated with a time at which a request for a new block will be made.

2. The method of claim 1 , further comprising:

determining, at the client device, a number of bytes received from the media ingestion system on a previous request; and

requesting additional media data from the media ingestion system based on the number of bytes received.

3. The method of claim 1 , further comprising:

determining, at the client device, an identifier of a media file to be requested, wherein the media file is part of the media being received;

determining a set of IP addresses of servers of the media ingestion system;

ordering the IP addresses based on a calculation involving the identifier; and

selecting a server based on the ordering.

4. The method of claim 1 , further comprising:

identifying, at the client device, a range of blocks to be requested from the media ingestion system;

determining if the range of blocks includes a first block in a file stored by the media ingestion system;

calculating a statistical parameter; and

converting the request for a range of blocks to a request for the file, based on the determining and based on the statistical parameter.

5. The method of claim 4 , wherein the statistical parameter corresponds to a threshold.

6. The method of claim 4 , wherein the statistical parameter corresponds to the output of a hash function that is based on the range of blocks.

7. The method of claim 4 , wherein a threshold and value are set so that a desired percentage of requests for the file from multiple receivers are converted.

8. A client device having a network connection allowing for receiving blocks of media from one or more media ingestion systems via a communication system, comprising:

a video display of the client device that is capable of presenting media content in a perceptible form to a user of the client device;

a network interface for making requests, via a communication system, for media and for receiving responses to the requests;

a buffer capable of for storing received blocks of media prior to being consumed by the presentation element;

a processor for processing instructions;

logic for determining an amount of media stored in the buffer;

logic for identifying a rate of consumption of the media at the presentation element;

logic for determining a rate of change of the amount of the media stored in the buffer;

logic for determining a current estimate T of a travel time of blocks of media and a current download speed R;

logic for measuring a number of bytes B delivered for a previous request, wherein the previous request was for a total number of bytes S; and

logic for determining, for a plurality of block requests corresponding to blocks of the media being consumed by the output of the client device, a block to request and a timing of the request, wherein the block to request is determined based upon the amount of the media stored in the buffer and the rate of change of the amount of the media stored in the buffer, and the timing of the request is determined based in part on whether S minus B is less than a multiple of R multiplied by T, wherein the timing of the request is associated with a time at which a request for a new block will be made.

9. The client device of claim 8 , wherein the video display comprises a display and an audio output.

10. The client device of claim 8 , wherein the network interface includes logic for determining which of a plurality of servers to direct the requests to.

11. The client device of claim 8 , wherein at least some of the requests are for forward-error correction (“FEC”) data.

12. A client device having a network connection allowing for receiving blocks of media from one or more media ingestion systems via a communication system, comprising:

a video display of the client device that is capable of presenting media content in a perceptible form to a user of the client device;

a network interface for making requests, via a communication system, for media and for receiving responses to the requests;

a buffer capable of for storing received blocks of media prior to being consumed by the presentation element;

a processor for processing instructions;

logic for identifying an amount of media stored in a buffer, wherein the media includes blocks of media received by the buffer prior to being consumed by the video display;

logic for determining a current estimate T of a travel time of blocks of media and a current download speed R;

logic for measuring a number of bytes B delivered for a previous request, wherein the previous request was for a total number of bytes S;

logic for determining a rate of consumption of the stored received blocks;

logic for determining, based on the rate of consumption and the amount of media stored in the buffer, the size of a request to make to the one or more media ingestion systems;

logic for determining, based in part on whether S minus B is less than a multiple of R multiplied by T, the timing of the request to make to the one or more media ingestion systems; and

logic for issuing the request, via the network interface, to the one or more media ingestion systems.

13. The client device of claim 12 , wherein the video display comprises a display and an audio output.

14. The client device of claim 12 , wherein the network interface includes logic for determining which of a plurality of servers to direct the requests to.

15. The client device of claim 12 , wherein at least some of the requests are for forward-error correction (“FEC”) data.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 21, 2016
From: VICISANO, LORENZO
To: QUALCOMM INCORPORATED
Reel/Frame 038341/0653 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 17, 2011
From: LUBY, MICHAEL G.; WATSON, MARK; PAKZAD, PAYAM; WANG, BIN
To: QUALCOMM INCORPORATED
Reel/Frame 026291/0206 →
Continuity (7)
Provisional Application 61244767 · Sep 22, 2009
Provisional Application 61257719 · Nov 3, 2009
Provisional Application 61258088 · Nov 4, 2009
Provisional Application 61285779 · Dec 11, 2009
Provisional Application 61296725 · Jan 20, 2010
Provisional Application 61372399 · Aug 10, 2010
Related Publication 20110231569A1 · Sep 22, 2011