FILE DOWNLOAD AND STREAMING SYSTEM
First Claim
1. A method of encoding data for transmission from a source to a destination over a communications channel, wherein the data is represented at least by a plurality, K, of source symbols, K being the number of source symbols and the source symbols being in an ordered set, the method comprising:
- generating one or more repair symbols from the plurality of source symbols;
transmitting one or more symbols over the communications channel, wherein the communication channel is a channel that can introduce errors in transmissions, wherein the one or more symbols are selected from the group consisting of source symbols and repair symbols;
determining a desired degree of accuracy for the regeneration of source symbols;
determining, for each of a plurality of source symbols, an associated symbol relation that is a function of a systematic index, J(K), where J(K) is a function of K;
determining L intermediate symbol values according to a function of values of the K source symbols and the K symbol associated symbol relations associated with the K source symbols and a set of L-K pre-coding relations, wherein L is at least K;
determining a value for each repair symbol using the associated symbol relation for that repair symbol and the plurality of L intermediate symbol values;
wherein the encoding is such that the plurality of source symbols can be regenerated to the desired degree of accuracy from any predetermined number, N, of a combination of the transmitted source symbols and transmitted repair symbols.
2 Assignments
0 Petitions
Accused Products
Abstract
A method of encoding data operates on an ordered set of input symbols and includes generating redundant symbols from the input symbols, and includes generating output symbols from a combined set of symbols including the input symbols and the redundant symbols, wherein the number of possible output symbols is much larger than the number of the combined set of symbols, wherein at least one output symbol is generated from more than one symbol in the combined set of symbols and from less than all of the symbols in the combined set of symbols. The redundant symbols are generated from an ordered set of input symbols in a deterministic process such that a first set of static symbols calculated using a first input symbol has a low common membership with a second set of static symbols calculated using a second input symbol distinct from the first input symbol.
151 Citations
74 Claims
-
1. A method of encoding data for transmission from a source to a destination over a communications channel, wherein the data is represented at least by a plurality, K, of source symbols, K being the number of source symbols and the source symbols being in an ordered set, the method comprising:
-
generating one or more repair symbols from the plurality of source symbols; transmitting one or more symbols over the communications channel, wherein the communication channel is a channel that can introduce errors in transmissions, wherein the one or more symbols are selected from the group consisting of source symbols and repair symbols; determining a desired degree of accuracy for the regeneration of source symbols; determining, for each of a plurality of source symbols, an associated symbol relation that is a function of a systematic index, J(K), where J(K) is a function of K; determining L intermediate symbol values according to a function of values of the K source symbols and the K symbol associated symbol relations associated with the K source symbols and a set of L-K pre-coding relations, wherein L is at least K; determining a value for each repair symbol using the associated symbol relation for that repair symbol and the plurality of L intermediate symbol values; wherein the encoding is such that the plurality of source symbols can be regenerated to the desired degree of accuracy from any predetermined number, N, of a combination of the transmitted source symbols and transmitted repair symbols. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 57, 59, 60, 61, 65, 66, 67, 68, 69, 70, 71)
-
-
29. A method of decoding encoded data received over a communications channel transmitted from a source to a destination, the method comprising:
-
receiving a predetermined number, N, of symbols, wherein the symbols comprise a combination of received source symbols and repair symbols generated from a plurality of an ordered set of K source symbols, generating to a desired degree of accuracy one or more of the not received source symbols among the ordered set of K source symbols, wherein each symbol has an associated symbol relation that is determined by a systematic index, J(K), where J(K) is determined by K, wherein the value of each not received source symbol is determined by the associated symbol relation and a plurality of L intermediate symbol values, wherein L is at least K, wherein the L intermediate symbol values are determined by the K source symbol values and by the K symbol relations associated with the K source symbols and by a set of L-K pre-coding relations, wherein the L intermediate symbol values can be generated to a desired degree of accuracy from the N received source and repair symbols, wherein the value of each not received source symbol is determined by the associated symbol relation and the plurality of L intermediate symbol values. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, 62, 63, 64, 72, 73, 74)
-
40. The method of claim 39 further comprising:
determining d[X] based on a degree function applied to the input v.
-
41. The method of claim 39 further comprising:
determining a[X], wherein a[X] is in the range between 0 and L′
−
1, inclusive, wherein L′
is the smallest prime number greater than or equal to L, wherein L′
is calculated as one plus the output of the random generator applied to the inputs Y, 1 and L′
−
1.
-
42. The method of claim 39 further comprising:
determining b[X], wherein b[X] is in the range between 0 and L′
, inclusive, wherein b[X] is calculated as the output of the random generator applied to the input Y, 2 and L′
.
-
43. The method of claim 39, wherein the value of d[X] is determined based on v as follows:
if the value of v is between 0 and 10240, inclusive, then the value of d[X] is 1, if the value of v is between 10241 and 4911581, inclusive, then the value of d[X] is 2, if the value of v is between 4911582 and 712793, inclusive, then the value of d[X] is 3, if the value of v is between 712794 and 831694, inclusive, then the value of d[X] is 4, if the value of v is between 831695 and 948445, inclusive, then the value of d[X] is 10, if the value of v is between 948446 and 1032188, inclusive, then the value of d[X] is 11, if the value of v is between 1032189 and 1048575, inclusive, then the value of d[X] is 40.
-
44. The method of claim 39, wherein the random generator on inputs Y, i, and m is calculated as (V0[(Y+i) % 256]̂
- (V1[(floor(Y/256)+i) % 256]) % m, where % is the modulo operator, ̂
is the exclusive- or operator,/is the division operator, floor calculates the largest integer that is at most the input value, and V0 and V1 are each tables of 256 integers chosen randomly or pseudo-randomly.
- (V1[(floor(Y/256)+i) % 256]) % m, where % is the modulo operator, ̂
-
45. The method of claim 44, wherein the 256 values for table V0 is as described in Appendix B.1.
-
46. The method of claim 44, wherein the 256 values for table V1 is as described in Appendix B.2.
-
47. The method of claim 29, wherein the number L-K of pre-coding relations comprises a first set of S pre-coding relations and a second set of H pre-coding relations, and wherein the L intermediate symbols comprises a first set of K intermediate symbols, a second set of S intermediate symbols, and a third set of H intermediate symbols.
-
48. The method of claim 47, wherein each pre-coding relation in the first set of pre-coding relations is uniquely associated with an intermediate symbol in the second set of intermediate symbols and is associated with a specified set of intermediate symbols among the first set of intermediate symbols, wherein each pre-coding relation is a linear constraint on the value of the associated intermediate symbol and the values of the intermediate symbols in the specified set.
-
49. The method of claim 48, wherein a linear constraint is an exclusive- or constraint.
-
50. The method of claim 48, wherein for each first pre-coding relation among the first set of pre-coding relations and for each second pre-coding relation among the first set of pre-coding relations, the number of intermediate symbols that are both in the specified set associated with the first pre-coding relation and in the specified set associated with the second pre-coding relation is at most 3.
-
51. The method of claim 48, wherein each of the intermediate symbols in the first set of intermediate symbols is in the specified set of exactly three of the pre-coding relations in the first set of pre-coding relations.
-
52. The method of claim 47,
wherein S is the smallest prime integer that is at least as large as 0.01*K+X, wherein X is the smallest positive integer such that X*(X− - 1) is at least 2*K,
wherein H is the smallest integer such that fact[H]/(fact[H−
H′
]*fact[H′
]) is at least K+2, wherein fact is the factorial operator, wherein H′
is the smallest integer that is at least H/2.
- 1) is at least 2*K,
-
53. The method of claim 47, wherein each pre-coding relation in the second set of pre-coding relations is uniquely associated with an intermediate symbol in the third set of intermediate symbols and is associated with a specified set of intermediate symbols among the first set and second set of intermediate symbols, wherein the pre-coding relation is a linear constraint on the associated intermediate symbol and the intermediate symbols in the specified set.
-
54. The method of claim 53, wherein a linear constraint is an exclusive- or constraint.
-
55. The method of claim 53, wherein each of the intermediate symbols in the first set or the second set of intermediate symbols is in the specified set of approximately one-half of the pre-coding relations in the second set of pre-coding relations.
-
56. The method of claim 53, wherein for each first intermediate symbol in the first set or second set of intermediate symbols and for each second intermediate symbol in the first set or second set of intermediate symbols that is the next consecutive intermediate symbol following the first intermediate symbol, the symmetric difference of pre-coding relations in the second set of pre-coding relations of which the first intermediate symbol is a member of the specified set and of which the second intermediate symbol is a member of the specified set is exactly two.
-
58. The method of claim 29, wherein more than one source symbol is placed into at least one packet.
-
62. The method of claim 34, wherein the symbols are received in one or more packets and wherein an ESI is included in each packet to identify the first symbol placed into the packet.
-
63. The method of claim 62, wherein more than one symbol is placed into at least one packet, wherein the ESIs for the second and subsequent symbols placed in packets with more than one symbol are determined by the ESI for the first symbol placed in the packet.
-
64. The method of claim 63, wherein the ESI determined for the second symbol placed in a packet is one greater than the ESI placed in the packet that is associated with the first symbol placed in the packet.
-
72. The method of claim 29 wherein the K source symbols correspond to a source block, wherein the source block is defined by a transport protocol for streaming data.
-
73. The method of claim 72 wherein one or more parameters used to determine how the K source symbols correspond to the source block are made known at the destination of the symbols.
-
74. The method of claim 72 wherein more than one symbol is placed into a packet that is used for transmission.
-
Specification