IP Library Granted Patent US 9,628,536
Granted Patent B2
US 9,628,536 · App. 14/878,694 · Granted Apr 18, 2017

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

Inventors: Michael Luby (Berkeley, CA); Bin Wang (Freemont, CA); Mark Watson (San Francisco, CA); Lorenzo Vicisano (Berkeley, CA); Payam Pakzad (Sunnyvale, CA)
Assignee: QUALCOMM Incorporated
H04L65/607H03M13/05H04L1/004H04L65/604H04N21/2353H04N21/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,628,536
App. No.
14/878,694
Granted
Apr 18, 2017
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 (41)

1. A method of requesting media data at a client device using a scalable segment map, comprising:

receiving the scalable segment map at the client device, the scalable segment map including metadata with one or more byte ranges corresponding to locations of layers of a media segment, wherein the media segment includes one or more blocks and is associated with a scalable video coded stream including multiple layers that are combinable to form one or more representations;

determining, by the client device, one or more layers of a block of the media segment to request;

generating, by the client device, a request for the one or more layers of the block, the request including a byte range corresponding to a location of the one or more layers, wherein the byte range is determined from the metadata included in the segment map;

transmitting, by the client device, the request for the one or more layers of the block;

receiving, at the client device, the one or more layers of the block of media data; and

generating, by the client device, a media representation using the one or more layers of the block.

2. The method of claim 1 , wherein a full block of the one or more blocks includes layers combinable to form a first representation, and wherein a partial block of the one or more blocks has fewer layers than the full block that are combinable to form a second representation.

3. The method of claim 1 , further comprising determining the one or more layers of the media segment to request based on channel quality conditions detected by the client device.

4. The method of claim 1 , further comprising receiving a media presentation description including the scalable segment map.

5. The method of claim 1 , further comprising receiving the media segment, wherein the media segment includes the scalable segment map.

6. The method of claim 1 , wherein the metadata includes byte ranges corresponding to a location of a first layer and a location of a second layer, wherein received media data associated with the first layer is stored in a first buffer of the client device and received media data associated with the second layer is stored in a second buffer of the client device, the second buffer being a separate buffer from the first buffer.

7. The method of claim 6 , wherein determining a block of media data to request includes determining an occupancy of at least one of the first buffer and the second buffer.

8. The method of claim 7 , wherein determining a block of media data to request includes determining if the occupancy of the first buffer exceeds a first threshold and determining if the occupancy of the second buffer exceeds a second threshold, the first threshold being different from the second threshold.

9. The method of claim 1 , wherein the layers of the media segment are ordered in ranges of increasing quality.

10. A method of providing media data, comprising:

providing, by a media ingestion system, a scalable segment map to a client device, the scalable segment map including metadata with one or more byte ranges corresponding to locations of layers of a media segment, wherein the media segment includes one or more blocks and is associated with a scalable video coded stream including multiple layers that are combinable to form a representation, wherein a subset of the multiple layers forms a first version of the representation and a larger subset of the multiple layers forms a second version of the representation having a higher quality than the first version, and wherein the scalable segment map allows the client device to generate a request for one or more layers of a block of the media segment;

receiving the request for the one or more layers of the block; and

providing the one or more layers of the block to the client device.

11. The method of claim 10 , further comprising providing a media presentation description including the scalable segment map.

12. The method of claim 10 , further comprising providing the media segment to the client device, wherein the media segment includes the scalable segment map.

13. The method of claim 10 , wherein the layers of the media segment are ordered in ranges of increasing quality.

14. A client device configured to request media data using a scalable segment map, comprising:

a memory configured to store media data;

a receiver configured to receive the scalable segment map, the scalable segment map including metadata with one or more byte ranges corresponding to locations of layers of a media segment, wherein the media segment includes one or more blocks and is associated with a scalable video coded stream including multiple layers that are combinable to form one or more representations; and

a processor configured to:

determine one or more layers of a block of the media segment to request; and

generate a request for the one or more layers of the block, the request including a byte range corresponding to a location of the one or more layers, wherein the byte range is determined from the metadata included in the segment map;

wherein the receiver is further configured to receive the one or more layers of the block of media data; and

wherein the processor is further configured to generate a media representation using the one or more layers of the block.

15. The client device of claim 14 , wherein a full block of the one or more blocks includes layers combinable to form a first representation, and wherein a partial block of the one or more blocks has fewer layers than the full block that are combinable to form a second representation.

16. The client device of claim 14 , wherein the processor is further configured to determine the one or more layers of the media segment to request based on channel quality conditions detected by the client device.

17. The client device of claim 14 , wherein the receiver is further configured to receive a media presentation description including the scalable segment map.

18. The client device of claim 14 , wherein the receiver is further configured to receive the media segment, wherein the media segment includes the scalable segment map.

19. The client device of claim 14 , further comprising:

a first buffer; and

a second buffer, wherein the second buffer is a separate buffer from the first buffer, wherein the metadata includes byte ranges corresponding to a location of a first layer and a location of a second layer, wherein received media data associated with the first layer is stored in the first buffer, and wherein received media data associated with the second layer is stored in the second buffer.

20. A server configured to provide media data, comprising:

a transmitter configured to provide a scalable segment map to a client device, the scalable segment map including metadata with one or more byte ranges corresponding to locations of layers of a media segment, wherein the media segment includes one or more blocks and is associated with a scalable video coded stream including multiple layers that are combinable to form a representation, wherein a subset of the multiple layers forms a first version of the representation and a larger subset of the multiple layers forms a second version of the representation having a higher quality than the first version, and wherein the scalable segment map allows the client device to generate a request for one or more layers of a block of the media segment; and

a receiver configured to receive the request for the one or more layers of the block;

wherein the transmitter is further configured to provide the one or more layers of the block to the client device.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 21, 2016
From: LUBY, MICHAEL G.; WANG, BIN; WATSON, MARK; PAKZAD, PAYAM
To: QUALCOMM INCORPORATED
Reel/Frame 038342/0179 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 21, 2016
From: VICISANO, LORENZO
To: QUALCOMM INCORPORATED
Reel/Frame 038342/0254 →
Continuity (8)
Continuation 12887495 · Sep 21, 2010
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 20160065640A1 · Mar 3, 2016