Abstract:
A method of encoding data into a chain reaction code includes generating a set of input symbols from input data. Subsequently, one or more non-systematic output symbols is generated from the set of input symbols, each of the one or more non-systematic output symbols being selected from an alphabet of non-systematic output symbols, and each non-systematic output symbol generated as a function of one or more of the input symbols. As a result of this encoding process, any subset of the set of input symbols is recoverable from (i) a predetermined number of non-systematic output symbols, or (ii) a combination of (a) input symbols which are not included in the subset of input symbols that are to be recovered, and (b) one or more of the non-systematic output symbols.
Abstract:
In a packet communications system stream data is transported over a channel over which packet loss or corruption is possible, with forward error correction (“FEC”) information. A transmitter receives source packets comprising source data, generates FEC source packets formatted to allow for identification of lost or corrupted source packets at a receiver, arranges source data from the source packets into a plurality of source symbols wherein at least one source packet is arranged into more than one source symbol, associates a plurality of source symbols with a source block, generates a plurality of repair symbols from the source block according to a predetermined FEC encoding process and groups the plurality of repair symbols into one or more FEC repair packets associated with the source block. A receiver can use the FEC repair symbols from the FEC repair packets to recover source symbols, as needed.
Abstract:
A method of encoding data for transmission from a source to a destination over a communications channel is provided. A plurality of redundant symbols are generated from an ordered set of input symbols to be transmitted. A plurality of output symbols are generated 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 symbols in 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, and such that the ordered set of input symbols can be regenerated to a desired degree of accuracy from any predetermined number, N, of the output symbols.
Abstract:
Signaling the sending of source blocks within multiple physical layer blocks is done for both streaming and object delivery applications, using minimal additional overhead, and in some cases no overhead, to signal interleaved source blocks within a physical layer block, signaling how symbols are related to the source blocks from which they are generated, and signaled sending and indications of prioritized data for source blocks. Organizing and sending streams over one more channels can be done to improve the quality of delivered streams, while minimizing or improving the needed amount of channel resources and receiver power resources needed.
Abstract:
An encoder uses an input file of data and a key to produce an output symbol. An output symbol with key I is generated by determining a weight, W(I), for the output symbol to be generated, selecting W(I) of the input symbols associated with the output symbol according to a function of I, and generating the output symbol's value B(I) from a predetermined value function F(I) of the selected W(I) input symbols. An encoder can be called repeatedly to generate multiple output symbols. The output symbols are generally independent of each other, and an unbounded number (subject to the resolution of I) can be generated, if needed. A decoder receives some or all of the output symbols generated. The number of output symbols needed to decode an input file is equal to, or slightly greater than, the number of input symbols comprising the file, assuming that input symbols and output symbols represent the same number of bits of data.
Abstract:
A method of serving content to multiple clients via a network is provided. Independent sessions with each of a plurality of clients are maintained, wherein the number of clients in the plurality of clients can vary over time, and wherein the start of each session and the end of each session can be independent of the start and end of other sessions. A stream of packet payloads is received, each packet payload of the stream of packet payloads including data generated from the content, wherein each packet payload in at least a subset of the stream of packet payloads includes a different set of data. Each packet payload in the stream of packet payloads is transmitted to each client of the plurality of clients in corresponding packets, wherein the packet payload transmitted to a client at any particular time is independent of the state of the corresponding session.
Abstract:
Data is streamed from a transmitter to a receiver, wherein streaming is transferring data with an assumption that the receiver will begin using the data before it is all transmitted and received and the streamed data includes forward error correction (“FEC”) and the rates of data consumption can vary. The transmitter has an input rate and a transmit rate and the two rates can be different and can change. At the receiver, there is a reception rate (at which the receiver receives data) and a consumption rate (at which the receiver uses up data for its output). The transmitter transmits using a transmit rate higher than the consumption rate and the extra bandwidth is usable for FEC protection and buffering. In some embodiments, the excess rate varies over a transmission period.
Abstract:
A method for communicating the content of a live data stream to a receiver using a plurality of channels comprising two encoder channels used to encode the live data content prior to transmission. Initially a plurality of segments of a live data stream are received, wherein each segment contains segment data. A forward error correction algorithm is applied to each segment's data, thereby producing FEC-encoded segment data. The FEC-encoded segment data is contained within an FEC-encoded block, resulting in a corresponding plurality of FEC-encoded blocks being generated. Each FEC-encoded block is copied to a sub-channel on both a first encoder channel and a second encoder channel, resulting in a plurality of FEC-encoder blocks residing on the first and second encoder channels. The first and second encoder channels differ in the number of sub-channels they contain (interleaving depth), and accordingly the arrangement of the FEC-encoded blocks in the first and second encoder channels are different. A first cross-section of the FEC-encoded segment data contained within the FEC-encoded blocks resident in the first encoder channel is added to a first transmit block T0. Similarly, A first cross-section of the FEC-encoded segment data contained within the FEC-encoded blocks resident in the second encoder channel is added to a second transmit block T1. The first and second transmit blocks are then communicated to the receiver.
Abstract:
A method of encoding data for transmission from a source to a destination over a communications channel is provided. A plurality of redundant symbols are generated from an ordered set of input symbols to be transmitted. A plurality of output symbols are generated 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 symbols in 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, and such that the ordered set of input symbols can be regenerated to a desired degree of accuracy from any predetermined number, N, of the output symbols.
Abstract:
An encoder uses an input file of data and a key to produce an output symbol. An output symbol with key I is generated by determining a weight, W(I), for the output symbol to be generated, selecting W(I) of the input symbols associated with the output symbol according to a function of I, and generating the output symbol's value B(I) from a predetermined value function F(I) of the selected W(I) input symbols. An encoder can be called repeatedly to generate multiple output symbols. The output symbols are generally independent of each other, and an unbounded number (subject to the resolution of I) can be generated, if needed. A decoder receives some or all of the output symbols generated. The number of output symbols needed to decode an input file is equal to, or slightly greater than, the number of input symbols comprising the file, assuming that input symbols and output symbols represent the same number of bits of data.