IP Library Granted Patent US 7,752,327
Granted Patent B2
US 7,752,327 · App. 11/671,434 · Granted Jul 6, 2010

Receiver driven streaming in a peer-to-peer network

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 7,752,327
App. No.
11/671,434
Granted
Jul 6, 2010
Kind
B2
Abstract

A “PeerStreamer” provides receiver-driven peer-to-peer (P2P) media streaming for loosely coupled P2P networks. Peers in the network perform only simple operations, may cache all or part of the streaming media, do not collaborate with other peers, may be unreliable, and may drop offline or come online during any given streaming session. Clients in the network operate in real-time to coordinate peers, stream media from multiple peers, perform load balancing, handle online/offline states of peers, and perform decoding and rendering the streaming media. In one embodiment, the PeerStreamer uses high rate erasure resilient coding to allow multiple serving peers to hold partial media without conflict, such that clients simply retrieve fixed numbers of erasure coded blocks regardless of where and what specific blocks are retrieved. In another embodiment, the PeerStreamer uses embedded coded media to vary streaming bitrates according to available serving bandwidths and client queue status.

Claims (46)

1. A system for providing client-controlled streaming of media files in a peer-to peer (P2P) network, comprising using a computing device to:

store one or more of packets of an encoded media file, said encoded media file comprising a media header and a media body, on one or more serving peers in a cluster of available serving peers, such that every packet of the encoded media file is cached on at least one of the serving peers;

use a client to retrieve a list of serving peers available to the client;

initialize a separate packet request queue on the client for each available serving peer;

send one or more client requests for one or more specific data packets from the client to one or more specific serving peers, and add each request to the corresponding packet request queue;

wherein the client requests sent to any of the serving peers are provided via a reliable and order preserving link to the serving peer, such that the serving peers do not need to identify the data packets sent in reply to the client requests;

remove each request from the corresponding packet request queue when the corresponding data packet is received by the client from a serving peer; and

decode and render the received data packets to provide streaming media playback on the client.

2. The system of claim 1 further comprising downloading an availability vector from each available serving peer to the client, wherein each availability vector describes available data packets stored on each corresponding serving peer, and wherein the client requests for one or more specific data packets are based on the downloaded availability vectors.

3. The system of claim 1 wherein decoding and rendering the received data packets further comprises at least partially buffering the decoded and rendered data packets prior to playback on the client.

4. The system of claim 1 wherein initializing a separate packet request queue on the client for each available serving peer further comprises creating and maintaining additional client packet request queues corresponding to any serving peers which join the cluster of serving peers.

5. The system of claim 1 further comprises moving any data packet requests remaining in the packet request queue corresponding to a serving peer which becomes unavailable to the client to one or more of the other packet request queues, and requesting the corresponding packets from the corresponding serving peer.

6. The system of claim 1 further comprising performing bandwidth load balancing between each of the available serving peers by providing dynamic client management of data packet requests for maintaining a desired request fulfillment time (RFT) across each of the available serving peers.

7. The system of claim 1 wherein the reliable and order preserving link is a TCP communications protocol, and wherein any incoming data packet received by the client from a serving peer corresponds to a first data packet request in the request queue corresponding to the serving peer from which the data packet was received.

8. The system of claim 1 wherein the data packets are embedded coded data packets, and wherein client control is maintained over a streaming bitrate of each embedded coded data packet by automatically limiting the client requests for one or more specific data packets to one or more specific serving peers.

9. The system of claim 8 wherein automatically limiting the client requests is a function of:

an aggregate serving bandwidth of the serving peers;

a client staging buffer size;

a desired request fulfillment time (RFT);

a length of received packets in the client staging buffer;

a length of each packet request queue; and

a base layer bitrate of the embedded coded data packets.

10. A computer-readable medium having stored thereon computer executable instructions for providing client-controlled streaming of media files in a peer-to peer (P2P) network, said computer executable instructions comprising:

storing one or more of packets of an encoded media file, said encoded media file comprising a media header and a media body, on one or more serving peers in a cluster of available serving peers, such that every packet of the encoded media file is cached on at least one of the serving peers;

using a client to retrieve a list of serving peers available to the client;

initializing a separate packet request queue on the client for each available serving peer;

sending one or more client requests for one or more specific data packets from the client to one or more specific serving peers, and add each request to the corresponding packet request queue;

wherein the client requests sent to any of the serving peers are provided via a TCP link to the serving peer, and wherein any incoming data packet received by the client from a serving peer corresponds to a first data packet request in the request queue corresponding to the serving peer from which the data packet was received, such that the serving peers do not need to identify the data packets sent in reply to the client requests; and

removing each request from the corresponding packet request queue when the corresponding data packet is received by the client from a serving peer.

11. The computer readable medium of claim 10 further comprising instructions for decoding and rendering the received data packets to provide streaming media playback on the client.

12. The computer readable medium of claim 10 further comprising instructions for downloading an availability vector from each available serving peer to the client, wherein each availability vector describes available data packets stored on each corresponding serving peer, and wherein the client requests for one or more specific data packets are based on the downloaded availability vectors.

13. The computer readable medium of claim 10 further comprising instructions for performing bandwidth load balancing between each of the available serving peers by providing dynamic client management of data packet requests for maintaining a desired request fulfillment time (RFT) across each of the available serving peers.

14. A method for providing client-controlled streaming of media files in a peer-to peer (P2P) network, comprising performing steps for:

storing one or more of packets of an encoded media file, said encoded media file comprising a media header and a media body, on one or more serving peers in a cluster of available serving peers, such that every packet of the encoded media file is cached on at least one of the serving peers;

using a client to retrieve a list of serving peers available to the client;

initializing a separate packet request queue on the client for each available serving peer;

sending one or more client requests for one or more specific data packets from the client to one or more specific serving peers, and add each request to the corresponding packet request queue;

wherein the client requests sent to any of the serving peers are provided via a reliable and order preserving link to the serving peer, such that the serving peers do not need to identify the data packets sent in reply to the client requests;

removing each request from the corresponding packet request queue when the corresponding data packet is received by the client from a serving peer; and

decoding and rendering the received data packets to provide streaming media playback on the client.

15. The method of claim 14 further comprising downloading an availability vector from each available serving peer to the client, wherein each availability vector describes available data packets stored on each corresponding serving peer, and wherein the client requests for one or more specific data packets are based on the downloaded availability vectors.

16. The method of claim 14 wherein initializing a separate packet request queue on the client for each available serving peer further comprises creating and maintaining additional client packet request queues corresponding to any serving peers which join the cluster of serving peers.

17. The method of claim 14 further comprises moving any data packet requests remaining in the packet request queue corresponding to a serving peer which becomes unavailable to the client to one or more of the other packet request queues, and requesting the corresponding packets from the corresponding serving peer.

18. The method of claim 14 further comprising performing bandwidth load balancing between each of the available serving peers by providing dynamic client management of data packet requests for maintaining a desired request fulfillment time (RFT) across each of the available serving peers.

19. The method of claim 14 wherein the reliable and order preserving link is a TCP communications protocol, and wherein any incoming data packet received by the client from a serving peer corresponds to a first data packet request in the request queue corresponding to the serving peer from which the data packet was received.

20. The method of claim 14 wherein the data packets are embedded coded data packets, and wherein client control is maintained over a streaming bitrate of each embedded coded data packet by automatically limiting the client requests for one or more specific data packets to one or more specific serving peers.

Assignments (7)
CHANGE OF NAME Recorded Sep 25, 2024
From: ROVI TECHNOLOGIES CORPORATION
To: ADEIA TECHNOLOGIES INC.
Reel/Frame 069047/0828 →
RELEASE OF SECURITY INTEREST Recorded Jun 5, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS, INC.; VEVEO, INC.
Reel/Frame 053481/0790 →
RELEASE OF SECURITY INTEREST Recorded Jun 5, 2020
From: HPS INVESTMENT PARTNERS, LLC
To: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS, INC.; VEVEO, INC.
Reel/Frame 053458/0749 →
SECURITY INTEREST Recorded Jun 1, 2020
From: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS INC.; VEVEO, INC.; INVENSAS CORPORATION; INVENSAS BONDING TECHNOLOGIES, INC.; TESSERA, INC.; TESSERA ADVANCED TECHNOLOGIES, INC.; DTS, INC.; PHORUS, INC.; IBIQUITY DIGITAL CORPORATION
To: BANK OF AMERICA, N.A.
Reel/Frame 053468/0001 →
PATENT SECURITY AGREEMENT Recorded Nov 25, 2019
From: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS, INC.; VEVEO, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 051110/0006 →
SECURITY INTEREST Recorded Nov 22, 2019
From: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS, INC.; VEVEO, INC.
To: HPS INVESTMENT PARTNERS, LLC, AS COLLATERAL AGENT
Reel/Frame 051143/0468 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 8, 2014
From: MICROSOFT CORPORATION
To: ROVI TECHNOLOGIES CORPORATION
Reel/Frame 034539/0676 →