The present invention relates to encoding and decoding data in communications systems and more specifically to communication systems that encode and decode data to account for errors and gaps in communicated data.
Transmission of files between a sender and a recipient over a communications channel has been the subject of much literature. Preferably, a recipient desires to receive an exact copy of data transmitted over a channel by a sender with some level of certainty. Where the channel does not have perfect fidelity (which covers most all physically realizable systems), one concern is how to deal with data lost or garbled in transmission. Lost data (erasures) are often easier to deal with than corrupted data (errors) because the recipient cannot always tell when corrupted data is data received in error. Many error-correcting codes have been developed to correct for erasures and/or for errors. Typically, the particular code used is chosen based on some information about the infidelities of the channel through which the data is being transmitted and the nature of the data being transmitted. For example, where the channel is known to have long periods of infidelity, a burst error code might be best suited for that application. Where only short, infrequent errors are expected a simple parity code might be best.
Another consideration in selecting a code is the protocol used for transmission. In the case of the global internetwork of networks known as the “Internet” (with a capital “I”), a packet protocol is used for data transport. That protocol is called the Internet Protocol or “IP” for short. When a file or other block of data is to be transmitted over an IP network, it is partitioned into equal size input symbols and input symbols are placed into consecutive packets. The “size” of an input symbol can be measured in bits, whether or not the input symbol is actually broken into a bit stream, where an input symbol has a size of M bits when the input symbol is selected from an alphabet of 2M symbols. In such a packet-based communication system, a packet oriented coding scheme might be suitable. A transmission is called reliable if it allows the intended recipient to recover an exact copy of the original file even in the face of erasures in the network. On the Internet, packet loss often occurs because sporadic congestion causes the buffering mechanism in a router to reach its capacity, forcing it to drop incoming packets. Protection against erasures during transport has been the subject of much study.
The Transport Control Protocol (“TCP”) is a point-to-point packet control scheme in common use that has an acknowledgment mechanism. TCP is good for one-to-one communications, where the sender and recipient both agree on when the transmission will take place and be received and both agree on which transmitters and receivers will be used. However, TCP is often not suitable for one-to-many or many-to-many communications or where the sender and the recipient independently determine when and where they will transmit or receive data.
Using TCP, a sender transmits ordered packets and the recipient acknowledges receipt of each packet. If a packet is lost, no acknowledgment will be sent to the sender and the sender will resend the packet. Packet loss has a number of causes. With protocols such as TCP/IP, the acknowledgment paradigm allows packets to be lost without total failure, since lost packets can just be retransmitted, either in response to a lack of acknowledgment or in response to an explicit request from the recipient. Either way, an acknowledgment protocol requires a back channel from the recipient to the sender that is used heavily at times when the number of lost packets is large.
Although acknowledgment-based protocols are generally suitable for many applications and are in fact widely used over the current Internet, they are inefficient, and sometimes completely infeasible, for certain applications as such as those described in U.S. Pat. No. 6,307,487 issued to Michael G. Luby entitled “Information Additive Code Generator and Decoder for Communication Systems” (hereinafter “Luby I”). Furthermore, acknowledgment-based protocols do not scale well to broadcasting, where one sender is sending a file simultaneously to multiple users. For example, suppose a sender is broadcasting a file to multiple recipients over a satellite channel. Each recipient may experience a different pattern of packet loss. Protocols that rely on acknowledgment data (either positive or negative) for reliable delivery of the file require a back channel from each recipient to the sender, and this can be prohibitively expensive to provide. Furthermore, this requires a complex and powerful sender to be able to properly handle all of the acknowledgment data sent from the recipients. Another drawback is that if different recipients lose different sets of packets, rebroadcast of packets missed only by a few of the recipients causes reception of useless duplicate packets by other recipients.
An alternative to an acknowledgment-based protocol that is sometimes used in practice is a carousel-based protocol. A carousel protocol partitions an input file into equal length input symbols, places each input symbol into a packet, and then continually cycles through and transmits all the packets. A major drawback with a carousel-based protocol is that if a recipient misses even one packet, then the recipient has to wait another entire cycle before having a chance at receiving the missed packet. Another way to view this is that a carousel-based protocol can cause a large amount of useless duplicate data reception. For example, if a recipient receives packets from the beginning of the carousel, stops reception for a while, and then starts receiving again at the beginning of the carousel, a large number of useless duplicate packets are received.
One solution that has been proposed to solve the above problems is to avoid the use of an acknowledgment-based protocol, and instead use Forward Error-Correction (FEC) codes, such as Reed-Solomon codes or Tornado codes, or chain reaction codes which are information additive codes, to increase reliability. With these codes, output symbols are generated from the content and sent instead of just sending the input symbols that constitute the content. Erasure correcting codes, such as Reed-Solomon or Tornado codes, generate a fixed number of output symbols for a fixed length content. For example, for K input symbols, N output symbols might be generated. These N output symbols may comprise the K original input symbols and N−K redundant symbols. If storage permits, then the sender can compute the set of output symbols for each content only once and transmit the output symbols using a carousel protocol.
One problem with some FEC codes is that they require excessive computing power or memory to operate. Another problem is that the number of output symbols must be determined in advance of the coding process. This can lead to inefficiencies if the loss rate of packets is overestimated, and can lead to failure if the loss rate of packets is underestimated.
For traditional FEC codes, the number of possible output symbols that can be generated is of the same order of magnitude as the number of input symbols the content is partitioned into. Typically, most or all of these output symbols are generated in a preprocessing step before the sending step. These output symbols have the property that all the input symbols can be regenerated from any subset of the output symbols equal in length to the original content or slightly longer in length than the original content.
Embodiments described in Luby I (referred to herein as “chain reaction codes”) provide a different form of forward error-correction that addresses the above issues. For chain reaction codes, the pool of possible output symbols that can be generated is typically orders of magnitude larger than the number of the input symbols, and a random output symbol from the pool of possibilities can be generated very quickly. For chain reaction codes, the output symbols can be generated on the fly on an as needed basis concurrent with the sending step. Chain reaction codes have the property that all input symbols of the content can be regenerated from any subset of a set of randomly generated output symbols slightly longer in length than the original content.
In one embodiment of a chain reaction code, each output symbol is obtained as the Exclusive-Or (XOR, denoted by {circle around (+)}) of some of the input symbols. If K denotes the total number of input symbols, then each output symbol is, on average, the XOR of c*ln(K) input symbols, where ln(K) is the natural logarithm of K and c is a suitable constant. For example, where K is 60,000, each output symbol is the XOR of, on average, 28.68 input symbols, and where K is 10,000, each output symbol is the XOR of, on average, 22.86 input symbols. A large number of XOR's results in a longer computation time of the output symbols as each such operation involves fetching data from memory, performing the XOR operation, and updating memory locations.
One property of the output symbols produced by a chain reaction encoder is that a receiver is able to recover the original file as soon as enough output symbols have been received. Specifically, to recover the original K input symbols with a high probability, the receiver needs approximately K+A output symbols. The ratio A/K is called the “relative reception overhead.” The relative reception overhead depends on the number K of input symbols, and on the reliability of the decoder. For example, in one specific embodiment, and where K is equal to 60,000, a relative reception overhead of 5% ensures that the decoder successfully decodes the input file with a probability of at least 1-10−8, and where K is equal to 10,000, a relative reception overhead of 15% ensures the same success probability of the decoder. In one embodiment, the relative reception overhead of chain reaction codes can be computed as (13*sqrt(K)+200)/K, where sqrt(K) is the square root of the number of input symbols K. In this embodiment the relative reception overhead of chain reaction codes tends to be larger for small values of K.
In embodiments in which output symbols are encoded using the XOR function, a chain reaction decoder's main computational operation is performing XOR's of memory locations. The number of such XOR's scales in the same way as for the chain reaction encoder.
Chain reaction codes are extremely useful for communication over a packet based network. However, they can be fairly computationally intensive. For example, in some specific embodiments of chain reaction codes, when the number of input symbols K is 60,000, then computation of each output symbols requires fetching, on average, 28.68 randomly selected input symbols and XOR'ing them. Because the number of files that can be simultaneously served by a server is inversely proportional to the number of operations needed for every output symbol, it would be useful to decrease the number of operations needed for every output symbol. Decreasing the latter by a factor of say, three, increases the number of files that can be simultaneously served from one server by a factor of three.
Another property of chain reaction codes is that they require a reception overhead that can be relatively large for a given target success probability. For example, as pointed out above, in some specific embodiments of chain reaction codes, if K is 10,000, then a relative reception overhead of 15% ensures a decoding success probability of at least 1-10−8. The reception overhead tends to increase for smaller K. For example, in some specific embodiments of chain reaction codes, if K is 1000, a relative reception overhead of 61% ensures successful decoding with the same probability. Moreover, decreasing the target error probability to a number around 10−12, as required by certain applications such as high speed transmission of content over a satellite network, calls for an even larger reception overhead.
According to one embodiment of the invention, 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.
According to another embodiment of the invention, a system for encoding data for transmission from a source to a destination over a communications channel is provided. The system comprises a static encoder coupled to receive a plurality of input symbols, the plurality of input symbols generated from data to be transmitted. The static encoder includes a redundant symbol generator that generates a plurality of redundant symbols based on the input symbols. The system additionally comprises a dynamic encoder coupled to receive the plurality of input symbols and the plurality of redundant symbols. The dynamic encoder includes an output symbol generator that generates a plurality of output symbols from a combined set of symbols including the plurality of input symbols and the plurality of redundant symbols, wherein the number of possible output symbols is much larger than the number of symbols in the combined set, wherein at least one output symbol is generated from more than symbol from the combined set and from less than all of the symbols in the combined set, 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.
According to yet another embodiment of the invention, a method of receiving data transmitted from a source over a communications channel is provided. The method includes receiving output symbols, wherein each output symbol is generated from at least one symbol in a combined set of input symbols and redundant symbols, wherein at least one output symbol is generated from more than one symbol in the combined set and less than all of the symbols in the combined set, wherein the number of possible output symbols is much larger than the number of symbols in the combined set, wherein the input symbols are from an ordered set of input symbols, and wherein the redundant symbols are generated from the input symbols. The method also includes upon receiving any predetermined number, N, of the output symbols, regenerating at least a subset of the symbols in the combined set from the N output symbols, the subset including a plurality of regenerated input symbols and a plurality of regenerated redundant symbols. The method further includes, if the step of regenerating at least a subset of the symbols from the N output symbols does not regenerate the input symbols to a desired degree of accuracy, regenerating at least some of unregenerated input symbols from the plurality of regenerated redundant symbols and/or some of the plurality of regenerated input symbols.
According to still another embodiment of the invention, a system for receiving data transmitted from a source over a communications channel is provided. The system comprises a receive module coupled to a communications channel for receiving output symbols transmitted over the communications channel, wherein each output symbol is generated from at least one symbol in a combined set of input symbols and redundant symbols, wherein at least one output symbol is generated from more than one symbol in the combined set and less than all of the symbols in the combined set, wherein the number of possible output symbols is much larger than the number of symbols in the combined set, wherein the input symbols are from an ordered set of input symbols, wherein the redundant symbols are generated from the input symbols. The system additionally comprises a dynamic decoder that, upon receiving a predetermined number, N, of the output symbols, decodes a subset of the symbols in the combined set from the N output symbols, the subset including a plurality of decoded input symbols and a plurality of decoded redundant symbols. The system further comprises a static decoder that decodes at least some of undecoded input symbols, if any, from the plurality of decoded redundant symbols.
According to yet another embodiment of the invention, a computer data signal embodied in a carrier wave is provided. The computer data signal includes a plurality of output symbols, wherein the plurality of output symbols represents symbols generated from a combined set of symbols including an ordered set of input symbols and the redundant symbols, wherein the redundant symbols are generated from the input 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 a receiver of the data signal can regenerate the ordered set of input symbols to a desired degree of accuracy from any predetermined number of the output symbols.
Numerous benefits are achieved by way of the present invention. For example, in a specific embodiment, the computational expense of encoding data for transmission over a channel is reduced. In another specific embodiment, the computational expense of decoding such data is reduced. Depending upon the embodiment, one or more of these benefits may be achieved. These and other benefits are provided in more detail throughout the present specification and more particularly below.
A further understanding of the nature and the advantages of the inventions disclosed herein may be realized by reference to the remaining portions of the specification and the attached drawings.
The present disclosure references U.S. Pat. No. 6,307,487 (Luby I), and U.S. Pat. No. 6,320,520 issued to Michael G. Luby entitled “Information Additive Group Code Generator and Decoder for Communication Systems” (hereinafter “Luby II”), the entire disclosures of which are herein incorporated by reference for all purposes. Luby I and Luby II provide teachings of systems and methods that can be employed in certain embodiments according to the present invention. It is to be understood, however, that these systems and methods are not required of the present invention, and many other variations, modifications, or alternatives can also be used.
In the specific embodiments described herein, a coding scheme denoted as “multi-stage coding” is described, preceded by an explanation of the meaning and scope of various terms used in this description.
Multi-stage encoding, as described herein, encodes the data in a plurality of stages. Typically, but not always, a first stage adds a predetermined amount of redundancy to the data. A second stage then uses a chain reaction code, or the like, to produce output symbols from the original data and the redundant symbols computed by the first stage of the encoding. In one specific embodiment of the present invention, the received data is first decoded using a chain reaction decoding process. If that process is not successful in recovering the original data completely, a second decoding step can be applied.
One advantage of some embodiments described herein, is that fewer arithmetic operations are necessary to produce output symbols, as compared to chain reaction coding alone, as will be described below. Another advantage of some specific embodiments that include a first stage of encoding and a second stage of encoding is that the first stage of encoding and the second stage of encoding can be done at separate times and/or by separate devices, thus partitioning the computational load. This can be an advantage, for instance, if it is desired to perform a portion of the encoding substantially concurrently with the transmission. Particularly, the first stage of encoding can be performed well in advance of the transmission, while the second stage of encoding can be performed substantially concurrently with the transmission. It is to be understood however, that in some embodiments, the first and second stages of encoding can both be performed substantially concurrently with transmission, and/or with one device. Many other variations, modifications, and alternatives will be apparent to those skilled in the art after review of this disclosure.
In embodiments of multi-stage encoding, redundant symbols are generated from the input file during the first stage of encoding. In these embodiments, in the second stage of encoding, output symbols are generated from the combination of the input file and the redundant symbols. In some of these embodiments, the output symbols can be generated as needed. In embodiments in which the second stage comprises chain reaction encoding, each output symbol can be generated without regard to how other output symbols are generated. Once generated, these output symbols can then be placed into packets and transmitted to their destination, with each packet containing one or more output symbols. Non-packetized transmission techniques can be used instead or as well.
As used herein, the term “file” refers to any data that is stored at one or more sources and is to be delivered as a unit to one or more destinations. Thus, a document, an image, and a file from a file server or computer storage device, are all examples of “files” that can be delivered. Files can be of known size (such as a one megabyte image stored on a hard disk) or can be of unknown size (such as a file taken from the output of a streaming source). Either way, the file is a sequence of input symbols, where each input symbol has a position in the file and a value.
Transmission is the process of transmitting data from one or more senders to one or more recipients through a channel in order to deliver a file. A sender is also sometimes referred to as the encoder. If one sender is connected to any number of recipients by a perfect channel, the received data can be an exact copy of the input file, as all the data will be received correctly. Here, we assume that the channel is not perfect, which is the case for most real-world channels. Of the many channel imperfections, two imperfections of interest are data erasure and data incompleteness (which can be treated as a special case of data erasure). Data erasure occurs when the channel loses or drops data. Data incompleteness occurs when a recipient does not start receiving data until some of the data has already passed it by, the recipient stops receiving data before transmission ends, the recipient chooses to only receive a portion of the transmitted data, and/or the recipient intermittently stops and starts again receiving data. As an example of data incompleteness, a moving satellite sender might be transmitting data representing an input file and start the transmission before a recipient is in range. Once the recipient is in range, data can be received until the satellite moves out of range, at which point the recipient can redirect its satellite dish (during which time it is not receiving data) to start receiving the data about the same input file being transmitted by another satellite that has moved into range. As should be apparent from reading this description, data incompleteness is a special case of data erasure, since the recipient can treat the data incompleteness (and the recipient has the same problems) as if the recipient was in range the entire time, but the channel lost all the data up to the point where the recipient started receiving data. Also, as is well known in communication systems design, detectable errors can be considered equivalent to erasures by simply dropping all data blocks or symbols that have detectable errors.
In some communication systems, a recipient receives data generated by multiple senders, or by one sender using multiple connections. For example, to speed up a download, a recipient might simultaneously connect to more than one sender to transmit data concerning the same file. As another example, in a multicast transmission, multiple multicast data streams might be transmitted to allow recipients to connect to one or more of these streams to match the aggregate transmission rate with the bandwidth of the channel connecting them to the sender. In all such cases, a concern is to ensure that all transmitted data is of independent use to a recipient, i.e., that the multiple source data is not redundant among the streams, even when the transmission rates are vastly different for the different streams, and when there are arbitrary patterns of loss.
In general, a communication channel is that which connects the sender and the recipient for data transmission. The communication channel could be a real-time channel, where the channel moves data from the sender to the recipient as the channel gets the data, or the communication channel might be a storage channel that stores some or all of the data in its transit from the sender to the recipient. An example of the latter is disk storage or other storage device. In that example, a program or device that generates data can be thought of as the sender, transmitting the data to a storage device. The recipient is the program or device that reads the data from the storage device. The mechanisms that the sender uses to get the data onto the storage device, the storage device itself and the mechanisms that the recipient uses to get the data from the storage device collectively form the channel. If there is a chance that those mechanisms or the storage device can lose data, then that would be treated as data erasure in the communication channel.
When the sender and recipient are separated by a communication channel in which symbols can be erased, it is preferable not to transmit an exact copy of an input file, but instead to transmit data generated from the input file that assists with recovery of erasures. An encoder is a circuit, device, module or code segment that handles that task. One way of viewing the operation of the encoder is that the encoder generates output symbols from input symbols, where a sequence of input symbol values represent the input file. Each input symbol would thus have a position, in the input file, and a value. A decoder is a circuit, device, module or code segment that reconstructs the input symbols from the output symbols received by the recipient. In multi-stage coding, the encoder and the decoder are further divided into sub-modules each performing a different task.
In embodiments of multi-stage coding systems, the encoder and the decoder can be further divided into sub-modules, each performing a different task. For instance, in some embodiments, the encoder comprises what is referred to herein as a static encoder and a dynamic encoder. As used herein, a “static encoder” is an encoder that generates a number of redundant symbols from a set of input symbols, wherein the number of redundant symbols is determined prior to encoding. Examples of static encoding codes include Reed-Solomon codes, Tornado codes, Hamming codes, Low Density Parity Check (LDPC) codes, etc. The term “static decoder” is used herein to refer to a decoder that can decode data that was encoded by a static encoder.
As used herein, a “dynamic encoder” is an encoder that generates output symbols from a set of input symbols, where the number of possible output symbols is orders of magnitude larger than the number of input symbols, and where the number of output symbols to be generated need not be fixed. One example of a dynamic encoder is a chain reaction encoder, such as the encoders described in Luby I and Luby II. The term “dynamic decoder” is used herein to refer to a decoder that can decode data that was encoded by a dynamic encoder.
Embodiments of multi-stage coding need not be limited to any particular type of input symbol. Typically, the values for the input symbols are selected from an alphabet of 2M symbols for some positive integer M. In such cases, an input symbol can be represented by a sequence of M bits of data from the input file. The value of M is often determined based on, for example, the uses of the application, the communication channel, and/or the size of the output symbols. Additionally, the size of an output symbol is often determined based on the application, the channel, and/or the size of the input symbols. In some cases, the coding process might be simplified if the output symbol values and the input symbol values were the same size (i.e., representable by the same number of bits or selected from the same alphabet). If that is the case, then the input symbol value size is limited when the output symbol value size is limited. For example, it may be desired to put output symbols in packets of limited size. If some data about a key associated with the output symbols were to be transmitted in order to recover the key at the receiver, the output symbol would preferably be small enough to accommodate, in one packet, the output symbol value and the data about the key.
As an example, if an input file is a multiple megabyte file, the input file might be broken into thousands, tens of thousands, or hundreds of thousands of input symbols with each input symbol encoding thousands, hundreds, or only few bytes. As another example, for a packet-based Internet channel, a packet with a payload of size of 1024 bytes might be appropriate (a byte is 8 bits). In this example, assuming each packet contains one output symbol and 8 bytes of auxiliary information, an output symbol size of 8128 bits ((1024−8)*8) would be appropriate. Thus, the input symbol size could be chosen as M=(1024−8)*8, or 8128 bits. As another example, some satellite systems use the MPEG packet standard, where the payload of each packet comprises 188 bytes. In that example, assuming each packet contains one output symbol and 4 bytes of auxiliary information, an output symbol size of 1472 bits ((188−4)*8), would be appropriate. Thus, the input symbol size could be chosen as M=(188−4)*8, or 1472 bits. In a general-purpose communication system using multi-stage coding, the application-specific parameters, such as the input symbol size (i.e., M, the number of bits encoded by an input symbol), might be variables set by the application.
Each output symbol has a value. In one preferred embodiment, which we consider below, each output symbol also has associated therewith an identifier called its “key.” Preferably, the key of each output symbol can be easily determined by the recipient to allow the recipient to distinguish one output symbol from other output symbols. Preferably, the key of an output symbol is distinct from the keys of all other output symbols. There are various forms of keying discussed in previous art. For example, Luby I describes various forms of keying that can be employed in embodiments of the present invention.
Multi-stage coding is particularly useful where there is an expectation of data erasure or where the recipient does not begin and end reception exactly when a transmission begins and ends. The latter condition is referred to herein as “data incompleteness.” Regarding erasure events, multi-stage coding shares many of the benefits of chain reaction coding described in Luby I. In particular, multi-stage output symbols are information additive, so any suitable number of packets can be used to recover an input file to a desired degree of accuracy. These conditions do not adversely affect the communication process when multi-stage coding is used, because the output symbols generated with multi-stage coding are information additive. For example, if a hundred packets are lost due to a burst of noise causing data erasure, an extra hundred packets can be picked up after the burst to replace the loss of the erased packets. If thousands of packets are lost because a receiver did not tune into a transmitter when it began transmitting, the receiver could just pickup those thousands of packets from any other period of transmission, or even from another transmitter. With multi-stage coding, a receiver is not constrained to pickup any particular set of packets, so it can receive some packets from one transmitter, switch to another transmitter, lose some packets, miss the beginning or end of a given transmission and still recover an input file. The ability to join and leave a transmission without receiver-transmitter coordination helps to simplify the communication process.
In some embodiments, transmitting a file using multi-stage coding can include generating, forming or extracting input symbols from an input file, computing redundant symbols, encoding input and redundant symbols into one or more output symbols, where each output symbol is generated based on its key independently of all other output symbols, and transmitting the output symbols to one or more recipients over a channel. Additionally, in some embodiments, receiving (and reconstructing) a copy of the input file using multi-stage coding can include receiving some set or subset of output symbols from one of more data streams, and decoding the input symbols from the values and keys of the received output symbols.
Aspects of the invention will now be described with reference to the figures.
System Overview
Static key generator 130 produces a stream of static keys S0, S1, . . . . The number of the static keys generated is generally limited and depends on the specific embodiment of encoder 115. The generation of static keys will be subsequently described in more detail. Dynamic key generator 120 generates a dynamic key for each output symbol to be generated by the encoder 115. Each dynamic key is generated so that a large fraction of the dynamic keys for the same input file are unique. For example, Luby I describes embodiments of key generators that can be used. The outputs of dynamic key generator 120 and the static key generator 130 are provided to encoder 115.
From each key I provided by dynamic key generator 120, encoder 115 generates an output symbol, with a value B(I), from the input symbols provided by the input symbol generator. The operation of encoder 115 will be described in more detail below. The value of each output symbol is generated based on its key, on some function of one or more of the input symbols, and possibly one or more redundant symbols that had been computed from the input symbols. The collection of input symbols and redundant symbols that give rise to a specific output symbol is referred to herein as the output symbol's “associated symbols” or just its “associates”. The selection of the function (the “value function”) and the associates is done according to a process described in more detail below. Typically, but not always, M is the same for input symbols and output symbols, i.e., they both code for the same number of bits.
In some embodiments, the number K of input symbols is used by the encoder 115 to select the associates. If K is not known in advance, such as where the input is a streaming file, K can be just an estimate. The value K might also be used by encoder 115 to allocate storage for input symbols and any intermediate symbols generated by encoder 115.
Encoder 115 provides output symbols to a transmit module 140. Transmit module 140 is also provided the key of each such output symbol from the dynamic key generator 120. Transmit module 140 transmits the output symbols, and depending on the keying method used, transmit module 140 might also transmit some data about the keys of the transmitted output symbols, over a channel 145 to a receive module 150. Channel 145 is assumed to be an erasure channel, but that is not a requirement for proper operation of communication system 100. Modules 140, 145 and 150 can be any suitable hardware components, software components, physical media, or any combination thereof, so long as transmit module 140 is adapted to transmit output symbols and any needed data about their keys to channel 145 and receive module 150 is adapted to receive symbols and potentially some data about their keys from channel 145. The value of K, if used to determine the associates, can be sent over channel 145, or it may be set ahead of time by agreement of encoder 115 and decoder 155.
As explained above, channel 145 can be a real-time channel, such as a path through the Internet or a broadcast link from a television transmitter to a television recipient or a telephone connection from one point to another, or channel 145 can be a storage channel, such as a CD-ROM, disk drive, Web site, or the like. Channel 145 might even be a combination of a real-time channel and a storage channel, such as a channel formed when one person transmits an input file from a personal computer to an Internet Service Provider (ISP) over a telephone line, the input file is stored on a Web server and is subsequently transmitted to a recipient over the Internet.
Because channel 145 is assumed to be an erasure channel, communications system 100 does not assume a one-to-one correspondence between the output symbols that exit receive module 150 and the output symbols that go into transmit module 140. In fact, where channel 145 comprises a packet network, communications system 100 might not even be able to assume that the relative order of any two or more packets is preserved in transit through channel 145. Therefore, the key of the output symbols is determined using one or more of the keying schemes described above, and not necessarily determined by the order in which the output symbols exit receive module 150.
Receive module 150 provides the output symbols to a decoder 155, and any data receive module 150 receives about the keys of these output symbols is provided to a dynamic key regenerator 160. Dynamic key regenerator 160 regenerates the dynamic keys for the received output symbols and provides these dynamic keys to decoder 155. Static key generator 163 regenerates the static keys S0, S1, . . . and provides them to decoder 155. The static key generator has access to random number generator 135 used both during the encoding and the decoding process. This can be in the form of access to the same physical device if the random numbers are generated on such device, or in the form of access to the same algorithm for the generation of random numbers to achieve identical behavior. Decoder 155 uses the keys provided by dynamic key regenerator 160 and static key generator 163 together with the corresponding output symbols, to recover the input symbols (again IS(0), IS(1), IS(2), . . . ). Decoder 155 provides the recovered input symbols to an input file reassembler 165, which generates a copy 170 of input file 101 or input stream 105.
An Encoder
Dynamic encoder 220 receives the input symbols and the redundant symbols, and generates output symbols as will be described in further detail below. In one embodiment in which the redundant symbols are stored in the input symbol buffer 205, dynamic encoder 220 receives the input symbols and redundant symbols from input symbol buffer 205.
Redundancy calculator 230 computes the number R of redundant symbols from the number K of input symbols. This computation is described in further detail below.
In situations where the speed of generating output symbols is a critical resource, the input file could be encoded using static encoder 210 and stored on an intermediate device before the transmission of output symbols starts. This device could be, for example, an attached storage device at a different physical location than dynamic encoder 220, it could be included in the same physical device as dynamic encoder 220, etc. In the case where the file has been encoded with static encoder 210 well in advance of encoding with dynamic encoder 220, the computational device that implements dynamic encoder 220 need not devote resources to static encoding. Thus, it could devote more resources to dynamic encoding in order to, for example, increase the speed of generating output symbols for the input file, generate output symbols for other files, perform other tasks, etc. Whether or not static encoding can or should be performed in advance of dynamic encoding is dependent upon the particular implementation.
Overview of Static Encoder
The general operation of static encoder 210 will be described with reference to
Referring again to
Referring now to
Overview of Dynamic Encoder
Referring again to
Dynamic encoder 500 includes a weight selector 510, an associator 515, a value function selector 520 and a calculator 525. As shown in
In operation, the K+R dynamic input symbols are received from input symbol buffer 205 and stored in dynamic input symbol buffer 505. As explained above, each dynamic input symbol has a position (for example, the position of an input symbol may be its original position in the input file) and a value. The dynamic input symbols need not be stored in dynamic input symbol buffer 505 in their respective order, so long as the position of stored dynamic input symbols can be determined.
Using key I and the number of dynamic input symbols K+R, weight selector 510 determines the number W(I) of dynamic input symbols that are to be “associates” of the output symbol having key I. Using key I, weight W(I), and the number of dynamic input symbols K+R, associator 515 determines a list AL(I) of positions of dynamic input symbols associated with the output symbol. It should be understood that W(I) need not be separately or explicitly calculated if associator 515 can generate AL(I) without knowing W(I) ahead of time. Once AL(I) is generated, W(I) can be easily determined because it is the number of associates in AL(I).
Associator 515 is a mapper that receives as input a key I, a number N, and a number t and produces a list X(0), . . . , X(t−1) of integers between 0 and N−1. Preferably, these integers are distinct and uniformly distributed on their range. For example, in the case of dynamic encoder 500 in
The mapping given by associator 515 can take a variety of forms. It can have access to a source of truly random or pseudorandom bits to make its output random. However, it should be chosen to produce the same output by both encoder and decoder for the same key I, the same N, and the same t. To satisfy this requirement, a pseudorandom sequence could be generated by both encoder and decoder seeded with the key I. Instead of a pseudorandom sequence, a truly random sequence might be used for computing the output, but for that to be useful, the random sequence used for generating the output would need to be communicated to the decoder.
Referring again to
If used, value function selector 520 determines a value function F(I) from key I and from K+R. In one variation, the value function F(I) is the same value function F for all I. In that variation, value function selector 520 is not needed and calculator 525 can be configured with the value function F. For example, the value function might be XOR for all I, i.e., the output symbol value is an XOR (exclusive OR) of the values of all of its associates.
For each key I, weight selector 510 determines a weight W(I) from I and K+R. In one variation, weight selector 510 selects W(I) by using the key I to first generate a random looking number and then uses this number to look up the value of W(I) in a distribution table that is stored within, or accessible by, weight selector 510. A more detailed description of how such a distribution table might be formed and accessed is described below. Once weight selector 510 determines W(I), this value is provided to associator 515 and to calculator 525.
Using list AL(I), weight W(I) and either the value function F(I) provided by value function selector 520 or a preselected value function F, calculator 525 accesses the W(I) dynamic input symbols referenced by AL(I) in dynamic input symbol buffer 505 to calculate the value, B(I), for the current output symbol. An example of a procedure for calculating AL(I) is described below, but another suitable procedure might be used instead. Preferably, the procedure gives each input symbol a roughly even chance of being selected as an associate for a given output symbol and does the selection in a way that the decoder can replicate if the decoder does not already have AL(I) available to it.
Dynamic encoder 500 then outputs B(I). In effect, dynamic encoder 500 performs the action illustrated in
B(I)=IS(0)⊕IS(2)⊕RE(R−2)
for that value of I. In case the value function XOR is used, it is understood that the redundant symbols have the same number of bits as the original symbols IS(0), . . . , IS(K−1) and these in turn have the same number of bits as the output symbols.
The generated output symbols are then transmitted and received as described above. Herein, it is assumed that some of the output symbols might have been lost or gotten out of order, or were generated by one or more encoders. It is assumed, however, that the output symbols that are received have been received with an indication of their key and some assurance their values B(I) are accurate. As shown in
Static Encoder
The main function of the static encoder is to add redundant information to the original data in such a way that recovery of the original data is possible in face of erasures. Such redundant information can assist a decoder to recover the input symbols that a dynamic decoder could not recover. In typical applications, the static encoder should be efficient in terms of the number of redundant symbols required to guarantee recovery to a desired degree of accuracy in the face of erasures, and/or in terms of the computational expense of the encoding process and/or the decoding process. For instance, for a given target erasure rate p which is, in applications, dictated by the performance of the dynamic decoder, the aim is to make the number R of redundant symbols as small as possible while guaranteeing fast recovery of the original data if at most a fraction p of the data is lost. A class of codes satisfying these requirements is that of LDPC codes, well-known to those skilled in the art. While these codes can recover the original data in many cases, there are infrequent occasions in which they recover everything but two or three of the original input symbols. Thus, in some embodiments, prior to LDPC encoding, the input data is first encoded using a code that can recover the original data if there are two or three erasures. This first encoding generates a first plurality of redundant symbols. After this first encoding, the plurality of the original symbols and the first plurality of redundant symbols are encoded using an LDPC encoder. The extended Hamming code, which is well-known to those skilled in the art and which is described briefly below, is suitable for the purpose of the first level of encoding, as it can recover the original data if there are three or less erasures, and does so by adding a small number of redundant symbols. It is to be understood that other types of encoding can also be used. For instance, in some applications, it may be acceptable that all but two or three of the input symbols are recovered. Thus, in such applications, an LDPC code alone may be appropriate. Additionally, other types of encoding might be appropriate for a particular application such as Reed-Solomon, Tornado, etc. Therefore, it is to be understood that many types of encodings alone or in combination can be used according other embodiments of the present invention.
Hamming encoder 610 is coupled to receive the input symbols IS(0), . . . , IS(K−1) from an input symbol buffer 625, the number K of input symbols, and the parameter D. In response, Hamming encoder 610 generates D+1 redundant symbols HA(0), HA(1), . . . , HA(D) according to a Hamming code. In one embodiment, input symbol buffer 625 is input symbol buffer 205 of
LDPC encoder 620 is coupled to receive the input symbols IS(0), . . . , IS(K−1), the number K+D+1 of input symbols and Hamming encoded redundant symbols, the parameter E, and static keys S0, S1, . . . . In response, LDPC encoder 620 generates E redundant symbols according to a LDPC code. The number E of redundant symbols calculated by the LDPC encoder is equal to R−D−1, wherein R is the number of redundant symbols. As is known to those skilled in the art, there are various ways of encoding information using LDPC codes. LDPC codes are described by means of a graph structure comprising a set of message nodes, a set of check nodes and edges connecting message nodes to check nodes. The set of valid LDPC codewords is the set of those settings of the message nodes such that for each check node, the XOR of the neighboring message nodes is zero. In certain applications, it is preferable for the message nodes to all have the same degree, i.e., to be connected to the same number of check nodes, as this simplifies the implementation of the encoder, and also makes the calculation of the error probability of the decoder easier. In one specific embodiment of the invention, the number of check nodes to which each message node is connected is four. It has been found that this number provides an acceptable trade-off between the running time/computational load of the encoder and the probability of failure of the decoder. Moreover, it has also been found that it is preferable for the check nodes neighboring a given message node to be randomly chosen among the set of check nodes. LDPC encoder 620 can be implemented in any number of ways known to those skilled in the art of error-correcting and erasure-correcting codes.
As described above, in some embodiments, LDPC encoder 620 receives static keys S0, S1, . . . generated by static key generator 130 of
In one specific embodiment of static encoder 600 illustrated in
Referring again to
It has been found that the failure probability of the decoder increases when the number of input symbols is decreased. It has also been found that this is largely because the encoding process does not create enough information about the original content if the size of the original content is relatively small. Therefore, another embodiment of an encoder might be used that generates redundant symbols that convey more information about the original symbols.
First, in step 805, a variable i is initialized to zero. Variable i keeps track of the number of redundant symbols already generated. In step 810, a number t is calculated as the smallest odd integer greater than or equal to K/2. In step 815, values P1, P2, . . . , Pt are generated based on K, t, and a static key Si. The values P1, P2, . . . , Pt indicate the positions of input symbols that will be used to generate a redundant symbol. In one particular embodiment, an associator such as associator 515 of
In step 820, the value of RE(i) is computed as the XOR of the values IS(P1), IS(P2), . . . , IS(Pt). In step 825, the variable i is incremented by one to prepare computation of the next redundant symbol, and in step 830, it is determined whether all the redundant symbols have been computed. If not, then the flow returns to step 815.
Decoder Overview
Decoder 900 comprises a dynamic decoder 905 and a static decoder 910. Dynamic decoder 905 receives the output symbols B(Ia), B(Ib), . . . from receive module 150 in
Input symbols and redundant symbols recovered by dynamic decoder 905 are stored in a reconstruction buffer 915. Upon completion of dynamic decoding, static decoder 910 attempts to recover any input symbols not recovered by dynamic decoder 905, if any. In particular, static decoder 910 receives input symbols and redundant symbols from reconstruction buffer 915. Additionally, static decoder 910 receives static keys S0, S1, . . . , if used, from static key generator 130 (
In step 1010, dynamic decoder 905 regenerates input symbols and redundant symbols from the Q received output symbols. It is to be understood, that steps 1005 and 1010 can be performed substantially concurrently. For example, dynamic decoder 905 can begin regenerating input symbols and redundant symbols prior to the decoder receiving Q output symbols.
After dynamic decoder 905 has processed Q output symbols, then it is determined whether the input symbols have been recovered to a desired degree of accuracy. The desired degree of accuracy may be, for example, all of the input symbols, or some number, percentage, etc., less than all of the input symbols. If yes, then the flow ends. If no, then the flow proceeds to step 1020. In step 1020, static decoder 910 attempts to recover any input symbols that dynamic decoder 905 was unable to recover. After static encoder 910 has processed the input symbols and redundant symbols recovered by dynamic encoder 905, then the flow ends.
It is to be understood that steps 1055, 1060 and 1065 can be performed substantially concurrently. For example, dynamic decoder 905 can begin regenerating input symbols and redundant symbols as the decoder continues to receive output symbols. Additionally, an evaluation of whether to stop the dynamic decoding process can be performed periodically while output symbols are being received and/or while output symbols are being processed by dynamic decoder 905.
In step 1065, if it is determined that dynamic decoding is not to be stopped, then the flow proceeds back to step 1055. But, if in step 1065, it is determined to end dynamic decoding, then the flow proceeds to step 1070. In step 1070, it is determined whether the input symbols have been recovered to a desired degree of accuracy. If yes, then the flow ends. If no, then the flow proceeds to step 1075. In step 1075, static decoder 910 attempts to recover any input symbols that dynamic decoder 905 was unable to recover. After static encoder 910 has processed the input symbols and redundant symbols recovered by dynamic encoder 905, the flow ends.
Dynamic Decoder
In operation, for each received output symbol with key I and value B(I), decoder 1100 does the following. Key I is provided to value function selector 520, weight selector 510 and associator 515. Using K+R, and dynamic key I, weight selector 510 determines weight W(I). Using K+R, dynamic key I, and W(I), associator 515 produces the list AL(I) of W(I) positions of input and redundant symbols associated with the output symbol. Optionally, using K+R and I, value function selector 520 selects value function F(I). Then, I, B(I), W(I) and AL(I), and optionally F(I), are stored in a row of output symbol buffer 1105. Value function selector 520, weight selector 510 and associator 515 perform the same operation for decoder 1105 as described for dynamic encoder 220 (
Reconstructor 1120 scans output symbol buffer 1105 looking for output symbols stored there that have weight one, i.e., W(I)=1 and AL(I) lists the position of just one associate. Those symbols are referred to herein as members of a “decodable set.” For value functions with the properties described above, output symbols of weight one are in the decodable set because a value of a dynamic input symbol can be determined from that output symbol. Of course, if a value function were used that would allow dynamic input symbols to be decoded under a condition other than having a weight of one, that condition would be used to determine whether an output symbol is in the decodable set. For clarity, the examples described here assume that the decodable set is those output symbols with weight one, and extensions of these examples to other value function decodable conditions should be apparent from this description.
When reconstructor 1120 finds an output symbol that is in the decodable set, the output symbol's value B(I), and optionally the value function F(I), is used to reconstruct the dynamic input symbol listed in AL(I) and the reconstructed dynamic input symbol is placed into reconstruction buffer 1125 at the appropriate position for that input or redundant symbol. If the indicated input or redundant symbol had already been reconstructed, the reconstructor 1120 could drop the newly reconstructed dynamic input symbol, overwrite the existing reconstructed input or redundant symbol, or compare the two and issue an error if they differ. Where the value function is an XOR of all the associates, the input or redundant symbol value is simply the output symbol's value. Reconstructor 1120 thus reconstructs input and redundant symbols, but only from output symbols in the decodable set. Once an output symbol from the decodable set is used to reconstruct an input or redundant symbol it can be deleted to save space in output symbol buffer 1105. Deleting the “used up” output symbol also ensures that reconstructor 1120 does not continually revisit that output symbol.
Initially, reconstructor 1120 waits until at least one output symbol is received that is a member of the decodable set. Once that one output symbol is used, the decodable set would be empty again, except for the fact that some other output symbol might be a function of only that one reconstructed input or redundant symbol and one other input or redundant symbol. Thus, reconstructing one input or redundant symbol from a member of the decodable set might cause other output symbols to be added to the decodable set. The process of reduction of output symbols to add them to the decodable set is performed by reducer 1115.
Reducer 1115 scans output symbol buffer 1105 and reconstruction buffer 1125 to find output symbols that have lists AL(I) that list positions of input or redundant symbols that have been recovered. When reducer 1115 finds such a “reducible” output symbol with key I, reducer 1115 obtains the value IS(h) of a recovered dynamic input symbol at position h and modifies B(I), W(I) and AL(I) as follows:
In the equations above, it is assumed that the value function was an XOR of all the associates' values. Note that XOR is its own inverse—if that were not the case and another value function was used originally to compute the output symbol, then the inverse of that value function would be used here by reducer 1115. As should be apparent, if the values for more than one associate are known, the equivalent of the above equations can be calculated to make B(I) dependent only on any unknown associate values (and adjust W(I) and L(I) accordingly).
The action of reducer 1115 reduces the weights of output symbols in output symbol buffer 1105. When an output symbol's weight is reduced to one (or other decodable condition occurs for other value functions), then that output symbol becomes a member of the decodable set, which can then be acted upon by reconstructor 1120. In practice, once a sufficient number of output symbols are received, reducer 1115 and reconstructor 1120 create a chain reaction decoding, with reconstructor 1120 decoding the decodable set to recover more dynamic input symbols, reducer 1115 using those freshly recovered input or redundant symbols to reduce more output symbols so they are added to the decodable set, and so on, until the decodable set is empty.
The decoder shown in
Static Decoder
Hamming decoder 1210 is also coupled to receive input symbols and redundant symbols from the reconstruction buffer 1215. Additionally, Hamming decoder 1210 receives the number K of input symbols, and the number D, where D+1 is the number of redundant Hamming symbols. Hamming decoder 1210 attempts to recover those input symbols not recovered by the dynamic decoder and the LDPC decoder 1205. While the aim of LDPC decoder 1205 is to recover as many as possible input and redundant symbols, Hamming decoder 1210 only attempts to recover the input symbols IS(0), IS(1), . . . , IS(K−1).
Many variations of LDPC decoders and Hamming decoders are well known to those skilled in the art, and can be employed in various embodiments according to the present invention. In one specific embodiment, Hamming decoder is implemented using a Gaussian elimination algorithm. Many variations of Gaussian elimination algorithms are well known to those skilled in the art, and can be employed in various embodiments according to the present invention.
In certain applications it may be more optimal to use a different type of decoder 155 shown in
First, referring again to
Referring now to
C*Transpose(IS(0), . . . , IS(K−1),RE(0), . . . , RE(R−1))=Transpose(B(0), . . . , B(K+A−1))
is set up by dynamic matrix generator 1305 in which C is a matrix of format (K+A)×(K+R). Generation of matrix C by dynamic matrix generator 1305 will be described in further detail below.
Then, static matrix generator 1310 receives matrix C from dynamic matrix generator 1305, and uses the keys S0, S1, . . . to augment matrix C by R more rows to obtain a system of equations
M*Transpose(IS(0), . . . , IS(K−1),RE(0), . . . , RE(R−1))=Transpose(B(0), . . . , B(K+A−1),0, . . . , 0),
wherein the last R entries of the right hand vector are zero, and wherein M is of format (K+A+R)×(K+R). Finally, a system of linear equations solver 1315 is employed to solve this system of equations M and to obtain some or all of the input symbols IS(0), . . . , IS(K−1). In one specific embodiment, system of linear equations solver 1315 employs a Gaussian elimination algorithm to solve the system of linear equations.
Dynamic matrix generator 1305 and static matrix generator 1310 will now be described in further detail with reference to dynamic encoder 500 of
B(k)=L(a(0))⊕L(a(1))⊕ . . . ⊕L(a(W(k)−1)),
wherein L(j) denotes the unknown value of reconstruction buffer 1925 at position j. These equations, accumulated for all values of k between 0 and K+A−1, give rise to the desired system of equations.
In step 1505, matrix M of format (K+R+A)×(K+R) is initialized by letting the first K+A rows of M equal to the matrix C calculated by dynamic matrix generator 1305. The remaining rows of M are initialized to zero. Next, in step 1510, a variable i is initialized to K+A. This variable keeps track of the last R rows of M. In step 1512, the number t of associates of the redundant symbol i−K−A is computed. This step is similar to step 810 of
In some instances, the embodiment shown in
An Associator Implementation
Referring again to
Another embodiment of a method for implementing an associator 520 for which N need not be a prime number is shown in
A Weight Selector Implementation
The performance and efficiency of the encoder/decoder is dependent on the distribution of weights of the output symbols generated by dynamic encoder 220 as shown in
The task of weight selector 510 shown in
As shown in
As shown in
Selecting a Weight Distribution
A weight distribution should be selected for a given the coding process so that an input file can be fully reconstructed with: a) as few output symbols as possible, b) as few operations as possible, and c) as much reliability as possible. Typically, all these optimization criteria can be met by the right choice of the weight distribution for output symbols, i.e., the distribution of W(I) over all I, and the distribution of associates over the output symbols, i.e., the memberships of AL(I) over all I. It should be emphasized that while the decoding process can be applied regardless of the weight distribution and the distribution on the choice of the associates, the preferred embodiments will use weight distributions and distributions on the choice of associates specifically chosen for near optimal performance. In fact, many distributions will perform well, as small variations in the chosen distribution may lead to only small changes in performance.
One methodology for determining the distributions in one preferred embodiment will now be described. The actual weight distributions used depend on the number K of input symbols. The distributions are given below, together with a range (Kmin, Kmax), a factor β, and a relative overhead α. This has the following meaning: Given K with Kmin≦K≦Kmax, the number R of redundant symbols is calculated as the smallest integer greater than or equal to β*K; the number of output symbols collected should be at least (1+α)*K, i.e., parameter A described above is the smallest integer greater than or equal to α*K. In case the first version of the associator 520 is used, then R should additionally satisfy the condition that K+R is prime, i.e., R is the smallest prime number greater than or equal to β*K. If the application does not require the primality of K+R, then R can be chosen as the smallest integer greater than or equal to β*K.
The distributions themselves are given as a table of the form
where P1 is the corresponding probability of Weight 1, P2 is the corresponding probability of Weight 2, etc., and where the sum of P1, P2, . . . is one. This means that the table WT_DISTRIB 1920 of
General guidelines used in computing the tables herein will now be described. One goal of the design is to have a nonzero number of output symbols of reduced weight one as far into the dynamic decoding process as possible. Preferably, one would like for this number to be greater than zero all the way to the end of the dynamic decoding. However, a mathematical analysis shows that this is only possible if the average weight of an output symbol is at least proportional to the logarithm of the number K of input symbols, and this is how several of the weight distributions described in Luby I are designed. Some embodiments of the present invention significantly reduce this average weight to a fixed constant independent of K. As a result, the number of output symbols of reduced weight one cannot be expected to be larger than zero throughout the entire dynamic decoding process.
An initial step in the design of the weight distribution is obtaining an expression for the expected number of dynamic input symbols whose value could be obtained from output symbols currently in the decodable set during the dynamic decoding process when a fraction x of the dynamic input symbols have not yet been recovered. This expression is a function of the fractions P1, P2, . . . , Pk of output symbols of weight 1, 2, . . . , k, and of the ratio between the number of collected output symbols and the number of input and redundant symbols. In the following, we denote this ratio by γ. It is seen that γ=(1+α)/(1+β). A mathematical analysis of this quantity shows that the expected number of such dynamic input symbols can be represented as
K*(1+β)*(x−e−(1+γ)*ω(1−x)), (1)
where x denotes the fraction of dynamic input symbols that are not yet recovered during the dynamic decoding process, and ω(x) is the polynomial
P1+2*P2*x+3*P3*x2+ . . . +k*Pk*xk−1. (2)
Since this number is only the expectation of a quantity, which is statistical in nature, it is subject to variations. An analysis of this variation reveals that it is proportional to the square root of the expected number of input symbols not yet recovered, i.e., to the square root of x*K*(1+β). To have a reasonable guarantee that the number of input symbols that are neighbors of output symbols of reduced weight one is always positive, P1, . . . , Pk and γ should be chosen in such a way that
K*(1+β)*(x−e−(1+γ)*ω(1−x))>c*sqrt(x*K*(1+β)), (3)
wherein this inequality should hold for all values of x between a given positive real number ε and 1, and c is a positive real number larger than one. The larger c is, the better the guarantee on the success of the decoding process. The smaller ε is, the fewer unrecovered input symbols there are at the end of the dynamic decoding process. The smaller ω(1) is, the smaller is the average weight of an output symbol. Given these constraints one can compute for a given ε and a given c a polynomial ω(x) in which all the coefficients are nonnegative, which satisfies the above inequality for all values of x between ε and 1, and for which ω(1) is as small as possible. This optimization can be done by a variety of methods, for example using the simplex algorithm after a suitable manipulation of the above inequality.
The actual tables are now given with reference to the above description. The constant c in the above description was chosen to guarantee that the error probability for the overall decoder be less than 10−10. For K>49251 the error probability is less than 10−12. These tables are provided merely as examples of weight distributions that can be used. It is to be understood that other weight distributions can also be used.
For example, if K=33,000, then the number of redundant symbols could be the smallest integer R greater than K*0.0161=531.3 such that K+R is a prime. That is, R=533. The number of output symbols collected should be at least (1+0.0674)*K which is 35225.
The average weight for Table 1 is around 6.75, and the average weight for Tables 2 through 9 is around 6. These average weights are significantly lower as compared with one embodiment of Luby I described previously where the average weight is 28.68 when K is 60,000.
Coding for Few Input Symbols
Low relative overhead is preferred for an input file of any size. As is seen from the tables above, as the number K of input symbols becomes smaller, the relative overhead a grows. For example, if the input file has 10,000 bytes, and K is chosen to be 10,000 so that each symbol comprises one byte, then the overhead is roughly 11%, which is not desirable for some applications. One way to reduce the overhead would be to increase the number of input symbols K, at the expense of decreasing the size of the input symbols. For example, where an overhead of about 7% is desired, K could be chosen to be 40,000. In this case, the size of the input symbols would be 2 bits. Using input symbols of very small size, however, leads to computational deficiencies in practice.
A solution to this problem is to use a decoder based on Gaussian elimination, such as the embodiment described with respect to
Specifically, when the number K of input symbols is between 800 and 9899, the following weight distribution can be used for dynamic encoder 220:
The 0.08*K redundant symbols are to be generated according to the operation of static encoder such as that describe with respect to
As an example, suppose that an input file has a size of 16,000 bytes. Input symbols are chosen so that they comprise 16 bytes each, so that the number K of input symbols is 1000. Static encoder in
Some Properties of Some Multi-stage Codes
In most of the examples described above, the input and output symbols encode for the same number of bits and each output symbol is placed in one packet (a packet being a unit of transport that is either received in its entirety or lost in its entirety). In some embodiments, the communications system is modified so that each packet contains several output symbols. The size of an output symbol value is then set to a size determined by the size of the input symbol values in the initial splitting of the file into input symbols, based on a number of factors. The decoding process remains essentially unchanged, except that output symbols arrive in bunches as each packet is received.
The setting of input symbol and output symbol sizes is usually dictated by the size of the file and the communication system over which the output symbols are to be transmitted. For example, if a communication system groups bits of data into packets of a defined size or groups bits in other ways, the design of symbol sizes begins with the packet or grouping size. From there, a designer would determine how many output symbols will be carried in one packet or group and that determines the output symbol size. For simplicity, the designer would likely set the input symbol size equal to the output symbol size, but if the input data makes a different input symbol size more convenient, it can be used.
The above-described encoding process produces a stream of packets containing output symbols based on the original file. Each output symbol in the stream is generated independently of all other output symbols, and there is no lower or upper bound on the number of output symbols that can be created. A key is associated with each output symbol. That key, and some contents of the input file, determines the value of the output symbol. Consecutively generated output symbols need not have consecutive keys, and in some applications it would be preferable to randomly generate the sequence of keys, or pseudorandomly generate the sequence.
Multi-stage decoding has a property that if the original file can be split into K equal-sized input symbols and each output symbol value is the same length as an input symbol value, then the file can be recovered from K+A output symbols on average, with very high probability, where A is small compared to K. For example, for the weight distributions introduced above, the probability that the value of A exceeds α*K is at most 10−12 if K is larger than 19,681, and it is at most 10−10 for any value of K. Since the particular output symbols are generated in a random or pseudorandom order, and the loss of particular output symbols in transit is assumed random, some small variance exists in the actual number of output symbols needed to recover the input file. In some cases, where a particular collection of K+A packets are not enough to decode the entire input file, the input file is still recoverable if the receiver can gather more packets from one or more sources of output packets.
Because the number of output symbols is only limited by the resolution of I, well more than K+A output symbols can be generated. For example, if I is a 32-bit number, 4 billion different output symbols could be generated, whereas the file could include K=50,000 input symbols. In some applications, only a small number of those 4 billion output symbols may be generated and transmitted and it is a near certainty that an input file can be recovered with a very small fraction of the possible output symbols and an excellent probability that the input file can be recovered with slightly more than K output symbols (assuming that the input symbol size is the same as the output symbol size).
In some applications, it may be acceptable to not be able to decode all of the input symbols, or to be able to decode all of input symbols, but with a relatively low probability. In such applications, a receiver can stop attempting to decode all of the input symbols after receiving K+A output symbols. Or, the receiver can stop receiving output symbols after receiving less than K+A output symbols. In some applications, the receiver may even only receive K or less output symbols. Thus, it is to be understood that in some embodiments of the present invention, the desired degree of accuracy need not be complete recovery of all the input symbols.
Further, in some applications where incomplete recovery is acceptable, the data can be encoded such that all of the input symbols cannot be recovered, or such that complete recovery of the input symbols would require reception of many more output symbols than the number of input symbols. Such an encoding would generally require less computational expense, and may thus be an acceptable way to decrease the computational expense of encoding.
It is to be understood that the various functional blocks in the above-described figures may be implemented by a combination of hardware and/or software, and that in specific implementations some or all of the functionality of some of the blocks may be combined. Similarly, it is also to be understood that the various methods described herein may be implemented by a combination of hardware and/or software.
The above description is illustrative and not restrictive. Many variations of the invention will become apparent to those of skill in the art upon review of this disclosure. The scope of the invention should, therefore, be determined not with reference to the above description, but instead should be determined with reference to the appended claims along with their full scope of equivalents.
This is a continuation application of U.S. patent application Ser. No. 11/354,256, filed Feb. 13, 2006 to be issued May 18, 2010 as U.S. Pat. No. 7,720,174 which is a continuation application of U.S. patent application Ser. No. 10/032,156 filed Dec. 21, 2001, now U.S. Pat. No. 7,068,729, issued Jun. 27, 2006 entitled “Multi-Stage Code Generator and Decoder for Communication Systems,” each of which is herein incorporated by reference in its entirety for all purposes.
Number | Name | Date | Kind |
---|---|---|---|
3909721 | Bussgang et al. | Sep 1975 | A |
4365338 | McRae et al. | Dec 1982 | A |
4589112 | Karim | May 1986 | A |
4901319 | Ross | Feb 1990 | A |
5136592 | Weng | Aug 1992 | A |
5153591 | Clark | Oct 1992 | A |
5329369 | Willis et al. | Jul 1994 | A |
5331320 | Cideciyan et al. | Jul 1994 | A |
5371532 | Gelman et al. | Dec 1994 | A |
5372532 | Robertson, Jr. | Dec 1994 | A |
5379297 | Glover et al. | Jan 1995 | A |
5421031 | De Bey | May 1995 | A |
5425050 | Schreiber et al. | Jun 1995 | A |
5432787 | Chethik | Jul 1995 | A |
5455823 | Noreen et al. | Oct 1995 | A |
5465318 | Sejnoha | Nov 1995 | A |
5517508 | Scott | May 1996 | A |
5524025 | Lawrence et al. | Jun 1996 | A |
5566208 | Balakrishnan | Oct 1996 | A |
5568614 | Mendelson et al. | Oct 1996 | A |
5583784 | Kapust et al. | Dec 1996 | A |
5608738 | Matsushita | Mar 1997 | A |
5617541 | Albanese et al. | Apr 1997 | A |
5642365 | Murakami et al. | Jun 1997 | A |
5659614 | Bailey, III | Aug 1997 | A |
5699473 | Kim | Dec 1997 | A |
5701582 | DeBey | Dec 1997 | A |
5751336 | Aggarwal et al. | May 1998 | A |
5754563 | White | May 1998 | A |
5757415 | Asamizuya et al. | May 1998 | A |
5802394 | Baird et al. | Sep 1998 | A |
5805825 | Danneels et al. | Sep 1998 | A |
5835165 | Keate et al. | Nov 1998 | A |
5844636 | Joseph et al. | Dec 1998 | A |
5852565 | Demos | Dec 1998 | A |
5870412 | Schuster et al. | Feb 1999 | A |
5903775 | Murray | May 1999 | A |
5917852 | Butterfield et al. | Jun 1999 | A |
5926205 | Krause et al. | Jul 1999 | A |
5933056 | Rothenberg | Aug 1999 | A |
5936659 | Viswanathan et al. | Aug 1999 | A |
5936949 | Pasternak et al. | Aug 1999 | A |
5953537 | Balicki et al. | Sep 1999 | A |
5970098 | Herzberg | Oct 1999 | A |
5983383 | Wolf | Nov 1999 | A |
5993056 | Vaman et al. | Nov 1999 | A |
6005477 | Deck et al. | Dec 1999 | A |
6011590 | Saukkonen | Jan 2000 | A |
6012159 | Fischer et al. | Jan 2000 | A |
6014706 | Cannon et al. | Jan 2000 | A |
6018359 | Kermode et al. | Jan 2000 | A |
6041001 | Estakhri | Mar 2000 | A |
6044485 | Dent et al. | Mar 2000 | A |
6061820 | Nakakita et al. | May 2000 | A |
6073250 | Luby et al. | Jun 2000 | A |
6079041 | Kunisa et al. | Jun 2000 | A |
6079042 | Vaman et al. | Jun 2000 | A |
6081907 | Witty et al. | Jun 2000 | A |
6081909 | Luby et al. | Jun 2000 | A |
6081918 | Spielman | Jun 2000 | A |
6088330 | Bruck et al. | Jul 2000 | A |
6097320 | Kuki et al. | Aug 2000 | A |
6134596 | Bolosky et al. | Oct 2000 | A |
6141053 | Saukkonen | Oct 2000 | A |
6141787 | Kunisa et al. | Oct 2000 | A |
6141788 | Rosenberg et al. | Oct 2000 | A |
6154452 | Marko et al. | Nov 2000 | A |
6163870 | Luby et al. | Dec 2000 | A |
6166544 | Debbins et al. | Dec 2000 | A |
6175944 | Urbanke et al. | Jan 2001 | B1 |
6178536 | Sorkin | Jan 2001 | B1 |
6185265 | Campanella | Feb 2001 | B1 |
6195777 | Luby et al. | Feb 2001 | B1 |
6223324 | Sinha et al. | Apr 2001 | B1 |
6226259 | Piret | May 2001 | B1 |
6226301 | Cheng et al. | May 2001 | B1 |
6229824 | Marko | May 2001 | B1 |
6243846 | Schuster et al. | Jun 2001 | B1 |
6272658 | Steele et al. | Aug 2001 | B1 |
6278716 | Rubenstein et al. | Aug 2001 | B1 |
6298462 | Yi | Oct 2001 | B1 |
6307487 | Luby | Oct 2001 | B1 |
6314289 | Eberlein et al. | Nov 2001 | B1 |
6320520 | Luby | Nov 2001 | B1 |
6332163 | Bowman-Amuah | Dec 2001 | B1 |
6333926 | Van Heeswyk et al. | Dec 2001 | B1 |
6373406 | Luby | Apr 2002 | B2 |
6393065 | Piret et al. | May 2002 | B1 |
6411223 | Haken et al. | Jun 2002 | B1 |
6415326 | Gupta et al. | Jul 2002 | B1 |
6420982 | Brown | Jul 2002 | B1 |
6421387 | Rhee | Jul 2002 | B1 |
6430233 | Dillon et al. | Aug 2002 | B1 |
6445717 | Gibson et al. | Sep 2002 | B1 |
6459811 | Hurst, Jr. | Oct 2002 | B1 |
6466698 | Creusere | Oct 2002 | B1 |
6473010 | Vityaev et al. | Oct 2002 | B1 |
6486803 | Luby et al. | Nov 2002 | B1 |
6487692 | Morelos-Zaragoza | Nov 2002 | B1 |
6496980 | Tillman et al. | Dec 2002 | B1 |
6497479 | Stoffel et al. | Dec 2002 | B1 |
6510177 | De Bonet et al. | Jan 2003 | B1 |
6523147 | Kroeger et al. | Feb 2003 | B1 |
6535920 | Parry et al. | Mar 2003 | B1 |
6577599 | Gupta et al. | Jun 2003 | B1 |
6584543 | Williams et al. | Jun 2003 | B2 |
6609223 | Wolfgang | Aug 2003 | B1 |
6614366 | Luby | Sep 2003 | B2 |
6618451 | Gonikberg | Sep 2003 | B1 |
6631172 | Shokrollahi et al. | Oct 2003 | B1 |
6633856 | Richardson et al. | Oct 2003 | B2 |
6641366 | Nordhoff | Nov 2003 | B2 |
6643332 | Morelos-Zaragoza et al. | Nov 2003 | B1 |
6677864 | Khayrallah | Jan 2004 | B2 |
6678855 | Gemmell | Jan 2004 | B1 |
6694476 | Sridharan et al. | Feb 2004 | B1 |
6704370 | Chheda et al. | Mar 2004 | B1 |
6732325 | Tash et al. | May 2004 | B1 |
6742154 | Barnard | May 2004 | B1 |
6748441 | Gemmell | Jun 2004 | B1 |
6751772 | Kim et al. | Jun 2004 | B1 |
6765866 | Wyatt | Jul 2004 | B1 |
6804202 | Hwang | Oct 2004 | B1 |
6810499 | Sridharan et al. | Oct 2004 | B2 |
6820221 | Fleming | Nov 2004 | B2 |
6831172 | Barbucci et al. | Dec 2004 | B1 |
6849803 | Gretz | Feb 2005 | B1 |
6850736 | McCune, Jr. | Feb 2005 | B2 |
6856263 | Shokrollahi et al. | Feb 2005 | B2 |
6868083 | Apostolopoulos et al. | Mar 2005 | B2 |
6876623 | Lou et al. | Apr 2005 | B1 |
6882618 | Sakoda et al. | Apr 2005 | B1 |
6895547 | Eleftheriou et al. | May 2005 | B2 |
6909383 | Shokrollahi et al. | Jun 2005 | B2 |
6928603 | Castagna et al. | Aug 2005 | B1 |
6937618 | Noda et al. | Aug 2005 | B1 |
6956875 | Kapadia et al. | Oct 2005 | B2 |
6965636 | DesJardins et al. | Nov 2005 | B1 |
6985459 | Dickson | Jan 2006 | B2 |
6995692 | Yokota et al. | Feb 2006 | B2 |
7010052 | Dill et al. | Mar 2006 | B2 |
7030785 | Shokrollahi et al. | Apr 2006 | B2 |
7031257 | Lu et al. | Apr 2006 | B1 |
7057534 | Luby | Jun 2006 | B2 |
7068681 | Chang et al. | Jun 2006 | B2 |
7068729 | Shokrollahi et al. | Jun 2006 | B2 |
7073191 | Srikantan et al. | Jul 2006 | B2 |
7100188 | Hejna et al. | Aug 2006 | B2 |
7110412 | Costa et al. | Sep 2006 | B2 |
7139660 | Sarkar et al. | Nov 2006 | B2 |
7139960 | Shokrollahi | Nov 2006 | B2 |
7143433 | Duan et al. | Nov 2006 | B1 |
7151754 | Boyce et al. | Dec 2006 | B1 |
7154951 | Wang | Dec 2006 | B2 |
7164370 | Mishra | Jan 2007 | B1 |
7164882 | Poltorak | Jan 2007 | B2 |
7168030 | Ariyoshi | Jan 2007 | B2 |
7219289 | Dickson | May 2007 | B2 |
7231404 | Paila et al. | Jun 2007 | B2 |
7233264 | Luby | Jun 2007 | B2 |
7240236 | Cutts et al. | Jul 2007 | B2 |
7240358 | Horn et al. | Jul 2007 | B2 |
7243285 | Foisy et al. | Jul 2007 | B2 |
7254754 | Hetzler et al. | Aug 2007 | B2 |
7257764 | Suzuki et al. | Aug 2007 | B2 |
7265688 | Shokrollahi et al. | Sep 2007 | B2 |
7293222 | Shokrollahi et al. | Nov 2007 | B2 |
7295573 | Yi et al. | Nov 2007 | B2 |
7304990 | Rajwan | Dec 2007 | B2 |
7318180 | Starr | Jan 2008 | B2 |
7320099 | Miura et al. | Jan 2008 | B2 |
7363048 | Cheng et al. | Apr 2008 | B2 |
7391717 | Klemets et al. | Jun 2008 | B2 |
7394407 | Shokrollahi et al. | Jul 2008 | B2 |
7398454 | Cai et al. | Jul 2008 | B2 |
7409626 | Schelstraete | Aug 2008 | B1 |
7412641 | Shokrollahi | Aug 2008 | B2 |
7418651 | Luby et al. | Aug 2008 | B2 |
7451377 | Shokrollahi | Nov 2008 | B2 |
7483447 | Chang et al. | Jan 2009 | B2 |
7483489 | Gentric et al. | Jan 2009 | B2 |
7512697 | Lassen et al. | Mar 2009 | B2 |
7525994 | Scholte | Apr 2009 | B2 |
7529806 | Shteyn | May 2009 | B1 |
7532132 | Shokrollahi et al. | May 2009 | B2 |
7555006 | Wolfe et al. | Jun 2009 | B2 |
7559004 | Chang et al. | Jul 2009 | B1 |
7570665 | Ertel et al. | Aug 2009 | B2 |
7574706 | Meulemans et al. | Aug 2009 | B2 |
7590118 | Giesberts et al. | Sep 2009 | B2 |
7597423 | Silverbrook | Oct 2009 | B2 |
7613183 | Brewer et al. | Nov 2009 | B1 |
7633413 | Shokrollahi et al. | Dec 2009 | B2 |
7633970 | Van Kampen et al. | Dec 2009 | B2 |
7644335 | Luby et al. | Jan 2010 | B2 |
7650036 | Lei et al. | Jan 2010 | B2 |
7668198 | Yi et al. | Feb 2010 | B2 |
7711068 | Shokrollahi et al. | May 2010 | B2 |
7720096 | Klemets | May 2010 | B2 |
7720174 | Shokrollahi et al. | May 2010 | B2 |
7721184 | Luby et al. | May 2010 | B2 |
7812743 | Luby | Oct 2010 | B2 |
7831896 | Amram et al. | Nov 2010 | B2 |
7924913 | Sullivan et al. | Apr 2011 | B2 |
7961700 | Malladi et al. | Jun 2011 | B2 |
7979769 | Lee et al. | Jul 2011 | B2 |
8027328 | Yang et al. | Sep 2011 | B2 |
8028322 | Riedl et al. | Sep 2011 | B2 |
8081716 | Kang et al. | Dec 2011 | B2 |
8135073 | Shen | Mar 2012 | B2 |
8185794 | Lohmar et al. | May 2012 | B2 |
8185809 | Luby et al. | May 2012 | B2 |
RE43741 | Shokrollahi et al. | Oct 2012 | E |
8301725 | Biderman et al. | Oct 2012 | B2 |
8327403 | Chilvers et al. | Dec 2012 | B1 |
8340133 | Kim et al. | Dec 2012 | B2 |
8422474 | Park et al. | Apr 2013 | B2 |
8462643 | Walton et al. | Jun 2013 | B2 |
8544043 | Parekh et al. | Sep 2013 | B2 |
8572646 | Haberman et al. | Oct 2013 | B2 |
8615023 | Oh et al. | Dec 2013 | B2 |
8638796 | Dan et al. | Jan 2014 | B2 |
8713624 | Harvey et al. | Apr 2014 | B1 |
8737421 | Zhang et al. | May 2014 | B2 |
8812735 | Igarashi | Aug 2014 | B2 |
20010015944 | Takahashi et al. | Aug 2001 | A1 |
20010033586 | Takashimizu et al. | Oct 2001 | A1 |
20020009137 | Nelson et al. | Jan 2002 | A1 |
20020053062 | Szymanski | May 2002 | A1 |
20020083345 | Halliday et al. | Jun 2002 | A1 |
20020085013 | Lippincott | Jul 2002 | A1 |
20020087685 | Lassen et al. | Jul 2002 | A1 |
20020133247 | Smith et al. | Sep 2002 | A1 |
20020141433 | Kwon et al. | Oct 2002 | A1 |
20020143953 | Aiken | Oct 2002 | A1 |
20020191116 | Kessler et al. | Dec 2002 | A1 |
20030005386 | Bhatt et al. | Jan 2003 | A1 |
20030037299 | Smith | Feb 2003 | A1 |
20030086515 | Trans et al. | May 2003 | A1 |
20030101408 | Martinian et al. | May 2003 | A1 |
20030106014 | Dohmen et al. | Jun 2003 | A1 |
20030138043 | Hannuksela | Jul 2003 | A1 |
20030194211 | Abecassis | Oct 2003 | A1 |
20030207696 | Willenegger et al. | Nov 2003 | A1 |
20030224773 | Deeds | Dec 2003 | A1 |
20030226089 | Rasmussen et al. | Dec 2003 | A1 |
20040015768 | Bordes et al. | Jan 2004 | A1 |
20040031054 | Dankworth et al. | Feb 2004 | A1 |
20040049793 | Chou | Mar 2004 | A1 |
20040066854 | Hannuksela | Apr 2004 | A1 |
20040081106 | Bruhn | Apr 2004 | A1 |
20040096110 | Yogeshwar et al. | May 2004 | A1 |
20040117716 | Shen | Jun 2004 | A1 |
20040151109 | Batra et al. | Aug 2004 | A1 |
20040162071 | Grilli et al. | Aug 2004 | A1 |
20040207548 | Kilbank | Oct 2004 | A1 |
20040231004 | Seo | Nov 2004 | A1 |
20040240382 | Ido et al. | Dec 2004 | A1 |
20040255328 | Baldwin et al. | Dec 2004 | A1 |
20050018635 | Proctor, Jr. | Jan 2005 | A1 |
20050028067 | Weirauch | Feb 2005 | A1 |
20050041736 | Butler-Smith et al. | Feb 2005 | A1 |
20050071491 | Seo | Mar 2005 | A1 |
20050091697 | Tanaka et al. | Apr 2005 | A1 |
20050097213 | Barrett et al. | May 2005 | A1 |
20050102371 | Aksu | May 2005 | A1 |
20050105371 | Johnson et al. | May 2005 | A1 |
20050123058 | Greenbaum et al. | Jun 2005 | A1 |
20050138286 | Franklin et al. | Jun 2005 | A1 |
20050160272 | Teppler | Jul 2005 | A1 |
20050163468 | Takahashi et al. | Jul 2005 | A1 |
20050169379 | Shin et al. | Aug 2005 | A1 |
20050180415 | Cheung et al. | Aug 2005 | A1 |
20050193309 | Grilli et al. | Sep 2005 | A1 |
20050195752 | Amin et al. | Sep 2005 | A1 |
20050195899 | Han | Sep 2005 | A1 |
20050195900 | Han | Sep 2005 | A1 |
20050207392 | Sivalingham et al. | Sep 2005 | A1 |
20050216472 | Leon et al. | Sep 2005 | A1 |
20050216951 | MacInnis | Sep 2005 | A1 |
20050254575 | Hannuksela et al. | Nov 2005 | A1 |
20060015568 | Walsh et al. | Jan 2006 | A1 |
20060020796 | Aura et al. | Jan 2006 | A1 |
20060031738 | Fay et al. | Feb 2006 | A1 |
20060037057 | Xu | Feb 2006 | A1 |
20060093634 | Lutz et al. | May 2006 | A1 |
20060107174 | Heise | May 2006 | A1 |
20060109805 | Malamal Vadakital et al. | May 2006 | A1 |
20060120464 | Hannuksela | Jun 2006 | A1 |
20060193524 | Tarumoto et al. | Aug 2006 | A1 |
20060212444 | Handman et al. | Sep 2006 | A1 |
20060212782 | Li | Sep 2006 | A1 |
20060229075 | Kim et al. | Oct 2006 | A1 |
20060244824 | Debey | Nov 2006 | A1 |
20060244865 | Simon | Nov 2006 | A1 |
20060248195 | Toumura et al. | Nov 2006 | A1 |
20060256851 | Wang et al. | Nov 2006 | A1 |
20060262856 | Wu et al. | Nov 2006 | A1 |
20060279437 | Luby et al. | Dec 2006 | A1 |
20070002953 | Kusunoki | Jan 2007 | A1 |
20070006274 | Paila et al. | Jan 2007 | A1 |
20070016594 | Visharam et al. | Jan 2007 | A1 |
20070022215 | Singer et al. | Jan 2007 | A1 |
20070028099 | Entin et al. | Feb 2007 | A1 |
20070078876 | Hayashi et al. | Apr 2007 | A1 |
20070081562 | Ma | Apr 2007 | A1 |
20070081586 | Raveendran et al. | Apr 2007 | A1 |
20070110074 | Bradley et al. | May 2007 | A1 |
20070127576 | Henocq et al. | Jun 2007 | A1 |
20070134005 | Myong et al. | Jun 2007 | A1 |
20070140369 | Limberg | Jun 2007 | A1 |
20070157267 | Lopez-Estrada | Jul 2007 | A1 |
20070162568 | Gupta et al. | Jul 2007 | A1 |
20070162611 | Yu et al. | Jul 2007 | A1 |
20070176800 | Rijavec | Aug 2007 | A1 |
20070177811 | Yang | Aug 2007 | A1 |
20070185973 | Wayda et al. | Aug 2007 | A1 |
20070195894 | Shokrollahi et al. | Aug 2007 | A1 |
20070200949 | Walker et al. | Aug 2007 | A1 |
20070201549 | Hannuksela et al. | Aug 2007 | A1 |
20070204196 | Watson et al. | Aug 2007 | A1 |
20070230568 | Eleftheriadis et al. | Oct 2007 | A1 |
20070233784 | ORourke et al. | Oct 2007 | A1 |
20070255844 | Shen et al. | Nov 2007 | A1 |
20070277209 | Yousef | Nov 2007 | A1 |
20070300127 | Watson et al. | Dec 2007 | A1 |
20080010153 | Pugh-O'Connor et al. | Jan 2008 | A1 |
20080034273 | Luby | Feb 2008 | A1 |
20080052753 | Huang et al. | Feb 2008 | A1 |
20080058958 | Cheng | Mar 2008 | A1 |
20080059532 | Kazmi et al. | Mar 2008 | A1 |
20080066136 | Dorai et al. | Mar 2008 | A1 |
20080075172 | Koto | Mar 2008 | A1 |
20080086751 | Horn et al. | Apr 2008 | A1 |
20080101478 | Kusunoki | May 2008 | A1 |
20080134005 | Izzat et al. | Jun 2008 | A1 |
20080152241 | Itoi et al. | Jun 2008 | A1 |
20080168133 | Osborne | Jul 2008 | A1 |
20080168516 | Flick et al. | Jul 2008 | A1 |
20080170564 | Shi et al. | Jul 2008 | A1 |
20080170806 | Kim | Jul 2008 | A1 |
20080172430 | Thorstensen | Jul 2008 | A1 |
20080172712 | Munetsugu | Jul 2008 | A1 |
20080181296 | Tian et al. | Jul 2008 | A1 |
20080189419 | Girle et al. | Aug 2008 | A1 |
20080192818 | DiPietro et al. | Aug 2008 | A1 |
20080215317 | Fejzo | Sep 2008 | A1 |
20080232357 | Chen | Sep 2008 | A1 |
20080243918 | Holtman | Oct 2008 | A1 |
20080256418 | Luby et al. | Oct 2008 | A1 |
20080281943 | Shapiro | Nov 2008 | A1 |
20080285556 | Park et al. | Nov 2008 | A1 |
20080303893 | Kim et al. | Dec 2008 | A1 |
20080303896 | Lipton et al. | Dec 2008 | A1 |
20080309525 | Shokrollahi et al. | Dec 2008 | A1 |
20080313191 | Bouazizi | Dec 2008 | A1 |
20090003439 | Wang et al. | Jan 2009 | A1 |
20090019229 | Morrow et al. | Jan 2009 | A1 |
20090031199 | Luby et al. | Jan 2009 | A1 |
20090043906 | Hurst et al. | Feb 2009 | A1 |
20090055705 | Gao | Feb 2009 | A1 |
20090067551 | Chen et al. | Mar 2009 | A1 |
20090083806 | Barrett et al. | Mar 2009 | A1 |
20090089445 | Deshpande | Apr 2009 | A1 |
20090092138 | Joo et al. | Apr 2009 | A1 |
20090100496 | Bechtolsheim et al. | Apr 2009 | A1 |
20090103523 | Katis et al. | Apr 2009 | A1 |
20090106356 | Brase et al. | Apr 2009 | A1 |
20090125636 | Li et al. | May 2009 | A1 |
20090150557 | Wormley et al. | Jun 2009 | A1 |
20090158114 | Shokrollahi | Jun 2009 | A1 |
20090164653 | Mandyam et al. | Jun 2009 | A1 |
20090189792 | Shokrollahi et al. | Jul 2009 | A1 |
20090195640 | Kim et al. | Aug 2009 | A1 |
20090201990 | Leprovost et al. | Aug 2009 | A1 |
20090204877 | Betts | Aug 2009 | A1 |
20090210547 | Lassen et al. | Aug 2009 | A1 |
20090222873 | Einarsson | Sep 2009 | A1 |
20090248697 | Richardson et al. | Oct 2009 | A1 |
20090257508 | Aggarwal et al. | Oct 2009 | A1 |
20090287841 | Chapweske et al. | Nov 2009 | A1 |
20090297123 | Virdi et al. | Dec 2009 | A1 |
20090300203 | Virdi et al. | Dec 2009 | A1 |
20090300204 | Zhang et al. | Dec 2009 | A1 |
20090307565 | Luby et al. | Dec 2009 | A1 |
20090319563 | Schnell | Dec 2009 | A1 |
20090328228 | Schnell | Dec 2009 | A1 |
20100011061 | Hudson et al. | Jan 2010 | A1 |
20100011117 | Hristodorescu et al. | Jan 2010 | A1 |
20100011274 | Stockhammer et al. | Jan 2010 | A1 |
20100020871 | Hannuksela et al. | Jan 2010 | A1 |
20100023525 | Westerlund et al. | Jan 2010 | A1 |
20100046906 | Kanamori et al. | Feb 2010 | A1 |
20100049865 | Hannuksela et al. | Feb 2010 | A1 |
20100061444 | Wilkins et al. | Mar 2010 | A1 |
20100067495 | Lee et al. | Mar 2010 | A1 |
20100103001 | Shokrollahi et al. | Apr 2010 | A1 |
20100131671 | Kohli et al. | May 2010 | A1 |
20100153578 | Van et al. | Jun 2010 | A1 |
20100165077 | Yin et al. | Jul 2010 | A1 |
20100174823 | Huang | Jul 2010 | A1 |
20100189131 | Branam et al. | Jul 2010 | A1 |
20100198982 | Fernandez | Aug 2010 | A1 |
20100211690 | Pakzad et al. | Aug 2010 | A1 |
20100223533 | Stockhammer et al. | Sep 2010 | A1 |
20100235472 | Sood et al. | Sep 2010 | A1 |
20100235528 | Bocharov et al. | Sep 2010 | A1 |
20100257051 | Fernandez | Oct 2010 | A1 |
20100318632 | Yoo et al. | Dec 2010 | A1 |
20110055881 | Yu et al. | Mar 2011 | A1 |
20110083144 | Bocharov et al. | Apr 2011 | A1 |
20110096828 | Chen et al. | Apr 2011 | A1 |
20110103519 | Shokrollahi et al. | May 2011 | A1 |
20110119394 | Wang et al. | May 2011 | A1 |
20110119396 | Kwon et al. | May 2011 | A1 |
20110216541 | Inoue et al. | Sep 2011 | A1 |
20110231519 | Luby et al. | Sep 2011 | A1 |
20110231569 | Luby et al. | Sep 2011 | A1 |
20110238789 | Luby et al. | Sep 2011 | A1 |
20110239078 | Luby et al. | Sep 2011 | A1 |
20110258510 | Watson et al. | Oct 2011 | A1 |
20110268178 | Park et al. | Nov 2011 | A1 |
20110280311 | Chen et al. | Nov 2011 | A1 |
20110280316 | Chen et al. | Nov 2011 | A1 |
20110299629 | Luby et al. | Dec 2011 | A1 |
20110307545 | Bouazizi | Dec 2011 | A1 |
20110307581 | Furbeck et al. | Dec 2011 | A1 |
20120013746 | Chen et al. | Jan 2012 | A1 |
20120016965 | Chen et al. | Jan 2012 | A1 |
20120023249 | Chen et al. | Jan 2012 | A1 |
20120023254 | Park et al. | Jan 2012 | A1 |
20120033730 | Lee | Feb 2012 | A1 |
20120047280 | Park et al. | Feb 2012 | A1 |
20120099593 | Luby | Apr 2012 | A1 |
20120151302 | Luby et al. | Jun 2012 | A1 |
20120185530 | Reza | Jul 2012 | A1 |
20120202535 | Chaddha et al. | Aug 2012 | A1 |
20120207068 | Watson et al. | Aug 2012 | A1 |
20120208580 | Luby et al. | Aug 2012 | A1 |
20120210190 | Luby et al. | Aug 2012 | A1 |
20120317305 | Einarsson et al. | Dec 2012 | A1 |
20130002483 | Rowitch et al. | Jan 2013 | A1 |
20130007223 | Luby et al. | Jan 2013 | A1 |
20130067295 | Luby et al. | Mar 2013 | A1 |
20130091251 | Walker et al. | Apr 2013 | A1 |
20130246643 | Luby et al. | Sep 2013 | A1 |
20130254634 | Luby | Sep 2013 | A1 |
20130287023 | Bims | Oct 2013 | A1 |
20140009578 | Chen et al. | Jan 2014 | A1 |
20140380113 | Luby et al. | Dec 2014 | A1 |
Number | Date | Country |
---|---|---|
1338839 | Mar 2002 | CN |
1425228 | Jun 2003 | CN |
1481643 | Mar 2004 | CN |
1708934 | Dec 2005 | CN |
1714577 | Dec 2005 | CN |
1792056 | Jun 2006 | CN |
1806392 | Jul 2006 | CN |
1819661 | Aug 2006 | CN |
1868157 | Nov 2006 | CN |
101390399 | Mar 2009 | CN |
101729857 | Jun 2010 | CN |
0669587 | Aug 1995 | EP |
0701371 | Mar 1996 | EP |
0784401 | Jul 1997 | EP |
0853433 | Jul 1998 | EP |
0854650 | Jul 1998 | EP |
0903955 | Mar 1999 | EP |
0986908 | Mar 2000 | EP |
1024672 | Aug 2000 | EP |
1051027 | Nov 2000 | EP |
1124344 | Aug 2001 | EP |
1241795 | Sep 2002 | EP |
1298931 | Apr 2003 | EP |
1406452 | Apr 2004 | EP |
1455504 | Sep 2004 | EP |
1468497 | Oct 2004 | EP |
1501318 | Jan 2005 | EP |
1670256 | Jun 2006 | EP |
1755248 | Feb 2007 | EP |
2046044 | Apr 2009 | EP |
2071827 | Jun 2009 | EP |
2096870 | Sep 2009 | EP |
1700410 | Apr 2010 | EP |
2323390 | May 2011 | EP |
H07183873 | Jul 1995 | JP |
08186570 | Jul 1996 | JP |
8289255 | Nov 1996 | JP |
9252253 | Sep 1997 | JP |
11041211 | Feb 1999 | JP |
11112479 | Apr 1999 | JP |
11164270 | Jun 1999 | JP |
2000151426 | May 2000 | JP |
2000216835 | Aug 2000 | JP |
2000513164 | Oct 2000 | JP |
2000307435 | Nov 2000 | JP |
2000353969 | Dec 2000 | JP |
2001036417 | Feb 2001 | JP |
2001094625 | Apr 2001 | JP |
2001189665 | Jul 2001 | JP |
2001223655 | Aug 2001 | JP |
2001251287 | Sep 2001 | JP |
2001274776 | Oct 2001 | JP |
2001274855 | Oct 2001 | JP |
2002073625 | Mar 2002 | JP |
2002204219 | Jul 2002 | JP |
2002543705 | Dec 2002 | JP |
2003018568 | Jan 2003 | JP |
2003507985 | Feb 2003 | JP |
2003092564 | Mar 2003 | JP |
2003510734 | Mar 2003 | JP |
2003174489 | Jun 2003 | JP |
2003256321 | Sep 2003 | JP |
2003318975 | Nov 2003 | JP |
2003319012 | Nov 2003 | JP |
2003333577 | Nov 2003 | JP |
2004048704 | Feb 2004 | JP |
2004070712 | Mar 2004 | JP |
2004135013 | Apr 2004 | JP |
2004165922 | Jun 2004 | JP |
2004516717 | Jun 2004 | JP |
2004192140 | Jul 2004 | JP |
2004193992 | Jul 2004 | JP |
2004529533 | Sep 2004 | JP |
2004289621 | Oct 2004 | JP |
2004343701 | Dec 2004 | JP |
2004348824 | Dec 2004 | JP |
2004362099 | Dec 2004 | JP |
2005094140 | Apr 2005 | JP |
2005136546 | May 2005 | JP |
2005514828 | May 2005 | JP |
2005204170 | Jul 2005 | JP |
2005223433 | Aug 2005 | JP |
2005277950 | Oct 2005 | JP |
2006503463 | Jan 2006 | JP |
2006505177 | Feb 2006 | JP |
2006506926 | Feb 2006 | JP |
2006074335 | Mar 2006 | JP |
2006074421 | Mar 2006 | JP |
2006115104 | Apr 2006 | JP |
3809957 | Jun 2006 | JP |
2006174032 | Jun 2006 | JP |
2006174045 | Jun 2006 | JP |
2006186419 | Jul 2006 | JP |
2006519517 | Aug 2006 | JP |
2006287422 | Oct 2006 | JP |
2006319743 | Nov 2006 | JP |
2007013675 | Jan 2007 | JP |
2007089137 | Apr 2007 | JP |
3976163 | Jun 2007 | JP |
2007158592 | Jun 2007 | JP |
2007174170 | Jul 2007 | JP |
2007520961 | Jul 2007 | JP |
2007228205 | Sep 2007 | JP |
2008011404 | Jan 2008 | JP |
2008016907 | Jan 2008 | JP |
2008508761 | Mar 2008 | JP |
2008508762 | Mar 2008 | JP |
2008283232 | Nov 2008 | JP |
2008283571 | Nov 2008 | JP |
2008543142 | Nov 2008 | JP |
2008546361 | Dec 2008 | JP |
2009027598 | Feb 2009 | JP |
2009522921 | Jun 2009 | JP |
2009522922 | Jun 2009 | JP |
2009171558 | Jul 2009 | JP |
2009527949 | Jul 2009 | JP |
2009277182 | Nov 2009 | JP |
2009544991 | Dec 2009 | JP |
2010539832 | Dec 2010 | JP |
2008502212 | Jan 2011 | JP |
2011087103 | Apr 2011 | JP |
1020030071815 | Sep 2003 | KR |
1020030074386 | Sep 2003 | KR |
20040107152 | Dec 2004 | KR |
20040107401 | Dec 2004 | KR |
20050009376 | Jan 2005 | KR |
100809086 | Mar 2008 | KR |
20080083299 | Sep 2008 | KR |
20090098919 | Sep 2009 | KR |
20100028156 | Mar 2010 | KR |
99117925 | Jul 2001 | RU |
2189629 | Sep 2002 | RU |
2265960 | Dec 2005 | RU |
2290768 | Dec 2006 | RU |
2297663 | Apr 2007 | RU |
2312390 | Dec 2007 | RU |
2357279 | May 2009 | RU |
1246841 | Jan 2006 | TW |
1354908 | Dec 2011 | TW |
1355168 | Dec 2011 | TW |
WO9634463 | Oct 1996 | WO |
WO-9750183 | Dec 1997 | WO |
WO9804973 | Feb 1998 | WO |
WO9832231 | Jul 1998 | WO |
WO-9832256 | Jul 1998 | WO |
WO0014921 | Mar 2000 | WO |
WO0018017 | Mar 2000 | WO |
WO0052600 | Sep 2000 | WO |
WO0120786 | Mar 2001 | WO |
WO0157667 | Aug 2001 | WO |
WO0158130 | Aug 2001 | WO |
WO0158131 | Aug 2001 | WO |
WO0227988 | Apr 2002 | WO |
WO0247391 | Jun 2002 | WO |
02063461 | Aug 2002 | WO |
WO-03046742 | Jun 2003 | WO |
WO03056703 | Jul 2003 | WO |
WO03105350 | Dec 2003 | WO |
WO-03105484 | Dec 2003 | WO |
WO2004008736 | Jan 2004 | WO |
WO2004015948 | Feb 2004 | WO |
WO2004019521 | Mar 2004 | WO |
WO2004030273 | Apr 2004 | WO |
WO2004034589 | Apr 2004 | WO |
WO-2004036824 | Apr 2004 | WO |
WO2004040831 | May 2004 | WO |
WO-2004047019 | Jun 2004 | WO |
WO2004047455 | Jun 2004 | WO |
WO-2004088988 | Oct 2004 | WO |
WO-2004109538 | Dec 2004 | WO |
WO2005036753 | Apr 2005 | WO |
WO2005041421 | May 2005 | WO |
WO2005078982 | Aug 2005 | WO |
WO-2005107123 | Nov 2005 | WO |
WO2005112250 | Nov 2005 | WO |
WO-2006013459 | Feb 2006 | WO |
WO2006020826 | Feb 2006 | WO |
WO-2006036276 | Apr 2006 | WO |
2006060036 | Jun 2006 | WO |
WO-2006057938 | Jun 2006 | WO |
WO2006084503 | Aug 2006 | WO |
WO-2006116102 | Nov 2006 | WO |
WO-2006135878 | Dec 2006 | WO |
WO2007042916 | Apr 2007 | WO |
2007078253 | Jul 2007 | WO |
WO2007090834 | Aug 2007 | WO |
WO-2007098397 | Aug 2007 | WO |
WO-2007098480 | Aug 2007 | WO |
2008011549 | Jan 2008 | WO |
WO-2008023328 | Apr 2008 | WO |
WO2008054100 | May 2008 | WO |
2008086313 | Jul 2008 | WO |
WO2008085013 | Jul 2008 | WO |
WO-2008131023 | Oct 2008 | WO |
2008144004 | Nov 2008 | WO |
WO2008148708 | Dec 2008 | WO |
WO2008156390 | Dec 2008 | WO |
WO-2009065526 | May 2009 | WO |
WO-2009137705 | Nov 2009 | WO |
2009143741 | Dec 2009 | WO |
WO2010085361 | Jul 2010 | WO |
WO2010088420 | Aug 2010 | WO |
WO2010120804 | Oct 2010 | WO |
WO-2011038013 | Mar 2011 | WO |
WO-2011038034 | Mar 2011 | WO |
2011059286 | May 2011 | WO |
2011070552 | Jun 2011 | WO |
2011102792 | Aug 2011 | WO |
WO-2012021540 | Feb 2012 | WO |
WO-2012109614 | Aug 2012 | WO |
Entry |
---|
International Search Report, PCT/US2002/041615—International Search Authority—US, Mar. 26, 2003. |
Supplementary European Search Report, EP02794439—European Search Authority—The Hague, Jan. 13, 2005. |
Alon, et al.: “Linear Time Erasure Codes with Nearly Optimal Recovery,” Proceedings of the Annual Symposium on Foundations of Computer Science, US, Los Alamitos, IEEE Comp. Soc. Press, vol. Symp. 36, pp. 512-516 (Oct. 23, 1995) XP000557871. |
Bigloo, A. et al.: “A Robust Rate-Adaptive Hybrid ARQ Scheme and Frequency Hopping for Multiple-Access Communication Systems,” IEEE Journal on Selected Areas in Communications, US, IEEE Inc, New York (Jun. 1, 1994) pp. 917-624 XP0000464977. |
Bitner, J.R., et al.: “Efficient Generation of the Binary Reflected Gray code and Its Applications,” Communications of theACM (1976). |
Blomer, et al.: “An XOR-Based Erasure-Resilient Coding Scheme,” ICSI Technical Report No. TR-95-048 (1995) [avail. At ftp://ftp.icsi.berkeley.edu/pub/techreports/1995/tr-95-048.pdf]. |
Byers, J.W. et al.: “A Digital Fountain Approach to Reliable Distribution of Bulk Data,” Computer Communication Review, Association for Computing Machinery. New York, US, vol. 28, No. 4 (Oct. 1998) pp. 56-67 XP000914424 ISSN:0146-4833. |
Byers, J.W. et al.: “Accessing multiple mirror sites in parallel: using Tornado codes to speed up downloads,” 1999, Eighteenth Annual Joint Conference of the IEEE Comupter and Communications Socities, pp. 275-283. |
Clark G.C., et al., “Error Correction Coding for Digital Communications, System Applications,” Error Correction Coding for Digital Communications, New York, Plenum Press, US, Jan. 1, 1981, pp. 331-341. |
Digital Fountain: “Raptor code specification for MBMS file download,” 3GPP SA4 PSM AD-HOC #31 (May 21, 2004) XP002355055 pp. 1-6. |
Digital Fountain: “Specification Text for Raptor Forward Error Correction,” TDOC S4-050249 of 3GPP TSG SA WG 4 Meeting #34 [Online] (Feb. 25, 2005) pp. 1-23, XP002425167, Retrieved from the Internet: URL:http://www.3gpp.org/ftp/tsg—sa/WG4—CODEC/TSGS4—34/Docs. |
Esaki, et al.: “Reliable IP Multicast Communication Over ATM Networks Using Forward Error Correction Policy,” IEICE Transactions on Communications, JP, Institute of Electronics Information and Comm. Eng. Tokyo, vol. E78-V, No. 12, (Dec. 1995), pp. 1622-1637, XP000556183. |
Gemmell, et al., “A Scalable Multicast Architecture for One-To-Many Telepresentations”, Multimedia Computing and Systems, 1998/Proceedings. IEEE International Conference on Austin, TX, USA Jun. 28-Jul. 1, 1998, Los Alamitos, CA USA, IEEE Comput. Soc, US. |
Hershey, et al., “Random Parity Coding (RPC)”, 1996 IEEE International Conference on Communications (ICC). Converging Technologies for Tomorrow's Applications. Dallas, Jun. 23-27, 1996, IEEE International Conference on Communications (ICC), New York, IEEE. |
Kallel, “Complementary Punctured Convolutional (CPC) Codes and Their Applications”, IEEE Transactions on Communications, IEEE Inc., New York, US, vol. 43, No. 6, Jun. 1, 1995, pp. 2005-2009. |
Lin, S. et al.: “Error Control Coding-Fundamentals and Applications,” 1983, Englewood Cliffs, pp. 288. |
Luby, et al., “Analysis of Low Density Codes and Improved Designs Using Irregular Graphs”, 1998, Proceedings of the 30th Annual ACM Symposium on Theory of Computing, 1998, pp. 249-258. |
Luby, et al.: “Analysis of Low Density Codes and Improved Designs Using Irregular Graphs,” International Computer Science Institute Technical Report TR-97-045 (Nov. 1997) [available at ftp://ftp.icsi.berkeley.edu/pub/techreports/1997/tr-97-045.pdf]. |
Luby, et al.: “Analysis of Random Processes via and-or Tree Evaluation,” ICSI Technical Report No. TR-97-042 (1997) and Proceedings of the 9th Annual ACM Symposium on Discrete Algorithms (1998) [available at ftp://ftp.icsi.berkeley.edu/pub/techreports/1997/tr-97-042.pdf]. |
Luby, et al.: “Improved Low-Density Parity-Check Codes Using Irregular Graphs and Belief Propagation,” International Computer Science Institute Technical Report TR-97-044 (Nov. 1997) [available at ftp://ftp.icsi.berkeley.edu/pub/techreports/1997/tr-97. |
Luby, M. et al.: “Efficient Erasure Correction Codes,” 2001, IEEE Transactions on Information Theory, Vo. 47, No. 2, pp. 569-584. |
Luby, M. et al.: “Practical Loss-Resilient Codes: Tornado Codes,” 29th Annual ACM Symposium on Theory of Computing (1997). |
Narayanan, et al., “Physical Layer Design for Packet Data Over IS-136”, Vehicular Technology Conference, 1997, IEEE 47th Phoenix, AZ, USA May 4-7, 1997, New York, NY, USA, IEEE, US May 4, 1997, pp. 1029-1033. |
Nonnenmacher, et al., “Parity-Based Loss Recovery for Reliable Multicast Transmission”, IEEE / ACM Transactions on Networking, IEEE Inc. New York, US, vol. 6, No. 4, Aug. 1, 1998, pp. 349-361. |
Pursley, et al.: “Variable-Rate Coding for Meteor-Burst Communications,” IEEE Transactions on Communications, US, IEEE Inc. New York (1989) vol. 37, No. 11, pp. 1105-1112 XP000074533. |
Pursley, M. et al.: “A Correction and an Addendum for Variable-Rate Coding for Meteor-Burst Communications,” IEEE Transactions on Communications, vol. 43, No. 12 pp. 2866-2867 (Dec. 1995). |
Rizzo, L. “Effective Erasure Codes for Reliable Computer Communication Protocols,” Computer Communication Review, 27 (2) pp. 24-36 (Apr. 1997). |
Seshan, S. et al.: “Handoffs in Cellular Wireless Networks: The Daedalus Implementation and Experience,” Wireless Personal Communications, NL; Kluwer Academic Publishers, vol. 4, No. 2 (Mar. 1, 1997) pp. 141-162, XP000728589. |
Shacham: “Packet Recovery and Error Correction in High-Speed Wide-Area Networks,” Proceedings of the Military Communications Conference. (Milcom), US, New York, IEEE, vol. 1, pp. 551-557 (1989) XP000131876. |
Shokrollahi, A.: “Raptor Codes,” Internet Citation [Online] (Jan. 13, 2004) XP002367883, Retrieved from the Internet: URL:http://www.cs.huji.ac.il/labs/danss/p2p/resources/raptor.pdf. |
Amin Shokrollahi: “LDPC Codes: An Introduction” Internet Citation 2 Apr. 1, 2003 (Apr. 2, 2003), XP002360065 Retrieved from the Internet: URL : http ://www . ipm. ac . ir/IPM/homepage/Amin 2. pdf [retrieved on Dec. 19, 2005]. |
Hagenauer, J. : “Soft is better than hard” Communications, Coding and Cryptology, Kluwer Publication May 1994, XP002606615 Retrieved from the Internet : URL: http://www. Int . ei .turn. de/veroeffentlic hungen/I994/ccc94h. pdf [retrieved on Oct. 25, 2010]. |
Luby, Michael G. “Analysis of Random Processes via And-Or Tree Evaluation,” Proceedings of the 9th Annual ACM-SIAM Symposium on Discrete Algorithms, 1998, pp. 364-373, (search date: Jan. 25, 2010) URL: <http://portal.acm.prg.citation.cfm?id=314722>. |
Rost, S. et al.: “The Cyclone Server Architecture: streamlining delivery of popular content,” 2002, Computer Communications, vol. 25, No. 4, pp. 403-412. |
Shokrollahi, Amin. “Raptor Codes,” IEEE Transactions on Information Theory, Jun. 2006, vol. 52, No. 6, pp. 2551-2567, (search date: Feb. 1, 2010) URL: <http://portal.acm.prg.citation.cfm?id=1148681 >. |
Yamauchi, Nagamasa. “Application of Lost Packet Recovery by Front Error Correction to Internet Multimedia Transfer” Proceedings of Workshop for Multimedia Communication and Distributed Processing, Japan, Information Processing Society of Japan (IPS), Dec. 6, 2000, vol. 2000, No. 15, pp. 145-150. |
3GPP, “Transparent end-to-end packet-switched streaming service (PSS): Protocols and codecs (Release 9),” 3GPP TS 26.234, version 9.1 .0, Release 9, Sophia Antipolis, Valbonne, FR, (Dec. 2009), 179 pp. |
3GPP TS 26.244 V9.1.0, 3rd Generation Partnership Project; Technical Specification Group Services and System Aspects; Transparent end-to-end packet switched streaming service (PSS); 3GPP file format (3GP), (Release 9), Mar. 2010, 55 pp. |
3GPP TS 26.247, v1.5.0, 3rd Generation Partnership Project; Technical Specification Group Services and System Aspects Transparent end-to-end Packet-switched Streaming Service (PSS); Progressive Download and Dynamic Adaptive Streaming over HTTP (3GP-DASH) (Release 10), 2010. |
3rd Generation Partnership Project, Technical Specification Group Services and System Aspects Transparent end-to-end packet switched streaming service (PSS), 3GPP file format (3GP) (Release 8) , 3GPP Standard, 3GPP TS 26.244, 3rd Generation Partnership Project (3GPP), Mobile Competence Centre , 650, Route Des Lucioles , F-06921 Sophia-Antipolis Cedex , France, No. V8.1.0, Jun. 1, 2009, pp. 1-52, XP050370199. |
Aggarwal, C. et al.: “A Permutation-Based Pyramid Broadcasting Scheme for Video-on-Demand Systems,” Proc. IEEE Int'l Conf. on Multimedia Systems, Hiroshima, Japan (Jun. 1996). |
Aggarwal, C. et al.: “On Optimal Batching Policies for Video-on-Demand Storage Servers,” Multimedia Systems, vol. 4, No. 4, pp. 253-258 (1996). |
Alex Zambelli: “IIS Smooth Streaming Technical Overview”, Microsoft Mar. 25, 2009, XP002620446, Retrieved from the Internet: URL:http://www.microsoft.com/downloads/en/ details.aspx?FamilyID=03d22583-3ed6-44da-8464-blb4b5ca7520, [retrieved on Jan. 21, 2011]. |
Aljoscha Smolic et al., “Development of a new MPEG standard for advanced 3D video applications”, IEEE International Symposium on Image and Signal Processing and Analysis, Sep. 16, 2009, pp. 400-407, XP031552049, ISBN: 978-953-184-135-1. |
Almeroth, et al., “The use of multicast delivery to provide a scalable and interactive video-on-demand service”, IEEE Journal on Selected Areas in Communication, 14(6): 1110-1122, (1996). |
Bar-Noy, et al., “Competitive on-line stream merging algorithms for media-on-demand”, Draft (Jul. 2000), pp. 1-34. |
Bar-Noy et al. “Efficient algorithms for optimal stream merging for media-on-demand,” Draft (Aug. 2000), pp. 1-43. |
Chen, et al., U.S. Patent Application titled “Frame Packing for Asymmetric Stereo Video”, filed Feb. 25, 2011. |
Chen, et al., U.S. Patent Application titled “One-Stream Coding for Asymmetric Stereo Video”, filed Feb. 25, 2011. |
Dan, A. et al.: “Scheduling Policies for an On-Demand Video Server with Batching,” Proc. ACM Multimedia, pp. 391-398 (Oct. 1998). |
Davey, M.C. et al.: “Low Density Parity Check Codes over GF(q)” IEEE Communications Letters, vol. 2, No. 6 pp. 165-167 (1998). |
David Singer, et al., “ISO/IEC 14496-15/FDIS, International Organization for Standardization Organization Internationale De Normalization ISO/IEC JTC1/SC29/WG11 Coding of Moving Pictures and Audio”, ISO/IEC 2003, Aug. 11, 2003, pp. 1-34. |
D.M. Mandelbaum: “An adaptive-feedback coding scheme using incremental redundancy”, IEEE Trans on Information Theory, vol. May 1974, May 1974, pp. 388-389, XP002628271, the whole document. |
Eager, et al. “Minimizing bandwidth requirements for on-demand data delivery,” Proceedings of the International Workshop on Advances in Multimedia Information Systems,p. 80-87 (Indian Wells, CA Oct. 1999). |
Eager, et al., “Optimal and efficient merging schedules for video-on-demand servers”, Proc. ACM Multimedia, vol. 7, pp. 199-203 (1999). |
European Search Report—EP10013231, Search Authority—Hague Patent Office, Mar. 15, 2011 (091826EPD4). |
Feng, G., Error Correcting Codes over Z2m for Algorithm-Based Fault-Tolerance, IEEE Transactions on Computers, vol. 43, No. 3, Mar. 1994, pp. 370-374. |
Fielding, et al., “Hypertext Transfer Protocol—HTTP/1.1,” Network Working Group, RFC 2616, Jun. 1999, 165 pp. |
Frojdh, et al., “File format sub-track selection and switching,” ISO/IEC JTC1/SC29/WG11 MPEG2009 M16665, London UK., Jul. 2009, 14 pp. |
Gao, L. et al.: “Efficient Schemes for Broadcasting Popular Videos,” Proc. Inter. Workshop on Network and Operating System Support for Digital Audio and Video, pp. 1-13 (1998). |
Grineberg, et al., “Deliverable D3.2 MVC/SVC storage format” Jan. 29, 2009, XP002599508 Retrieved from the Internet: URL:http://www.ist-sea.eu/Public/SEA—D3.2—HHI FF—20090129.pdf [retrieved on Sep. 1, 2010] paragraph [02.3]. |
He Wenge et al., “Asymmetric Stereoscopic Video Encoding Algorithm Based on Joint Compensation Prediction”, IEEE International Conference on Communications and Mobile Computing, Jan. 6, 2009, pp. 191-194, XP031434775, ISBN: 978-0/7695-3501-2. |
Hitachi Ltd. et al., “High-Definition Multimedia Interface,” Specification Version 1.4, Jun. 5, 2009, 425 pp. |
Hua, et al., “Skyscraper broadcasting: A new broadcsting system for metropolitan video-on-demand systems”, Proc. ACM SIGCOMM, pp. 89-100 (Cannes, France, 1997). |
Ian Trow: “Is 3D Event Coverage Using Existing Broadcast Infrastructure Technically Possible?”, International Broadcasting Conference, Sep. 9-13, 2009, XP030081671, pp. 4-5, “3D transmission over broadcast infrastructure” pp. 7-8, “Screen signaling”—Conclusions on 3D systems. |
Information Technology—Generic Coding of Moving Pictures and Audio: Systems, Amendment 4: Transport of Multiview Video over ITU-T Rec H.222.0 | ISO/IEC 13818-1 “Text of ISO/IEC 13818-1:2007/FPDAM 4—Transport of Multiview Video over ITU-T Rec H.222.0 | ISO/IEC 13818-1,” Lausanne, Switzerland, 2009, 21 pp. |
International Standard ISO/IEC 14496-12, Information Technology—Coding of audio-visual objects—Part 12: ISO base media file format, Third Edition, Oct. 15, 2008, 120 pp. |
International Telecommunication Union, “ITU-T H.264, Series H: Audiovisual and Multimedia Systems, Infrastructure of audiovisual services—Coding of moving video, Advanced video coding for generic audiovisual services,” Mar. 2010, 669 pp. |
ISO/IEC 13818-1, “Information technology—Generic coding of moving pictures and associated audio information: Systems,” Second edition, Dec. 1, 2000, 174 pp. |
“ISO/IEC JTC 1/SC 29, ISO/IEC FCD 23001-6, Information technology—MPEG systems technologies—Part 6: Dynamic adaptive streaming over HTTP (DASH), Jan. 28, 2011”. |
“Joint Draft 8.0 on Multiview Video Coding”, 28th JVT meeting, Hannover, Germany, Jul. 2008. available from http:// wftp3. itu.int/av-arch/jvt-site/2008—07—Hannover/JVT-AB204. |
Juhn, L. et al.: “Adaptive Fast Data Broadcasting Scheme for Video-on-Demand Service,” IEEE Transactions on Broadcasting, vol. 44, No. 2, pp. 182-185 (Jun. 1998). |
Juhn, L. et al.: “Harmonic Broadcasting for Video-on-Demand Service,” IEEE Transactions on Broadcasting, vol. 43, No. 3, pp. 268-271 (Sep. 1997). |
Kimata H et al., “Inter-view prediction with downsampled reference pictures”, ITU Study Group 16—Video Coding Experts Group—ISO/IEC MPEG & ITU-T VCEG(ISO/IEC JTC1/SC29/WG11 and ITU-T SG16 Q6), No. JVT-W079, Apr. 19, 2007, XP030007039. |
Kozamernik F: “Media streaming over the Internet”, Internet Citation, Oct. 2002, XP002266291, Retrieved from the Internet: URL: http://www.ebu.ch/trev—292-kozamerni k. pdf [retrieved on Jan. 8, 2004] section “Video codecs for scalable streaming”. |
Luby Digital Fountain A Shokrollahi Epfl M Watson Digital Fountain T Stockhammer Nomor Research M: “Raptor Forward Error Correction Scheme for Object Delivery; rfc5053.txt”, IETF Standard, Internet Engineering Task Force, IETF, CH, Oct. 1, 2007 XP015055125, ISSN: 0000-0003. |
Marpe, et al., “The H.264/MPEG4 Advanced Video Coding Standard and its Applications,” Standards Report, IEEE Communications Magazine, Aug. 2006, pp. 134-143. |
Min-Goo Kim: “On systematic punctured convolutional codes”, IEEE Trans on Communications, vol. 45, No. 2, Feb. 1997, XP002628272, the whole document, pp. 133-139. |
Muller, et al., “A test-bed for the dynamic adaptive streaming over HTTP featuring session mobility” MMSys '11 Proceedings of the second annual ACM conference on Multimedia systems, Feb. 23-25, 2011, San Jose, CA, pp. 271-276. |
Naguib, Ayman, et al., “Applications of Space-Time Block Codes and Interference Suppression for High Capacity and High Data Rate Wireless Systems,” IEEE, 1998, pp. 1803-1810. |
Ozden, B. et al.: “A Low-Cost Storage Service for Movie on Demand Databases,” Proceedings of the 20th Very Large DataBases (VLDB) Conference, Santiago, Chile (1994). |
Pa. Chou, A. Mohr, A. Wang, S. Mehrotra, “FEC and Pseudo-ARQ for Receiver-Driven Layered Multicast of Audio and Video,” pp. 440-449, IEEE Computer Society, Data Compression Conference (2000). |
Pantos R et al., “HTTP Live Streaming; draft-pantos-http-1ive-streaming-OT.txt”, HTTP Live Streaming; Draft-Pant0s-HTTP-Live-Streaming-01.txt, Internet Engineering Task Force, IETF; Standardworkingdraft, Internet Society (ISOC) 4, Rue Des Falaises CH- 1205 Geneva, Switzerland, No. 1, Jun. 8, 2009, XP015062692. |
Paris, et al., “A low bandwidth broadcasting protocol for video on demand”, Proc. International Conference on Computer Communications and Networks, vol. 7, pp. 690-697 (Oct. 1998). |
Paris, et al., “Efficient broadcasting protocols for video on demand”, International Symposium on Modeling, Analysis and Simulation of Computer and Telecommunication systems (MASCOTS), vol. 6, pp. 127-132 (Jul. 1998). |
Perkins, et al.: “Survey of Packet Loss Recovery Techniques for Streaming Audio,” IEEE Network; Sep./Oct. 1998, pp. 40-48. |
Petition decision for Petition Under 37 C.F.R. § 1.78 to Accept an Unintentionally Delayed Priority Claim under 35 U.S.C. § 120 in U.S. Patent No. 7,532,132, dated Jul. 21, 2011, 2 pages. |
Petition under 37 C.F.R. § 1.78 to Accept an Unintentionally Delayed Priority Claim under 35 U.S.C. § 120 in U.S. Patent No. 7,532,132, dated May 27, 2011, 2 pages. |
Pless and WC Huffman Eds V S: Algebraic geometry codes, Handbook of Coding Theory, 1998, pp. 871-961, XP002300927. |
Qualcomm Europe S A R L: “Baseline Architecture and Definitions for HTTP Streaming”, 3GPP Draft; S4-090603—HTTP—Streaming—Architecture, 3rd Generation Partnership Project (3GPP), Mobile Competence Centre; 650, Route Des Lucioles; F-06921 Sophia-Antipolis Cedex; France, No. Kista; Aug. 12, 2009, XP050356889. |
Rangan, et al., “Designing an On-Demand Multimedia Service,” IEEE Communication Magazine, vol. 30, pp. 5-65, (Jul. 1992). |
Roca, V. et al.: “Design, Evaluation and Comparison of Four Large Block FEC Codecs, LDPC, LDGM, LDGM Staircase and LDGM Triangle, plus a Reed-Solomon Small Block FEC Codec,” INRIA Research Report RR-5225 (2004). |
Roth, R., et al., “A Construction of Non-Reed-Solomon Type MDS Codes”, IEEE Transactions of Information Theory, vol. 35, No. 3, May 1989, pp. 655-657. |
Roth, R., “On MDS Codes via Cauchy Matrices”, IEEE Transactions on Information Theory, vol. 35, No. 6, Nov. 1989, pp. 1314-1319. |
Schwarz, Heiko et al., “Overview of the Scalable Video Coding Extension of the H.264/AVC Standard”, IEEE Transactions on Circuits and Systems for Video Technology, vol. 17, No. 9, Sep. 2007, pp. 1103-1120. |
Shierl T; Gruneberg K; Narasimhan S; Vetro A: “ISO/IEC 13818-1:2007/FPDAM 4—Information Technology Generic Coding of Moving Pictures and Audio Systems amendment 4: Transport of Multiview Video over ITU-T Rec H.222.0 ISO/IEC 13818-1” ITU-T Rec. H.222.0(May 2006)FPDAM 4, vol. MPEG2009, No. 10572, May 11, 2009, pp. 1-20, XP002605067 p. 11, last two paragraphs sections 2.6.78 and 2.6.79 table T-1. |
Shokrollahi et al., “Design of Efficient Easure Codes with Differential Evolution”, IEEE International Symposium on Information Theory, Jun. 25, 2000, pp. 5-5. |
Sincoskie, W. D., “System Architecture for Large Scale Video on Demand Service,” Computer Network and ISDN Systems, pp. 155-162, (1991). |
Stockhammer, WD 0.1 of 23001-6 Dynamic Adaptive Streaming over HTTP (DASH), MPEG-4 Systems, International Organisation for Standardisation, ISO/IEC JTC1/SC29/WG11, Coding of Moving Pictures and Audio, MPEG 2010 Geneva/m11398, Jan. 6, 2011, 16 pp. |
Sullivan et al., Document: JVT-AA007, “Editors' Draft Revision to ITU-T Rec. H.264|IS0/IEC 14496-10 Advanced Video Coding—In Preparation for ITU-T SG 16 AAP Consent (in integrated form),” Joint Video Team (JVT) of ISO/IEC MPEG & ITU-T VCEG (ISO/IEC JTC1/SC29/WG11 and ITU-T SG16 Q.6), 30th Meeting: Geneva, CH, Jan. 29-Feb. 3, 2009, pp. 1-683, http://wftp3.itu.int/av-arch/jvt-site/2009—01—Geneva/JVT-AD007.zip. |
Sun, et al., “Seamless Switching of Scalable Video Bitstreams for Efficient Streaming,” IEEE Transactions on Multimedia, vol. 6, No. 2, Apr. 2004, pp. 291-303. |
Thomas Wiegand, et al., “Joint Draft ITU-T Rec. H.264 I ISO/IEC 14496-10 / Amd.3 Scalable video coding”, Joint Video Team (JVT) of ISO/IEC MPEG & ITU-T VCEG (ISO/IEC JTC1/SC29/WG11 and ITU-T SG16 Q.6) 24th Meeting: Geneva, Switzerland, Jun. 29-Jul. 5, 2007, pp. 1-559. |
Vetro, et al., Document: JVT-AB204 (rev. 1), “Joint Draft 8.0 on Multiview Video Coding,” Joint Video Team (JVT) of ISO/IEC MPEG & ITU-T VCEG(ISO/IEC JTC1/SC29/WG11 and ITU-T SG16 Q.6), 28th Meeting: Hannover, DE, Jul. 20-25, 2008, pp. 1-66, http://wftp3.itu.int/av-arch/jvt-site/2008—07—Hannover/JVT-AB204.zip. |
Viswanathan, et al., “Metropolitan area video-on-demand services using pyramid broadcasting”, Multimedia Systems, 4(4): 197-208 (1996). |
Viswanathan, et al., “Pyramid Broadcasting for Video-on-Demand Service”, Proceedings of the SPIE Multimedia Computing and Networking Conference, vol. 2417, pp. 66-77 (San Jose, CA, Feb. 1995). |
Viswanathan, et al.: “Publishing in Wireless and Wireline Environments,” Ph. D Thesis, Rutgers, The State University of New Jersey (Nov. 1994). |
Wenger S., “RTP Payload Format for H.264 Video”, Network Working Group, Feb. 2005, pp. 1-84. |
Wong, J.W., “Broadcast delivery”, Proceedings of the IEEE, 76(12): 1566-1577, (1988). |
Yin et al., “Modified Belief-Propogation algorithm for Decoding of Irregular Low-Density Parity-Check Codes”, Electronics Letters, IEE Stevenage, GB, vol. 38, No. 24, Nov. 21, 2002, pp. 1551-1553. |
Ying Chen et al., “Coding techniques in Multiview Video Coding and Joint Multiview Video Model”, Picture Coding Symposium, 2009, PCS 2009, IEEE, Piscataway, NJ, USA, May 6, 2009, pp. 1-4, XP031491747, ISBN: 978-1-4244-4593-6. |
Zorzi, et al.: “On the Statistics of Block Errors in Bursty Channels,” IEEE Transactions on Communications, vol. 45, No. 6, Jun. 1997, pp. 660-667. |
“3rd Generation Partnership Project; Technical Specification Group Services and System Aspects; Transparent end-to-end packet switched streaming service (PSS); 3GPP file format (3GP) (Release 9)”, 3GPP Standard; 3GPP TS 26.244. 3RD Generation Partnership Project (3GPP), Mobile Competence Centre; 650, Route Des Lucioles; F-06921 Sophia-Antpolis Cedex; France, No. V9.2.0, Jun. 9, 2010, pp. 1-55, XP050441544, [retrieved on Jun. 9, 2010]. |
Afzal et al., “Video Streaming over MBMS: A System Design Approach”, Journal of Multimedia, Vol, 1, No. 5, Aug. 2006, pp. 25-35. |
Amon P et al “File Format for Scalable Video Coding”, IEEE Transactions on Circuits and Systems for Video Technology, IEEE Service Center, Piscataway, NJ, US, vol. 17, No. 9, Sep. 1, 2007, pp. 1174- 1185, XP011193013, ISSN: 1051-8215, DOI:10.1109/TCSVT.2007.905521. |
Anonymous; [Gruneberg, K., Narasimhan, S. And Chen, Y., editors] “Text of ISO/IEC 13818-1:2007/PDAM 6 MVC operation point descriptor”, 90 MPEG Meeting; Oct. 26-30, 2009; Xian; (Motion Picture Expertgroup or ISO/IEC JTC1/SC29/WG11), No. N10942, Nov. 19, 2009, XP030017441. |
Anonymous: “Text of ISO/IEC 14496-12 3rd Edition”, 83 MPEG Meeting; Jan. 14-18, 2008; Antalya; (Motion Pictureexpert Group or ISO/IEC JTC1/SC29/WG11), No. N9678, Apr. 22, 2008, XP030016172. |
Anonymous: “Text of ISO/IEC 14496-15 2nd edition”, 91 MPEG Meeting; Jan. 18-22, 2010; Kyoto; (Motion Picture Expertgroup or ISO/IEC JTC1/SC29/WG11) No. N11139, Jan. 22, 2010, XP030017636. |
Apple Inc, “On the time-stamps in the segment-inbox for HTTP streaming (26.244, R9)”, TSG-SA4#58 meeting, Vancouver, Canada, Apr. 2010, p. 5. |
Charles Lee L.H, “Error-Control Block Codes for Communications Engineers”, 2000, Artech House, XP002642221 pp. 39-45. |
Fernando et al., “HTTP Streaming of MPEG Media—Response to CfP”, 93 MPEG Meeting; Jul. 26-30, 2010; Geneva; (Motion Picture Expert Group or ISO/IEC JTC1/SCE29/WG11), No. M17756, Jul. 22, 2010, XP030046346. |
Plank J. S., “A Tutprial of Reed-Solomon Coding for Fault-Tolerance I N Raid-Like Systems”, Software Practice & Experience, Wiley & Sons, Bognor Regis, GB, vol. 27, No. 9, Sep. 1, 1997, pp. 995-1012, XP00069594. |
Pyle at al., “Microsoft HTTP Smooth Streaming: Microsoft response to the Call for Proposal on HTTP Streaming”, 93 MPEG Meeting; Jul. 26-30, 2010; Geneva; (Motion Picture Expert Group or ISO/IEC JTC1/SCE29/WG11), No. M17902, Jul. 22, 2010, XP030046492. |
Qualcomm Incorporated: “Use Cases and Examples for Adaptive HTTP Streaming”, 3GPP Draft; S4-100408-Usecases-HSD, 3RD Generation Partnership Project (JGPP), Mobile Competence Centre; 650, Route Des Lucioles; F-06921 Sophia-Antipolis Cedex; France, vol. SA WG4, No. Prague, Czech Republic: 20100621, Jun. 17, 2010, XP050438085, [retrieved on Jun. 17, 2010]. |
REALNETWORKS Inc et al “Format for HTTP Streaming Media Presentation Description”, 3GPP Draft; S4-100020, 3RD Generation Partnership Project (3GPP), Mobile Competence Centre; 650, Route Des Lucioles; F-06921 Sophia-Antipolis Cedex; France, vol. SA VG4, No. S t Julians, Malta; Jan. 25, 2010, Jan. 20, 2010, XP050437753, [retrieved on Jan. 20, 2010]. |
Research in Motion UK Limited: “An MPD delta file for HTTP Streaming”, 3GPP Draft; S4-100453, 3RD Generation Partnership Project (SGPP), Mobile Competence Centre; 650, Route Des Lucioles : F-06921 Sophia-Antipolis Cedex; France, vol. SA WG4, No. Prague, Czech Republic; Jun. 21, 2010, Jun. 16, 2010; XP050438066, [retrieved on Jun. 16, 2010]. |
Rhyu et al , “Response to Call for Proposals on HTTP Streaming of MPEG Media”, 93 MPEG Meeting; Jul. 26-30, 2010; Geneva; (Motion Picture Expert Group or ISO/IEC JTC1/SCE29/WG11) No. M17779, Jul. 26, 2010, XP030046369. |
Telefon AB LM Ericsson et al., “Media Presentation Description in HTTP Streaming”, 3GPP Draft; 34-100080-MPD, 3RD Generation Partnership Project (3GPP), Mobile Competence Centre; 650, Route Des Lucioles; F-06921 Sophia-Antipolis Cedex: France, vol. SA WG4, No. St Julians, Malta; Jan. 25, 2010, Jan. 20, 2010, XP050437773, [retrieved on Jan. 20, 2010]. |
Wang,“On Random Access”, Joint Video Team (JVT) of ISO/IEC MPEG & ITU-T VCEG (ISO/IEC JTC1|SC29/WG11 and ITU-T SG16 Q.6), 4th Meeting: Klagenfurt, Austria, Jul. 22-26, 2002, p. 13. |
Ying Chen et al: “Response to the CfP on HTTP Streaming: Adaptive Video Streaming based on AVC”, 93 MPEG Meeting; Jul. 26-30, 2010; Geneva; (Motion Picture Expert Group or ISO/IEC JTC1/SC29/WG11), No. M17909, Jul. 26, 2010, XP030046499. |
Albanese, A., et al., “Priority Encoding Transmission”, IEEE Transactions on Information Theory, vol. 42, No. 6, pp. 1-22, (Nov. 1996). |
Anonymous: “Text of ISO/IEC 14496-12:2008/PDAM 2 Sub-track selection & switching”, 91. Mpeg Meeting; Jan. 18-22, 2010; Kyoto; (Motion Picture Expertgroup or ISO/IEC JTC1/SC29/WG11), No. N11137, Jan. 22, 2010, XP030017634, ISSN: 0000-0030. |
Byers, J.W. et al.: “Accessing multiple mirror sites in parallel: using Tornado codes to speed up downloads,” 1999, Eighteenth Annual Joint Conference of the IEEE Comupter and Communications Socities, pp. 275-283, Mar. 21, 1999, XP000868811. |
Choi S: “Temporally enhanced erasure codes for reliable communication protocols” Computer Networks, Elsevier Science Publishers B.V., Amsterdam, NL, vol . 38, No. 6, Apr. 22, 2002, pp. 713-730, XP004345778, ISSN: 1389-1286, DOI:10.1016/S1389-1286(01)00280-8. |
D. Gozalvez et,al. “AL-FEC for Improved Mobile Reception of MPEG-2 DVB-Transport Streams” Hindawi Publishing Corporation, International Journal of Digital Multimedia Broadcasting vol. 2009, Dec. 31, 2009, pp. 1-10, XP002582035 Retrieved from the Internet: URL:http://www.hindawi.com/journals/ijdmb/2009/614178.html> [retrieved on May 12, 2010]. |
“Digital Video Broadcasting (DVB); Guidelines for the implementation of DVB-IP Phase 1 specifications; ETSI TS 102 542” ETSI Standards, Lis, Sophia Antipoliscedex, France, vol. BC, No. V1.2.1, Apr. 1, 2008, XP014041619 ISSN: 0000-0001 pp. 43, 66, 70, 71. |
DVB-IPI Standard: DVB BlueBook A086r4 (03/07) Transport of MPEG 2 Transport Streatm (TS) Based DVB Services over IP Based Networks, ETSI Technical Specification 102 034 v1.3.1. |
Gasiba, Tiago et al., “System Design and Advanced Receiver Techniques for MBMS Broadcast Services” PROC. 2006 International Conference on Communications (ICC 2006), Jun. 1, 2006, pp. 5444-5450, XP031025781 ISBN: 978-1-4244-0354-7. |
Goya!: “Multiple Description Coding: Compression Meets the Network,” In Signal Processing Magazine, IEEE, vol. 18., Issue 5 (Sep. 2001) pp. 74-93 URL:http://www.rle.mitedu/stir/documents/Goyal—SigProcMag2001—MD.pdf [Nov. 4, 2007]. |
Gozalvez D et, al: “Mobile reception of DVB-T services by means of AL-FEC protection” PROC. IEEE Intern. Symposium on Broadband Multimedia Systems and Broadcasting (BMSB '09), IEEE, Piscataway, NJ, USA, May 13, 2009, pp. 1-5, XP031480155 ISBN: 978-1-4244-2590-7. |
IETF RFC 2733: Rosenberg, J. et al. “An RTP Payload Format for Generic Forward Error Correction,” Network Working Group, RFC 2733 (Dec. 1999). |
ISO/IEC JTC1/SC29/WG11: “Requirements on HTTP Streaming of MPEG Media”, 92. MPEG Meeting; Apr. 19-23, 2010; Dresden; No. N11340, May 14, 2010, XP030017837, ISSN: 0000-0029. |
Jin Li, “The Efficient Implementation of Reed-Solomon High Rate Erasure Resilient Codes” Proc. 2005 IEEE International Conference on Acoustics, Speech, and Signal Processing, Philadelphia, PA, USA, IEEE, Piscataway, NJ, vol. 3, Mar. 18, 2005, pp. 1097-1100, XP010792442, DOI: 10.1109/ICASSP.2005.1415905 ISBN: 978-0/7803-8874-1. |
Lee L., et al.,“VLSI implementation for low density parity check decoder”, Proceedings of the 8th IEEE International Conference on Elecctronics, Circuits and Systems, 2001. ICECS 2001, Sep. 2, 2001, vol. 3, pp. 1223-1226. |
Luby, et al., “FLUTE—File Delivery over Unidirectional Transport”, IETF RFC 3926, pp. 1-35, (Oct. 2004). |
Luby et, al. “Layered Coding Transport (LCT) Building Block”, IETF RFC 5651, pp. 1-42, (Oct. 2009). |
Luby, M., et, al. “Forward Error Correction (FEC) Building Block”, IETF RFC 5052, pp. 1-31, (Aug. 2007). |
Luby M et al: “IPTV Systems, Standards and Architectures: Part II -Application Layer FEC in IPTV Services” IEEE Communications Magazine, IEEE Service Center, Piscataway, US LNKDDOI: 10.1109/MCOM.2008.4511656, vol. 46, No. 5, May 1, 2008, pp. 94-101, XP011226858 ISSN: 0163-6804. |
Luby, M. et al.: “Pairwise Independence and Derandomization,” Foundations and Trends in Theoretical Computer Science, vol. 1, Issue 4, 2005, Print ISSN 1551-305X, Online ISSN 1551-3068. |
Luby, M., et al., “Raptor Forward Error Correction Scheme for Object Delivery”, IETF RFC5053, pp. 1-46 (Sep. 2007). |
Luby, M., et al., “RaptorQ Forward Error Correction Scheme for Object Delivery”, IETF draft ietf-rmt-bb-fec-raptorq-04, Reliable Multicast Transport, pp. 1-68, (Aug. 24, 2010). |
Luby, M., et al., “Request for Comments: 3453: The Use of Forward Error Correction (FEC) in Reliable Multicast,” Internet Article, [Online] Dec. 2002, pp. 1-19. |
Matsuoka H., et al., “Low-Density Parity-Check Code Extensions Applied for Broadcast-Communication Integrated Content Delivery”, Research Laboratories, NTT DOCOMO, Inc., 3-6, Hikari-No-Oka, Yokosuka, Kanagawa, 239-8536, Japan, ITC-SS21, 2010 IEICE, pp. 59-63. |
McCanne, et al., “Low-Complexity Video Coding for Receiver-Driven Layered Multicast”, IEEE Journal on Selected Areas in Communication IEEE Service Center, Aug. 1, 1997, vol. 15, No. 6, pp. 983-1001, Piscataway, US, XP011054678, ISSN: 0733-8716. |
Mimnaugh, A et, al. “Enabling Mobile Coverage for DVB-T” Digital Fountain Whitepaper Jan. 29, 2008, pp. 1-9, XP002581808 Retrieved from the Internet: URL:http://www.digitalfountain.com/ufiles/library/DVB-T-whitepaper.pdf> [retrieved on May 10, 2010]. |
Nokia: “Reed-Solomon Code Specification for. MBMS Download and Streaming Services”, 3GPP Draft; S4-050265—RS—SPEC, 3RD Generation Partnership Project (3GPP), Mobile Competence Centre; 650, Route Des Lucioles; F-06921 Sophia-Antipolis Cedex; France, vol. SA WG4, No. San Diego, USA; Apr. 15, 2005, XP050287675, [retrieved on Apr. 15, 2005]. |
Nokia Corp., “Usage of 'mfra' box for Random Access and Seeking,” S4-AHI127, 3GPP TSG-SA4 Ad-Hoc Meeting, Dec. 14-16, 2009, Paris, FR, 2 pp. |
Roca, V., et, al. “Low Density Parity Check (LDPC) Staircase and Triangle Forward Error Correction (FEC) Schemes”, IETF RFC 5170 (Jun. 2008), pp. 1-34. |
Tsunoda T., et al., “Reliable Streaming Contents Delivery by Using Multiple Paths,” Technical Report of the Institute of Electronics, Information and Communication Engineers, Japan, Mar. 2004, vol. 103, No. 692, pp. 187-190, NS2003-331, IN2003-286. |
U.S. Appl. No. 12/840,146, filed Jul. 20, 2010, by Ying Chen et al. |
U.S. Appl. No. 12/908,537, filed Oct. 20, 2010, by Ying Chen et al. |
U.S. Appl. No. 12/908,593, filed Oct. 20, 2010, by Ying Chen et al. |
U.S. Appl. No. 13/082,051, filed Apr. 7, 2011, by Ying Chen et al. |
U.S. Appl. No. 13/205,559, filed Aug. 8, 2011, by Ying Chen et al. |
U.S. Appl. No. 13/205,565, filed Aug. 8, 2011, by Ying Chen et al. |
U.S. Appl. No. 13/205,574, filed Aug. 8, 2011, by Ying Chen et al. |
Universal Mobile Telecommunications System (UMTS); LTE; Transparent end-to-end Packet-switched Streaming Service (PSS); Protocols and codecs (3GPP TS 26.234 version 9.3.0 Release 9), Technical Specification, European Telecommunications Standards Institute (ETSI), 650, Route Des Lucioles; F-06921 Sophia-Antipolis; France, vol. 3GPP SA, No. V9.3.0, Jun. 1, 2010, XP014047290, paragraphs [5.5.4.2], [5.5.4.3], [5.5.4.4], [5.4.5], [5.5.4.6] paragraphs [10.2.3], [11.2.7], [12.2.3], [12.4.2], [12.6.2] paragraphs [12.6.3], [12.6.3.1], [12.6.4], [12.6.6]. |
Watson, M., et, al. “Asynchronous Layered Coding (ALC) Protocol Instantiation”, IETF RCF 5775, pp. 1-23, (Apr. 2010). |
Cataldi at al., “Sliding-Window Raptor Codes for Efficient Scalable Wireless Video Broadcasting With Unequal Loss Protction”, IEEE Transactions on Image Processing, Jun. 1, 2010, pp. 1491-1503, vol. 19, No. 6, IEEE Service Center, XP011328559, ISSN: 1057-7149, DOI: 10.1109/TIP.2010.2042985. |
Gracie et al., “Turbo and Turbo-Like Codes: Principles and Applications in Telecommunicatons”, Proceedings of the IEEE, Jun. 1, 2007, pp. 1228-1254, vol. 95, No. 6, IEEE, XP011189323, ISSN: 0018-9219, DOI: 10.1109/JPROC.2007.895197. |
Huawei et al., “Implict mapping between CCE and PUCCH for ACK/NACK TDD”, 3GPP Draft; R1-082359, 3RD Generation Partnership Project (3GPP), Mobile Competence Centre; 650, Route Des Lucioles; F-06921 Sophia-Antipolis Cedex; France, vol. RAN WG1, No. Warsaw, Poland, Jun. 24, 2008, XP050110650, [retrieved on Jun. 24, 2008]. |
International Search Report and Written Opinion—PCT/US2012/024737—ISA/EPO—May 11, 2012. |
Kimura et al., “A Highly Mobile SDM-0FDM System Using Reduced-Complexity-and-Latency Processing”,IEEE Intenational Symposium on Personal, Indoor and Mobile Radio Communications (PIMRC), Sep. 1, 2007, pp. 1-5, IEEE, XP031168836, ISBN: 978-1-4244-1143-6, DOI: 10.1109/PIMRC.2007.4394758. |
Luby Qualcomm Incorporated, “Universal Object Delivery using RaptorQ; draft-luby-uod-raptorq-OO.txt”, Internet Society (ISOC), Mar. 7, 2011, pp 1-10, XP015074424, [retrieved on Mar. 7, 2011]. |
MacKay, “Fountain codes capacity approaching codes design and implementation”, IEE Proceedings: Communications, Dec. 9, 2005, pp. 1062-1068, vol. 152, No. 6, Institution of Electrical Engineers, XP006025749. ISSN: 1350-2425, DOI: 1049/IP-C0M:20050237. |
Todd, “Error Correction Coding: Mathematical Methods and Algorithms”, Mathematical Methods and Algorithms, Jan. 1, 2005, pp. 451-534, Wiley, XP002618913. |
Wiegand T et al.,“ WD1: Working Draft 1 of High-Efficiency Video Coding”, JCTVC-C403, Joint Collaborative Team on Video Coding (JCT-VC), of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 3rd Meeting: Guangzhou, CN, Oct. 7-15, 2010. |
Bross, et al., “High efficiency video coding (HEVC) text specification draft 6,” Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 JCTVC-H1003, 7th Meeting: Geneva, CH, Nov. 21-30, 2011, pp. 259. |
Bross, et al., “High efficiency video coding (HEVC) text specification draft 7,” Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 9th Meeting: Geneva, CH, Apr. 27-May 7, 2012, JCTVC-11003—d21, pp. 290. |
Bross, et al., “High efficiency video coding (HEVC) text specification draft 8,” Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 10th Meeting: Stockholm, SE, Jul. 11-20, 2012, JCTVC-J1003—d7, pp. 261. |
Bross et al., “WD4: Working Draft 4 of High-Efficiency Video Coding,” JCTVC-F803—d2, (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 Joint Collaborative Team on Video Coding, 6th Meeting, Torino, IT, Jul. 14-22, 2011, 226 pages. |
Bross et al., “WD5: Working Draft 5 of High-Efficiency Video Coding,” JCTVC-G1103—d2, (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 Joint Collaborative Team on Video Coding, 7th Meeting, Geneva, Switzerland (Nov. 2011), 214 pages. |
European Search Report—EP10013235—Search Authority—The Hague—Aug. 20, 2012. |
European Search Report—EP10013236—Search Authority—The Hague—Jul. 12, 2012. |
“International Preliminary Report on Patentability—PCT/US2011/044284, The International Bureau of WIPO—Geneva, Switzerland, Oct. 8, 2012.” |
ITU-T H.264, Series H: Audiovisual and Multimedia Systems, Infrastructure of audiovisual services—Coding of moving video, Advanced video coding for generic audiovisual services, The International Telecommunication Union. Jun. 2011, 674 pp. |
Jiang., File Format for Scalable Video Coding, PowerPoint Presentation for CMPT 820, Summer 2008. |
Pantos, “HTTP Live Streaming draft-pantos-http-live-streaming-02”, Informational, Internet-Draft, Intended status: Informational, Expires: Apr. 8, 2010, http://toolsiettorg/html/draft-pantos-http-live-streaming-02, pp. 1-20, Oct. 5, 2009. |
Supplementry European Search Report—EP08746007—Search Authority—Munich—Sep. 27, 2012. |
Wiegand et al., “WD3: Working Draft 3 of High-Efficiency Video Coding,” Document JCTVC-E603, 5th Meeting: Geneva, CH, Mar. 16-23, 2011, 193 pp. |
Wiegand T. et al., “WD2: Working Draft 2 of High-Efficiency Video Coding”, Jan. 28, 2011, No. JCTVC-D503, Jan. 28, 2011, XP002679642, Retrieved from the Internet: URL: http://wftp3.itu.int/av-archictvc-site/2011—01—D—Daegu/ [retrieved on Jul. 11, 2012]. |
Yamanouchi N., et al., “Internat Multimedia Transmission with Packet by Using forward Error Correction,” Proceedings of DPS workshop, The Informantion Processing Society of Japan, Dec. 6, 2000, vol. 2000, No. 15, pp. 145-150. |
Anonymous: “Technologies under Consideration”, 100. MPEG Meeting; Apr. 30-5, 2012; Geneva; (Motion Picture Expert Group or ISO/IEC JTC1 /SC29/WG11) No. N12682, Jun. 7, 2012, XP030019156. |
Gil A., et al., “Personalized Multimedia Touristic Services for Hybrid Broadcast/Broadband Mobile Receivers,” IEEE Transactions on Consumer Electronics, 2010, vol. 56 (1), pp. 211-219. |
Hannuksela M.M., et al., “DASH: Indication of Subsegments Starting with Sap, 97. Mpeg Meeting; Jul. 18-22, 2011; Torino; (Motion Picture Expert Group or ISO/IEC JTC1/SC29/WG11)” No. m21096, Jul. 21, 2011, XP030049659. |
Hannuksela M.M., et al., “ISOBMFF: SAP definitions and 'sidx' box”, 97. MPEG Meeting; Jul. 18-22, 2011; Torino; (Motion Picture Expert Group or ISO/IEC JTC1/SC29/WG11) No. m21435, Jul. 22, 2011, XP030049998. |
Li, M., et al., “Playout Buffer and Rate Optimization for Streaming over IEEE 802.11 Wireless Networks”, Aug. 2009, Worcester Polytechnic Institute, USA. |
Roumy a., et al., “Unequal Erasure Protection and Object Bundle Protection with the Generalized Object Encoding Approach”, Inria-00612583, Version 1, Jul. 29, 2011, 25 pages. |
Stockhammer T., et al., “DASH: Improvements on Representation Access Points and related flags”, 97. MPEG Meeting; Jul. 18-22, 2011; Torino; (Motion Picture Expert Group or ISO/IEC JTC1/SC29/WG11) No. m20339, Jul. 24, 2011, XP030048903. |
Yamazaki M., et al., “Multilevel Block Modulation Codes Construction of Generalized DFT,” Technical Report of the Institute of Electronics, Information and Communication Engineers, Jan. 24, 1997, vol. 96, No. 494, pp. 19-24, IT96-50. |
3rd Generation Partnership Project; Technical Specification Group Services and System Aspects; Transparent end-to-end Packet-switched Streaming Service (PSS); Progressive Download and Dynamic Adaptive Streaming over HTTP (3GP-DASH) (Release 10), 3GPP Standard; 3GPP TS 26.247, 3RD Generation Partnership Project (3GPP), Mobile Competence Centre; 650, Route Des Lucioles; F-06921 Sophia-Antipolis Cedex; France, vol. SA WG4, No. V10.0.0, Jun. 17, 2011, pp. 1-94, XP050553206, [retrieved on Jun. 17, 2011]. |
Atis: “PTV Content on Demand Service”, IIF-WT-063R44, Nov. 11, 2010, pp. 1-124, XP055045168, Retrieved from the Internet: URL:ftp://vciegits.bldrdoc.gov/Documents/VQEG—Atlanta—Nov10/MeetingFiles/Liaison/IIF-WT-063R44—Content—on—Demand.pdf [retrieved on Nov. 22, 2012]. |
Bouazizi I., et al., “Proposals for ALC/FLUTE server file format (14496-12Amd.2)”, 77. MPEG Meeting; Jul. 17-21, 2006; Klagenfurt; (Motion Pictureexpert Group or ISO/IEC JTC1/SC29/WG11), No. M13675, Jul. 12, 2006, XP030042344, ISSN: 0000-0236. |
European Search Report—EP10013232—Search Authority—The Hague—Feb. 28, 2013. |
Frojdh P., et al., “Study on 14496-12:2005/PDAM2 ALU/FLUTE Server File Format”, 78.MPEG Meeting; Oct. 23-27, 2006; Hangzhou: (Motion Picturexpert Group or ISO/IEC JTC1/SC29/WG11) No. M13855, Oct. 13, 2006, XP030042523, ISSN: 0000-0233. |
International Search Report and Written Opinion—PCT/US2012/053394—ISA/EPO—Feb. 6, 2013. |
Luby et al., RaptorQ Forward Error Correction Scheme for Object Delivery draft-ietf-rmt-bb-fec-raptorq-00, Qualcomm, Inc. Jan. 28, 2010. |
Michael G et al., “Improved low-density parity-check codes using irregular graphs”, Information Theory, IEEE Transactions on, Feb. 2001, vol. 47, No. 2, pp. 585-598. |
Motorola et al: “An Analysis of DCD Channel Mapping to Boast File Delivery Sessions; OMA-CD-DCD-2007-0112-INP—DCD—Channel Mapping—to—BCAST—Fi1e—Delivery”, OMA-CD-DCD-2007-0112-INP—DCD—Channel—Mapping—To—BCAST—File—Delivery, Open Mobile Alliance (OMA), 4330 La Jolla Village Dr., Suite 110 San Diego, CA 92122; USA Oct. 2, 2007, pp. 1-13, XP064036903. |
Ohashi a et al., “Low-Density Parity-Check (LDPC) Decoding of Quantized Data,” Technical Report of the Institute of Electronics, Information and Communication Engineers, Aug. 23, 2002, vol. 102, No. 282, pp. 47-52, RCS2002-154. |
Schulzrinne, et al., “Real Time Streaming Protocol (RTSP)” Network Working Group, Request for Comments: 2326, Apr. 1998, pp. 1-92. |
Wadayama T, “Introduction to Low Density Parity Check Codes and Sum-Product Algorithm,” Technical Report of the Institute of Electronics, Information and Communication Engineers, Dec. 6, 2001, vol. 101, No. 498, pp. 39-46, MR2001-83. |
3GPP: “3rd Generation Partnership Project; Technical Specification Group Services and system Aspects; Multimedia Broadcast/Multicast Service (MBMS); Protocols and codecs (Release 6)”, Sophia Antipolis, France, Jun. 1, 2005, XP002695256, Retrieved from the Internet: URL:http://www.etsi.org/deliver/etsits/126300—126399/126346/06.01.00—60/ts—126346v060100p.pdf. |
Anonymous: “Technologies under Consideration”, 98. MPEG Meeting; Nov. 28-Feb. 12, 2011; Geneva; (Motion Picture Expert Group or ISO/IEC JTC1/SC29/WG11) No. N12330, Dec. 3, 2011, XP030018825. |
Anonymous: “Text of ISO/IEC IS 23009-1 Media Presentation Description and Segment Formats”, 98. MPEG Meeting; Nov. 28-Feb. 12, 2012; Geneva; (Motion Picture Expert Group or ISO/IEC JTC1/SC29/WG11) No. N12329, Jan. 6, 2012, XP030018824. |
“Digital Video Broadcasting (DVB); Framing structure, channel coding and modulation for digital terrestrial television; ETSI EN 300 744” ETSI Standards, Lis, Sophia Antipolis Cedex, France, V1.6.1, pp. 9, Jan. 10, 2009. |
Kim J., et al., “Enhanced Adaptive Modulation and Coding Schemes Based on Multiple Channel Reportings for Wireless Multicast Systems”, 62nd IEEE Vehicular Technology Conference, VTC-2005-Fall, Sep. 25-28, 2005, vol. 2, pp. 725-729, XP010878578, DOI: 1 0.11 09/Vetecf.2005.1558019, ISBN: 978-0/7803-9152-9. |
Moriyama, S., “5. Present Situation of Terrestrial Digital Broadcasting in Europe and USA”, Journal of The Institute of Image Information and Television Engineers, Nov. 20, 1999, vol. 53, No. 11, pp. 1476-1478. |
Qualcomm Incorporated: “RaptorQ Technical Overview”, pp. 1-12, Oct. 1, 2010. |
Bross, et al., “High efficiency video coding (HEVC) text specification draft 6,” JCTVC-H1003, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 8th Meeting: San José, CA, USA, Feb. 1-10, 2012, 259 pp. |
Makoto N., et al., “On Tuning of Blocking LU decomposition for VP2000 series” the 42th Information Processing Society of Japan Conference (1st term in 1991), Feb. 25, 1991, pp. 71-72, 4B-8. |
Miller G., et al., “Bounds on the maximum likelihood decoding error probability of low density parity check codes”, Information Theory, 2000. Proceedings. IEEE International Symposium on, 2000, p. 290. |
Muramatsu J., et al., “Low density parity check matrices for coding of multiple access networks”, Information Theory Workshop, 2003. Proceedings. 2003 IEEE , Apr. 4, 2003, pp. 304-307. |
Samukawa, H. “Blocked Algorithm for LU Decomposition” Journal of the Information Processing Society of Japan, Mar. 15, 1993, vol. 34, No. 3, pp. 398-408. |
3GPP TSG-SA4 #57 S4-100015, IMS based PSS and MBMS User Service extensions, Jan. 19, 2010, URL : http://www.3gpp.org/ftp/tsg—sa/WG4—CODEC/TSGS4—57/docs/S4-100015.zip. |
3rd Generation Partnership Project; Technical Specification Group Services and System Aspects; Transparent end-to-end Packet-switched Streaming Service (PSS);Protocols and codecs(Release 9) 3GPP TS 26.234 V9.3.0, Jun. 23, 2010 P.85-102,URL,http://www.3gpp.org/ftp/TSG—SA/WG4—CODEC/TSGS4—59/Docs/S4-100511.zip, 26234-930.zip. |
Lee, J.Y., “Description of Evaluation Experiments on ISO/IEC 23001-6, Dynamic Adaptive Streaming over HTTP”, ISO/IEC JTC1/SC29/WG11MPEG2010/N11450, Jul. 31, 2010, 16 pp. |
Luby M., “Simple Forward Error Correction (FEC) Schemes,” draft-luby-rmt-bb-fec-supp-simple-00.txt, pp. 1-14, Jun. 2004. |
Luby M., “LT Codes”, Foundations of Computer Science, 2002, Proceedings, The 43rd Annual IEEE Symposium on, 2002. |
Morioka S., “A Verification Methodology for Error Correction Circuits over Galois Fields”, Tokyo Research Laboratory, IBM Japan Ltd, pp. 275- 280, Apr. 22-23, 2002. |
Qualcomm Incorporated: “Adaptive HTTP Streaming: Complete Proposal”, 3GPP TSGSA4 AHI Meeting S4-AHI170, Mar. 2, 2010, URL, http://www.3gpp.org/Ftp/tsg—sa/WG4—CODEC/Ad-hoc—MBS/Docs—AHI/S4-AHI170.zip, S4- AH170—Cr—AdaptiveHTTPStreaming-Full.doc. |
Qualcomm Incorporated: “Corrections to 3GPP Adaptive HTTP Streaming”, 3GPP TSG-SA4 #59 Change Request 26.234 CR0172 S4-100403, Jun. 16, 2010, URL, http://www.3gpp.org/FTP/tsg—sa/WG4—CODEC/TSGS4—59/Docs/54-100403.zip, S4-100403—CR—26234-0172-AdaptiveHTTPStreaming-Re1-9.doc. |
Chikara S., et al., “Add-on Download Scheme for Multicast Content Distribution Using LT Codes”, IEICE. B, Communications, Aug. 1, 2006, J89-B (8), pp. 1379-1389. |
Gerard F., et al., “HTTP Streaming MPEG media—Response to CFP”, 93. MPEG Meeting, Geneva Jul. 26, 2010 to Jul. 30, 2010. |
Hasan M A., et al., “Architecture for a Low Complexity Rate-Adaptive Reed-Solomon Encoder”, IEEE Transactions on Computers, IEEE Service Center, Los Alamitos, CA, US, vol. 44, No. 7, Jul. 1, 1995, pp. 938-942, XP000525729, ISSN: 0018-9340, DOI: 10.1109/12.392853. |
Tetsuo M., et al., “Comparison of Loss Resilient Ability between Multi-Stage and Reed-Solomon Coding ”, Technical report of IEICE. CQ, Communication Quality, vol. 103 (178), Jul. 4, 2003, pp. 19-24. |
Qualcomm Incorporated: “RatorQ Forward Error Correction Scheme for Object Delivery draft-ietf-rmt-bb-fec-raptorq-04”, Internet Engineering Task Force, IETF, pp. 1-68, Aug. 24, 2010. |
Watson M., et al., “Forward Error Correction (FEC) Framework draft-ietf-fecframe-framework11,” 2011, pp. 1-38, URL,http://tools.ietf.org/pdf/draft-ietf-fecframe-framework-11.pdf. |
Watson M., et al., “Raptor FEC Schemes for FECFRAME draft-ietf-fecframe-raptor-04,” 2010, pp. 1-21, URL,http://tools.ietf.org/pdf/draft-ietf-fecframe-raptor-04.pdf. |
Ramsey B, “HTTP Status: 206 Partial Content and Range Requests,” May 5, 2008 obtained at http://benramsey.com/blog/2008/05/206-partial-content-and-range-requests/. |
Number | Date | Country | |
---|---|---|---|
20110019769 A1 | Jan 2011 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 11354256 | Feb 2006 | US |
Child | 12781192 | US | |
Parent | 10032156 | Dec 2001 | US |
Child | 11354256 | US |