System and method for erasure coding of streaming media
First Claim
1. A computer-readable medium having computer executable instructions for providing client-driven multimedia streaming in a peer-to-peer (P2P) network, said computer executable instructions comprising:
- separating an encoded media file into a media header with one or more data packets, and a media body comprising n data packets;
separating each data packet into at least one data units;
separating each data unit into k original data blocks;
erasure encoding the k original data blocks of each data unit to generate from 1 to k erasure coded data blocks for each of a plurality of arbitrary serving peers in a cluster of serving peers, and storing the resultant erasure coded data blocks on those serving peers;
for each data unit, using a client computer to retrieve a total of a number (k′
) of erasure coded data blocks from arbitrary serving peers in the cluster, where k′
is greater than or equal to k;
using the client computer to reconstruct each data unit from the k′
retrieved erasure coded data blocks;
using the client computer to retrieve the media header from one of the serving peers; and
using the client computer to reconstruct the data packets of the media body from the reconstructed data units.
2 Assignments
0 Petitions
Accused Products
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.
72 Citations
48 Claims
-
1. A computer-readable medium having computer executable instructions for providing client-driven multimedia streaming in a peer-to-peer (P2P) network, said computer executable instructions comprising:
-
separating an encoded media file into a media header with one or more data packets, and a media body comprising n data packets;
separating each data packet into at least one data units;
separating each data unit into k original data blocks;
erasure encoding the k original data blocks of each data unit to generate from 1 to k erasure coded data blocks for each of a plurality of arbitrary serving peers in a cluster of serving peers, and storing the resultant erasure coded data blocks on those serving peers;
for each data unit, using a client computer to retrieve a total of a number (k′
) of erasure coded data blocks from arbitrary serving peers in the cluster, where k′
is greater than or equal to k;
using the client computer to reconstruct each data unit from the k′
retrieved erasure coded data blocks;
using the client computer to retrieve the media header from one of the serving peers; and
using the client computer to reconstruct the data packets of the media body from the reconstructed data units. - View Dependent Claims (5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 47, 48)
-
-
21-1. A method for streaming media to one or more clients in a peer-to peer (P2P) network, comprising using a computing device to:
-
arbitrarily distribute subsets of erasure coded data blocks generated from data packets of an encoded media file to each of a plurality available serving peers;
on each serving peer, determine an availability vector which defines exact subsets of erasure coded data blocks held by the corresponding serving peer;
provide a list of the available serving peers to a client computer following a client request;
on the client computer, use the list of available serving peers provided to download the availability vector for each listed serving peer, and to further download a media header of the encoded media file from one or more of the serving peers;
on the client computer, request transmission of a specific number of erasure coded data blocks for each data packet from one or more specific serving peers based on a client computer analysis of the availability vectors and on the list of available serving peers; and
decode and render each packet received in response to the data block transmission requests to provide real-time streaming media playback on the client computer.
-
-
22-2. The method of claim 21 wherein the availability vectors contains at least an identification of the erasure coding key space, and the number of erasure coded blocks for each data packet held.
-
35. A system for providing coordinated receiver-driven media streaming to one or more clients from one or more non-cooperating peers, comprising:
-
separating an encoded media file into a media header with one or more data packets, and a media body comprising n data packets and storing the media header on one or more available serving peers;
separating each data packet into one or more data units;
separating each data unit into k original data blocks;
for each available serving peer, erasure coding the k original data blocks of each data packet to generate 1 to k erasure coded data blocks for each data unit, and storing the 1 to k erasure coded data blocks on each of the corresponding serving peers;
on each serving peer, determine an availability vector which defines at least an identification of an erasure coding key space and the number of erasure coded data blocks for each data packet held by the corresponding serving peer;
providing a list of the available serving peers to a client computer in response to a client request;
on the client computer, retrieving the media header from one of the serving peers;
on the client computer, downloading the availability vector for each listed serving peer;
on the client computer, downloading the media header from one of the serving peers;
on the client computer, using the availability vectors for requesting downloads of a total of k′
erasure coded data blocks for each data unit from a set of one or more of the available serving peers, where k′
is greater than or equal to k;
using the client computer to reconstruct each data unit from the k′
downloaded erasure coded data blocks; and
using the client computer to reconstruct the data packets of the media body from the reconstructed data units. - View Dependent Claims (36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46)
-
Specification