IP Library Granted Patent US 9,209,934
Granted Patent B2
US 9,209,934 · App. 12/887,495 · Granted Dec 8, 2015

Enhanced block-request streaming using cooperative parallel HTTP and forward error correction

Inventors: Michael G. Luby (Berkeley, CA); Bin Wang (Fremont, CA); Mark Watson (San Francisco, CA); Lorenzo Vicisano (Berkeley, CA); Payam Pakzad (Mountain View, CA)
Assignee: QUALCOMM Incorporated
H04L1/004H03M13/05H04L65/604H04L65/607H04N21/2393H04N21/23106H04N21/23406H04N21/234327H04N21/25808H04N21/44004H04N21/44209H04N21/4621H04N21/84H04N21/8455H04N21/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,209,934
App. No.
12/887,495
Granted
Dec 8, 2015
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, which might or might not include a cache. A client device can be adapted to take advantage of the ingestion process as well as including improvements that make for a better presentation independent of the ingestion process. In the block-request streaming system, the an ingestion system generates data according to erasure codes and the client device, through various selection and timing of requests for media data and redundant data, can efficiently decode media to provide for presentations.

Claims (58)

1. A computer-implemented method, comprising:

constructing, at a media ingestion system, media blocks and forward error correction (FEC) blocks, wherein the FEC blocks correspond to data in the media blocks;

determining a file structure, using the media ingestion system, for naming one or more media files containing the media blocks and one or more FEC files containing the FEC blocks according to a derivable pattern derivable at a client device;

receiving a first request from the client device for a first media file that is usable by the client device to provide a media presentation;

responding to the first request by initiating transmission of the first media file;

receiving a second request from the client device for a second media file that is usable by the client device to provide additional portions of the media presentation;

responding to the second request by initiating transmission of the second media file prior to completion of the response to the first request;

receiving a third request from the client device for an FEC file that is usable by the client device to recover portions of either the first media file or the second media file not yet received by the client device; and

responding to the third request by initiating transmission of the FEC file prior to completion of the response to the first request and prior to completion of the response to the second request.

2. The method of claim 1 , further comprising:

receiving a request from one or more clients for media files; and

responding to the request from the one or more clients by sending the requested media files.

3. The method of claim 2 , further comprising:

receiving at least one additional request for a media file prior to completing a response to a previous request for a media file; and

initiating a response to the at least one additional request prior to completing the response to the previous request.

4. The method of claim 1 , wherein media blocks are stored as pluralities of media files and further comprising configuring the media ingestion system to provide a media block using a plurality of requests for the pluralities of media files.

5. The method of claim 1 , further comprising:

responding to more than one request in parallel;

determining a bandwidth allocation among a plurality of responses to the parallel requests;

determining playout times associated with the parallel requests; and

adjusting the bandwidth allocation to reduce a probability of a stall, wherein a stall occurs when a playout time is reached before media that is associated with that playout time is available for playout.

6. The method of claim 1 , wherein a plurality of requests for media files comprises a plurality of requests for byte ranges from one or more files.

7. The method of claim 1 , wherein a plurality of requests for media files comprises a plurality of requests for different layers of a presentation, wherein one representation of a media presentation can be generated from one layer and another representation of a media presentation is generated from more than one layer.

8. The method of claim 1 , further comprising processing the media files to generate the FEC files such that a number of FEC symbols used for a fragment of the media files is determined by a target repair data ratio, a symbol size, a byte offset of a prior media fragment and a byte offset of a current media fragment.

9. An apparatus, comprising:

a processor configured to:

construct media blocks and forward error correction (FEC) blocks, wherein the FEC blocks correspond to data in the media blocks; and

determine a file structure for naming one or more media files containing the media blocks and one or more FEC files containing the FEC blocks according to a derivable pattern derivable at a client device; and

a receiver configured to receive a first request from the client device for a first media file that is usable by the client device to provide a media presentation;

wherein the processor is configured to respond to the first request by initiating transmission of the first media file;

wherein the receiver is configured to receive a second request from the client device for a second media file that is usable by the client device to provide additional portions of the media presentation;

wherein the processor is configured to respond to the second request by initiating transmission of the second media file prior to completion of the response to the first request;

wherein the receiver is configured to receive a third request from the client device for an FEC file that is usable by the client device to recover portions of either the first media file or the second media file not yet received by the client device; and

wherein the processor is configured to respond to the third request by initiating transmission of the FEC file prior to completion of the response to the first request and prior to completion of the response to the second request.

10. The apparatus of claim 9 , wherein:

the receiver is configured to receive a request from one or more clients for media files; and

the processor is configured to respond to the request from the one or more clients by sending the requested media files.

11. The apparatus of claim 10 , wherein:

the receiver is configured to receive at least one additional request for a media file prior to completing a response to a previous request for a media file; and

the processor is configured to initiate a response to the at least one additional request prior to completing the response to the previous request.

12. The apparatus of claim 9 , wherein media blocks are stored as pluralities of media files and wherein the processor is configured to configure a media ingestion system to provide a media block using a plurality of requests for the pluralities of media files.

13. The apparatus of claim 9 , wherein the processor is configured to:

respond to more than one request in parallel;

determine a bandwidth allocation among a plurality of responses to the parallel requests;

determine playout times associated with the parallel requests; and

adjust the bandwidth allocation to reduce a probability of a stall, wherein a stall occurs when a playout time is reached before media that is associated with that playout time is available for playout.

14. The apparatus of claim 9 , wherein a plurality of requests for media files comprises a plurality of requests for byte ranges from one or more files.

15. The apparatus of claim 9 , wherein a plurality of requests for media files comprises a plurality of requests for different layers of a presentation, wherein one representation of a media presentation is generated from one layer and another representation of a media presentation is generated from more than one layer.

16. The apparatus of claim 9 , wherein the processor is configured to process the media files to generate the FEC files such that a number of FEC symbols used for a fragment of the media files is determined by a target repair data ratio, a symbol size, a byte offset of a prior media fragment and a byte offset of a current media fragment.

17. One or more computer-readable media storing computer-executable instructions that, when executed, cause one or more computing devices to:

construct media blocks and forward error correction (FEC) blocks, wherein the FEC blocks correspond to data in the media blocks;

determine a file structure for naming one or more media files containing the media blocks and one or more FEC files containing the FEC blocks according to a derivable pattern derivable at the client device;

receive a first request from the client device for a first media file that is usable by the client device to provide a media presentation;

respond to the first request by initiating transmission of the first media file;

receive a second request from the client device for a second media file that is usable by the client device to provide additional portions of the media presentation;

respond to the second request by initiating transmission of the second media file prior to completion of the response to the first request;

receive a third request from the client device for an FEC file that is usable by the client device to recover portions of either the first media file or the second media file not yet received by the client device; and

respond to the third request by initiating transmission of the FEC file prior to completion of the response to the first request and prior to completion of the response to the second request.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 21, 2016
From: VICISANO, LORENZO
To: QUALCOMM INCORPORATED
Reel/Frame 038345/0985 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 17, 2011
From: LUBY, MICHAEL G.; WANG, BIN; WATSON, MARK; PAKZAD, PAYAM
To: QUALCOMM INCORPORATED
Reel/Frame 026291/0490 →
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 20110239078A1 · Sep 29, 2011