摘要:
A data distribution system has a number of data processing devices interconnected by data transmission media. At least one of the data processing devices transmit data to other data processing devices in the system. The transmitting data processing system includes memory for storing the data to be transmitted, programmable data processing circuitry, and data transmission apparatus for transmitting an encoded representation of the stored message as a sequence of data packets. Priority data, stored in the memory, represents a plurality of assigned priority levels for specified portions of the stored message such that portions of the stored message have respective assigned priority levels. A data encoding program generates an encoded representation of the stored message that includes, for each portion of the stored message, a level of redundant data corresponding to the priority level assigned to that portion of the stored message. As a result, the encoded representation of the stored message includes different levels of redundant data for the different portions of the stored message. Each receiving data processing system includes memory for storing received data, programmable data processing circuitry, and data receiving apparatus for receiving at least a portion of the transmitted data packets. A data decoding program generates a decoded representation of the received data stream. The data decoding program decodes different portions of the received encoded data in accordance with the different levels of redundant data included in the received data stream.
摘要:
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.
摘要:
Methods and apparatus for delivering data objects from an electronic device or system over a packet-switched network are provided, wherein source data is represented by encoded symbols in packets such that the source data is recoverable, at least approximately, from the encoded symbols, by arranging the source data into a plurality of source symbols, generating a plurality of encoding packets, wherein an encoding packet comprises a universal object symbol identifier (“UOSI”) and a plurality of encoding symbols representing source data for a packet structure identified by the UOSI, and sending the plurality of encoding packets to the packet-switched network.
摘要:
Transmitters and receivers deal with streams of data, wherein the receiver is expected to begin using received data before receiving all of the data. Concurrent streams are sent and FEC coding is used with the streams and done as an aggregate. The transmitter performs FEC operations over the plurality of streams, wherein source blocks from at least two streams logically associated into a jumbo source block and FEC processing is performed to generate one or more jumbo repair block from the jumbo source block. Each of the source blocks comprises one or more source symbols from their respective stream. The jumbo source symbols can be of constant size and are suitably aligned along size boundaries that make processing efficient. Each source symbol need not be the same size, and the number of source symbols from each stream in a jumbo source block need not be the same value across streams.
摘要:
Transmitters and receivers deal with streams of data, wherein the receiver is expected to begin using received data before receiving all of the data. Concurrent streams are sent and FEC coding is used with the streams and done as an aggregate. The transmitter performs FEC operations over the plurality of streams, wherein source blocks from at least two streams logically associated into a jumbo source block and FEC processing is performed to generate one or more jumbo repair block from the jumbo source block. Each of the source blocks comprises one or more source symbols from their respective stream. The jumbo source symbols can be of constant size and are suitably aligned along size boundaries that make processing efficient. Each source symbol need not be the same size, and the number of source symbols from each stream in a jumbo source block need not be the same value across streams.
摘要:
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.
摘要:
A sequence of symbol operations (a “schedule representation”) within a data storage device, wherein the operations are those used to process encoding or decoding operations of a forward error correction code (an “FEC code”) upon an arbitrary block of data of a given size (where size can be measured in numbers of symbols). The method is such that the schedule representation can be used to direct the processing of these operations upon a block of data in a way that is computationally efficient. Preferably, the same method can be applied to represent schedules derived from multiple different algorithms for the encoding or decoding of a code or for multiple different codes.
摘要:
A method for serving a data stream from a transmitter to a receiver includes: determining an underlying structure of the data stream; determining at least one objective, selected from a group of (1) reducing a start-up delay between when the receiver first starts receiving the data stream from the transmitter and when the receiver can start consumption of blocks of the data stream without interruption, according to the underlying structure, (2) reducing a transmission bandwidth needed to send the data stream, and (3) ensuring that the blocks of the data stream satisfy predetermined block constraints; and transmitting the blocks of the data stream consistent with the at least one objective and the underlying structure.
摘要:
In an encoder for encoding symbols of data using a computing device having memory constraints, a method of performing a transformation comprising loading a source block into memory of the computing device, performing an intermediate transformation of less than all of the source block, then replacing a part of the source block with intermediate results in the memory and then completing the transformation such that output symbols stored in the memory form a set of encoded symbols. A decoder can perform decoding steps in an order that allows for use of substantially the same memory for storing the received data and the decoded source block, performing as in-place transformations. Using an in-place transformation, a large portion of memory set aside for received data can be overwritten as that received data is transformed into decoded source data without requiring a similar sized large portion of memory for the decoded source data.
摘要:
Multiple files a served using a server coupled to a data network. A plurality of files is determined, wherein a file includes an integer number of blocks, and wherein each block includes at least one input symbol. For each file, an indication of at least one channel on which to serve the file is determined, and, for each file, a rate at which to serve the file is determined. Also, a schedule for processing the blocks is determined, and output symbols for the blocks are generated according to the schedule. The output symbols are transmitted on the corresponding at least one channel, wherein the files are concurrently served at their corresponding rates.