Abstract:
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.
Abstract:
A method of mapping m individual objects to source symbols for delivering data from a transmitter to a receiver in a communication system, the m individual objects ordered from object 1 to object m , wherein m > 1, includes: aggregating the m individual objects into an aggregate object, including for each individual object j , calculating a number of source symbols S(j) for containing data of the individual object j ; and partitioning the aggregate object into Z source blocks, including for each source block k and each individual object j , calculating a number of source symbols NSS(j, k) of individual object j in source block k , wherein the S(j) source symbols for each individual object j are arranged consecutively within consecutive source blocks, starting from a first source block for which NSS(j, k) > 0 to a last source block for which NSS(j, k) > 0.
Abstract:
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. A client device can be adapted to take advantage of the ingestion process. The client device might be configured to optimize use of resources, given the information available to it from the ingestion system. This may include configurations to determine the sequence, timing and construction of block requests based on monitoring buffer size and rate of change of buffer size, use of variable sized requests, mapping of block requests to underlying transport connections, flexible pipelining of requests, and/or use of whole file requests based on statistical considerations.
Abstract:
A method of encoding data for transmissions from a source to a destination over a communications channel is provided. The method operates on an ordered set of source symbols and may generate zero or more redundant symbols from the source symbols, wherein data is encoded in a first step according to a simple FEC code and in a second step, data is encoded according to a second FEC code, more complex than the first FEC code. The first FEC code and/or the second FEC code might comprise coding known in the art. These steps result in two groups of encoded data in such a way that a low complexity receiver may make use of one of the groups of encoded data while higher complexity receivers may make use of both groups of encoded data.
Abstract:
A method of encoding data for transmission from a source to a destination over a communications channel is provided. The method operates on an ordered set of input symbols and includes generating a plurality of redundant symbols from the input symbols based on linear constraints. The method also includes generating a plurality of output symbols from a combined set of symbols including the input symbols and the redundant symbols based on linear combinations, wherein at least one of the linear constraints or combinations is over a first finite field and at least one other of the linear constraints or combinations is over a different second finite field, and such that the ordered set of input symbols can be regenerated to a desired degree of accuracy from any predetermined number of the output symbols.
Abstract:
A method of encoding data for transmission from a source to a destination over a communications channel is provided. The method operates on an ordered set of input symbols and includes generating a plurality of redundant symbols from the input symbols. The method also includes generating a plurality of 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 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 of the output symbols. The plurality of redundant symbols is generated from an ordered set of input symbols to be transmitted 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.
Abstract:
Forward error correction scheduling techniques for an improved radio link protocol used in a wireless communication system, such as EV-DO. In one embodiment scheduling of the generation of repair symbols encoded to be transmitted along with source data is described. In another embodiment acknowledgment messages from a receiver are used to control the trailing edge of the protection window offered by the repair symbols. In another embodiment, non-acknowledgment messages from a receiver are used to control the generation of extra repair symbols. In another embodiment, a length field is used to avoid transmission of padding bytes over the air. In yet another embodiment, a symbol auxiliary field is appended to source symbols to indicate the padding bytes needed for symbol aligning thus avoiding the transmission of padding bytes over the air.
Abstract:
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. A client device can be adapted to take advantage of the ingestion process. The client device might be configured to optimize use of resources, given the information available to it from the ingestion system. This may include configurations to determine the sequence, timing and construction of block requests based on monitoring buffer size and rate of change of buffer size, use of variable sized requests, mapping of block requests to underlying transport connections, flexible pipelining of requests, and/or use of whole file requests based on statistical considerations.
Abstract:
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 include a cache. A client device can be adapted to take advantage of the ingestion process as well as improvements that make for a better presentation independent of the ingestion process. The client devices and ingestion system can be coordinated to have a predefined mapping and template for making block requests to HTTP file names that a conventional file server can accept through the use of URL construction rules. Segment size might be specified in an approximate manner for more efficient organization.
Abstract:
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.