Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
First Claim
1. A computer-implemented method, comprising:
- determining, at a client device, media blocks that are needed for a media presentation;
identifying one or more forward error correction (FEC) files, the one or more FEC files including one or more FEC blocks usable by the client device to recover portions of the media blocks not received by the client device;
determining a position of the one or more FEC blocks within the one or more FEC files;
transmitting a first request for a first media file that is usable by the client device to provide the media presentation;
receiving the first media file;
transmitting a second request for a second media file that is usable by the client device to provide additional portions of the media presentation;
receiving the second media file prior to completion of receiving the first media file;
transmitting a third request 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
receiving at least a portion of the FEC file prior to completion of receiving the first media file and the second media file.
1 Assignment
0 Petitions
Accused Products
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.
485 Citations
27 Claims
-
1. A computer-implemented method, comprising:
-
determining, at a client device, media blocks that are needed for a media presentation; identifying one or more forward error correction (FEC) files, the one or more FEC files including one or more FEC blocks usable by the client device to recover portions of the media blocks not received by the client device; determining a position of the one or more FEC blocks within the one or more FEC files; transmitting a first request for a first media file that is usable by the client device to provide the media presentation; receiving the first media file; transmitting a second request for a second media file that is usable by the client device to provide additional portions of the media presentation; receiving the second media file prior to completion of receiving the first media file; transmitting a third request 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 receiving at least a portion of the FEC file prior to completion of receiving the first media file and the second media file. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. An apparatus, comprising:
-
a processor configured to; determine media blocks that are needed for a media presentation; identify one or more forward error correction (FEC) files, the one or more FEC files including one or more FEC blocks usable by the apparatus to recover portions of the media blocks not received by the apparatus; and determine a position of the one or more FEC blocks within the one or more FEC files a transmitter configured to transmit a first request for a first media file that is usable to provide the media presentation; and a receiver configured to receive the first media file; wherein the transmitter is further configured to transmit a second request for a second media file that is usable to provide additional portions of the media presentation; wherein the receiver is further configured to receive the second media file prior to completion of receiving the first media file; wherein the transmitter is further configured to transmit a third request for an FEC file that is usable to recover portions of either the first media file or the second media file not yet received; and wherein the receiver is further configured to receive at least a portion of the FEC file prior to completion of receiving the first media file and the second media file. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. One or more non-transitory computer-readable media storing computer-executable instructions that, when executed, cause one or more computing devices to:
-
determine media blocks that are needed for a media presentation; identify one or more forward error correction (FEC) files, the one or more FEC files including one or more FEC blocks usable by a client device to recover portions of the media blocks not received by the client device; determine a position of the one or more FEC blocks within the one or more FEC files; determine one or more FEC files that contain the one or more FEC blocks; transmit a first request for a first media file that is usable to provide the media presentation; receive the first media file; transmit a second request for a second media file that is usable to provide additional portions of the media presentation; receive the second media file prior to completion of receiving the first media file; transmit a third request for an FEC file that is usable to recover portions of either the first media file or the second media file not yet received; and receive at least a portion of the FEC file prior to completion of receiving the first media file and the second media file. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27)
-
Specification