1. Field of the Invention
The present invention relates to a method of reliably and robustly encoding data streams to be transmitted to various types of communication and computer systems, for example but not limited to, a one-way satellite broadcast system including a host computer and a subscriber computer. In particular, the present invention relates to an encoding procedure that uses a shifted interleaving of packets.
2. Description of Related Art
U.S. Pat. No. 6,609,223, U.S. Pat. No. 6,012,159, and U.S. Pat. No. 6,272,658, all of which are assigned to KenCast, Inc., are hereby incorporated by reference.
U.S. Pat. No. 6,609,223 describes a method for encoding a stream of source packets, in which a number, k, of source packets of a message are packet-level forward-error-correction (“FEC”) encoded to form a number n−k of error-correcting wildcard packets. The k source packets and the n−k wildcard packets (forming a total of n packets) are to be transmitted by a transmitter/encoder, such as a host computer, to a receiver/decoder, such as a subscriber computer. The message may be successfully reconstructed on the receiver/decoder side as long as any of k packets, whether they are source packets or wildcard packets or both, are successfully received. For example, a transmitted message may comprise k=180 source packets and n−k=20 wildcard packets, for a total of n=200 transmitted packets, as shown in FIG. 1A of U.S. Pat. No. 6,609,223 and reproduced herein as
As disclosed in U.S. Pat. No. 6,609,223, after the arrival of each source packet at the transmitter/encoder, for each byte of the source packet, the respective error-correction contributions to the corresponding bytes of the n−k wildcard packets are computed. Thereafter, the source packet is transmitted to the receiver/decoder without waiting for the arrival of another source packet of the k source packets. This is repeated for each arriving source packet. For each wildcard packet byte, the error-correction contribution generated from each source packet is summed in an accumulator, or the like. After all the error-correction contributions have been computed using all k source packets and summed over all n−k wildcard packets, the wildcard packets are transmitted to the receiver/decoder.
As further disclosed in U.S. Pat. No. 6,609,223, the number n−k of wildcard packets is determined by the operator of the transmitter/encoder (e.g., host computer), based on knowledge of the communication channel to be used, and, specifically, on the expected number of packets to be lost during transmission, e.g., due to interference. For example, it may be expected that a maximum 4 out of 16 transmitted packets will be lost during transmission, a 25% loss rate, and thus n−k=4 wildcard packets will be computed for every k=12 source packets. (A 25% loss rate was chosen to provide an easy to understand example—actual loss rates usually are less than 5%. In any event, the present invention is not limited to any particular loss rate.) Accordingly, at the receiver/decoder, the k=12 source packets may be reconstructed without errors if any 12 of the transmitted packets, that is, any combination of transmitted source packets and wildcard packets, are successfully received.
U.S. Pat. No. 6,609,223 explains that due to the nature of actual packet streams not all expected source packets may arrive at the transmitter/encoder. Continuing with the above example, only the first nine of the expected twelve source packets may arrive at the transmitter/encoder; the last three may never arrive. Eventually, a timeout condition occurs, for example, after the elapse of a predetermined time interval from the arrival of the last source packet (this generally is referred to as the “timeout case,” in contrast to the case where all expected source packets arrive). At that time, i.e., when a timeout condition occurs, the wildcard packets, and more preferably, a subset thereof, are transmitted, with an indication in the headers of the wildcard packets that, in this example, only nine source packets contributed to the information of the wildcard packets.
As also disclosed in U.S. Pat. No. 6,609,223 (and, by reference therein, U.S. Pat. No. 6,012,159 and U.S. Pat. No. 6,272,658), to further enhance the encoding scheme's robustness against interference, prior to encoding and transmission, the packets may be grouped into multiple shares in an interleaving fashion, as shown in FIG. 1B of U.S. Pat. No. 6,609,223 reproduced herein as
Further, U.S. Pat. No. 6,609,223 discloses that a lot of multiple shares of interleaved packets may be transmitted to a subscriber computer at the same time. That is, one share of interleaved packets may be transmitted to the subscriber computer at the same time as several other shares of interleaved packets.
However, this arrangement has consequences. First, when the lot of multiple shares of interleaved packets is transmitted at the same time, all of the shares in the lot are received and ready for decoding at the subscriber computer at approximately the same time. As the number of shares per lot increases, the amount of computation required for decoding each lot increases linearly, and the time in between such computations increases linearly. Another consequence of this arrangement is that the number of error-correcting wildcard packets that must be (consecutively) transmitted at a given time increases linearly with the number of shares per lot. It would desirable to have an encoding method that overcomes these consequences.
The present invention addresses the deficiencies in the prior art by providing a method for transmitting interleaved shares of packet-level FEC encoded packets, with each share including source packets and wildcard packets, for a given time shift between consecutive shares. The method includes: determining a current state; associating a packet with a share based on the current state; and determining a position of the packet within the share. If the position of the packet corresponds to a source packet position, a contribution from the packet to wildcard packets of the share is computed and the packet is transmitted as a source packet. If the position of the packet corresponds to a wildcard packet position, the packet is transmitted as a wildcard packet.
The present invention also provides a method for shifting interleaved shares of packet-level FEC encoded packets to be transmitted, in which multiple shares of packets are transmitted as a lot. The method includes: determining a time shift, S, based on a number of source packets per share, K, a number of error-correcting packets per share, E, and a number of shares per lot, L; and shifting a share by the time shift, S, relative to a previous share, wherein the time shift, S, is given by S=(K+E)/L.
The present invention further provides a method for transmitting interleaved shares of packet-level FEC encoded packets to be transmitted, in which multiple shares of packets are transmitted as a lot. The method includes: determining a time shift, S, based on a number of source packets per share, K, a number of error-correcting packets per share, E, and a number of shares per lot, L, wherein S=(K+E)/L; shifting a share by the time shift, S, relative to a previous share; arranging the lot packets to be transmitted according into columns and rows, with C representing a column number and R representing a row number, wherein 0≦R≦(L−1) and R corresponds to a share in the lot; transmitting a packet at a first position identified by R and C; determining a next position such that: if R+1=L, set R=0 and increase C by 1, or, if R+1<L, then set R=R+1; and transmitting a packet at the next position.
Various aspects of the present invention can be better understood by reference to the detailed description of the invention set forth below, considered in conjunction with the attached drawings, of which:
According to an embodiment of the present invention, the same mechanism to encode k source packets to form a plurality of n−k error-correcting wildcard packets, as described in U.S. Pat. No. 6,609,223, is used. One of the differences between the present invention and that of U.S. Pat. No. 6,609,223 is how packets, which include source packets and wildcard packets, are grouped into shares, and how those shares are interleaved.
As discussed above, U.S. Pat. No. 6,609,223 discloses grouping packets into shares whose transmission begins and ends at approximately the same time. In the present invention packets are grouped into shares whose transmission begins and ends at different times.
According to an embodiment of the present invention, the times of these beginnings and endings are separated as much as possible. For example, for a given set of parameters: n (i.e., total number of packets per share), k (i.e., number of source packets per share), and l (i.e., number of interleaved shares (shares with interleaved packets) per lot), if the distance between packets in a given share is exactly the same as in the methods described in U.S. Pat. No. 6,609,223, then the error-correcting properties (e.g., the ability of the subscriber computer to make corrections for missing packets) of this embodiment of the present invention also are the same. However, unlike the methods described in U.S. Pat. No. 6,609,223, with the shifted interleaving of this embodiment of the present invention the subscriber computer must decode one share approximately every n packets, whereas in the interleaving method of U.S. Pat. No. 6,609,223, the subscriber computer is required to decode l shares every (l*n) packets.
As will be discussed in more detail below,
Because the packets for a given share must be stored in memory until they are decoded, the memory requirements for the subscriber computer still increase linearly with the number of shares per lot. However, increasing the number of shares per lot advantageously increases the robustness of the encoding scheme. That is, by increasing the distance between packets in a given share there is a decrease in the probability that a sequence of correlated errors eliminates more packets than can be recovered from a given share.
Shifted interleaving, according to embodiments of the present invention, allows for an increase in the number of shares per lot, while only requiring a constant amount of computational complexity for decoding. Therefore, shifted interleaving may be used with devices that cannot use the interleaving methods described in U.S. Pat. No. 6,609,223 due to lack of computational resources.
Another advantage of shifted interleaving, according to embodiments of the present invention, is that error-correcting wildcard packets are interspersed more uniformly in the sequence of transmitted packets that in the interleaving methods described in U.S. Pat. No. 6,609,223. That is, blocks of consecutive wildcard packets are smaller, which makes it easier to manage the use of bandwidth.
In some embodiments of the present invention, the source packets to be encoded and transmitted come from an external source (such as described in U.S. Pat. No. 6,609,223). As discussed above, the number of transmitted packets is larger than the number of source packets, because extra wildcard packets are generated and added to the packets to be transmitted. Because data of the source packets must be reproduced and used at the subscriber computer with approximately the same timing, it is not possible to “slow down” the packet stream to accommodate the extra packets to be transmitted. Therefore the transmitted packets must be sent at a faster rate than the rate at which the source packets are received by the transmitter/encoder. If the source packets are received at a constant rate, then it is easy to see that the transmitted packets must be sent at an increased rate in proportion to the proportion of wildcard packets being added. Further, it is desirable for the transmitted packets to be sent at a rate as uniform as possible, so that a burst error in the transmission network cannot cause a loss of a disproportionate number of packets.
However, if the source packets come from an external source, it may be (and often is) the case that they are not received at a uniform rate. This makes it difficult to predict the desired rate at which to send the transmitted packets when sending large sets of consecutive wildcard packets, as is the case with the methods described in U.S. Pat. No. 6,609,223. As described below, the present invention overcomes this drawback of the methods described in U.S. Pat. No. 6,609,223.
According to an embodiment of the present invention, a transmitter is configured to utilize the following parameters:
According to this embodiment, S or (m_nInterleaveShift), that is, the time shift between consecutive shares, is computed from the other parameters as follows:
if S approaches 0, then S=1.
The transmitter uses two variables to represent the current state (that is, to represent the packet to be transmitted next):
In the diagram of
As each packet is sent, R or (m_nCurrentShare) is increased by one. If R or (m_nCurrentShare) is to be increased to L or (nNumSharesInLot), then R is reset to 0 and C or (m_nCurrentCol) is increased by one.
Given the current share and column number, the position, P or (nShiftedPos), of the packet within the share is given by:
P=C−R*S%(K+E), (equation B)
where % means modulo. That is:
At the beginning, positions where C<R*S or
If P or (nShiftedPos) corresponds to the position of a source packet (that is, it is less than K or (m_nNumSrcPktsInShare)), the packet is a source packet and the contribution of the source packet to the error-correcting or wildcard packets is computed using the methods described in U.S. Pat. No. 6,609,223, and the source packet is transmitted.
If P or (nShiftedPos) corresponds to the position of an error-correcting or wildcard packet (that is, it is greater than or equal to K or (m_nNumSrcPktsInShare)), then the corresponding wildcard packet is transmitted. The wildcard packets are ready to be sent as soon as the last source packet is sent.
Each packet is assigned a lot number. The first instance of each share is assigned lot number 0, and each subsequent instance has a lot number incremented by one.
According to an embodiment of the present invention, lot numbers are 16-bit integers, that is, they “wrap around” at 65536. Each packet is labeled with a share number, R of (m_nCurrentShare); a lot number, T or (LotNumber); and a position, P or (nShiftedPos). The column number, C or (m_nCurrentCol), can be recovered from this information by the following relation:
C=T*(K+E)+P+R*S%65536*(K+E),
that is:
At the subscriber computer, the receiver/decoder collects packets as they are received and stores them in memory. When sufficient packets are received to decode a given share, this share is decoded to reconstruct the original source packets, using the methods described in U.S. Pat. No. 6,609,223. If more packets are missing than can be recovered using the error-correcting methods described in U.S. Pat. No. 6,609,223, then the receiver/decoder takes a best-effort approach, and uses the source packets that have been received, as also discussed in U.S. Pat. No. 6,609,223.
Because the receiver/decoder can reconstruct the column and share numbers corresponding to the packets, using the relations discussed above, it can output the decoded source packets in the order that the source packets were received at the transmitter/encoder.
In keeping with equation A (shown above), the time shift between consecutive transmitted shares, S, is 2. Also, in keeping with equation B (shown above), the positions of the packets are determined by P=C−R*S % (K+E), with 0≦P≦(K+E−1).
For example, the packets of column 7 in
Similarly, for example, the packets of column 13 in
According to an embodiment of the present invention, the parameters are chosen so that a given share will correspond to a given window of real time, e.g. 20 seconds. This is so that the error-correcting properties of the algorithm can correspond to recovery of signal losses for real periods of time. Accordingly, these parameters are set based on predictions about the rate at which source packets are received.
The rate at which source packets are actually received may differ from predictions, and there it is desirable in such cases to keep the shares approximately within the desired window of real time, by sending fewer packets in the share. To achieve such a result, according to an embodiment of the present invention, a time marker is maintained for each share. The time marker measures the amount of time since the first wildcard packet of the previous instance of that share. If this time exceeds a given timeout value, the share is marked as “running late” and any remaining source packets for that share are skipped. That is, when positions corresponding to any remaining source packets come up during an iteration of encoding and transmission processing, nothing is sent and the iteration continues. These skipped packets may be accounted for in the same manner as described in the “Timeout Case” of U.S. Pat. No. 6,609,223.
The number of error-correcting or wildcard packets for the “running late” share can also be reduced, as described in the “Timeout Case” of U.S. Pat. No. 6,609,223. In such a situation, the iteration simply skips over any positions corresponding to wildcard packets that are not to be sent.
According to an embodiment of the present invention, the above-described shifted interleaving scheme is performed by a computer programmed to perform the steps of the scheme.
It will be appreciated that the shifted interleaving scheme of the present invention can be applied to any error-correcting process for transforming a plurality of source packets into a plurality of encoded packets, such that the source packets can be recovered (i.e., decoded) from a sufficient subset of the encoded packets. Of course, it will be appreciated that the invention may take forms other than those specifically described, and the scope of the invention is to be determined solely by the following claims.
This application claims benefit of U.S. Provisional Application No. 60/714,565 filed on Sep. 6, 2005, the entire disclosure of which is incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
4009347 | Flemming et al. | Feb 1977 | A |
4525833 | Cau et al. | Jun 1985 | A |
4718066 | Rogard | Jan 1988 | A |
4907277 | Callens et al. | Mar 1990 | A |
5485474 | Rabin | Jan 1996 | A |
5594490 | Dawson et al. | Jan 1997 | A |
5600663 | Ayanoglu et al. | Feb 1997 | A |
5617541 | Albanese et al. | Apr 1997 | A |
5631907 | Guarneri et al. | May 1997 | A |
5768533 | Ran | Jun 1998 | A |
5790524 | Bennett et al. | Aug 1998 | A |
5815514 | Gray | Sep 1998 | A |
5903574 | Lyons | May 1999 | A |
5959974 | Badt et al. | Sep 1999 | A |
6012159 | Fischer et al. | Jan 2000 | A |
6031818 | Lo et al. | Feb 2000 | A |
6052819 | Barker et al. | Apr 2000 | A |
6104757 | Rhee | Aug 2000 | A |
6141788 | Rosenberg et al. | Oct 2000 | A |
6151696 | Miller | Nov 2000 | A |
6189039 | Harvey et al. | Feb 2001 | B1 |
6249810 | Kiraly | Jun 2001 | B1 |
6272658 | Steele et al. | Aug 2001 | B1 |
6289054 | Rhee | Sep 2001 | B1 |
6307487 | Luby | Oct 2001 | B1 |
6317462 | Boyce | Nov 2001 | B1 |
6320520 | Luby | Nov 2001 | B1 |
6336200 | Wolfgang | Jan 2002 | B1 |
6370666 | Lou et al. | Apr 2002 | B1 |
6373406 | Luby | Apr 2002 | B2 |
6411223 | Haken et al. | Jun 2002 | B1 |
6434191 | Agrawal et al. | Aug 2002 | B1 |
6445717 | Gibson et al. | Sep 2002 | B1 |
6463080 | Wildey | Oct 2002 | B1 |
6486803 | Luby et al. | Nov 2002 | B1 |
6496477 | Perkins et al. | Dec 2002 | B1 |
6498821 | Jonas et al. | Dec 2002 | B2 |
6526022 | Chiu et al. | Feb 2003 | B1 |
6567929 | Bhagavath et al. | May 2003 | B1 |
6567948 | Steele et al. | May 2003 | B2 |
6570843 | Wolfgang | May 2003 | B1 |
6574213 | Anandakumar et al. | Jun 2003 | B1 |
6574795 | Carr | Jun 2003 | B1 |
6594798 | Chou et al. | Jul 2003 | B1 |
6606723 | Wolfgang | Aug 2003 | B2 |
6609223 | Wolfgang | Aug 2003 | B1 |
6614366 | Luby | Sep 2003 | B2 |
6671807 | Jaisimha et al. | Dec 2003 | B1 |
6693907 | Wesley et al. | Feb 2004 | B1 |
6701373 | Sakazawa et al. | Mar 2004 | B1 |
6735634 | Geagan, III et al. | May 2004 | B1 |
6765889 | Ludwig | Jul 2004 | B1 |
6782490 | Maxemchuk et al. | Aug 2004 | B2 |
6804244 | Anandakumar et al. | Oct 2004 | B1 |
6868083 | Apostolopoulas et al. | Mar 2005 | B2 |
6937582 | Kronestedt | Aug 2005 | B1 |
7024609 | Wolfgang et al. | Apr 2006 | B2 |
7068601 | Abdelilah et al. | Jun 2006 | B2 |
7139243 | Okumura | Nov 2006 | B2 |
7315967 | Azenko et al. | Jan 2008 | B2 |
7324578 | Kwon et al. | Jan 2008 | B2 |
7418651 | Luby et al. | Aug 2008 | B2 |
7425905 | Oberg | Sep 2008 | B1 |
7516387 | Arnold et al. | Apr 2009 | B2 |
7796517 | Chen et al. | Sep 2010 | B2 |
20010033611 | Grimwood et al. | Oct 2001 | A1 |
20010046271 | Jonas et al. | Nov 2001 | A1 |
20020035730 | Ollikainen et al. | Mar 2002 | A1 |
20020049939 | Steele et al. | Apr 2002 | A1 |
20020075964 | Okumura | Jun 2002 | A1 |
20020097678 | Bisher, Jr. et al. | Jul 2002 | A1 |
20030009718 | Wolfgang et al. | Jan 2003 | A1 |
20040025186 | Jennings et al. | Feb 2004 | A1 |
20040170201 | Kubo et al. | Sep 2004 | A1 |
20060059409 | Lee | Mar 2006 | A1 |
20060064626 | Fischer et al. | Mar 2006 | A1 |
20060253763 | Oliva et al. | Nov 2006 | A1 |
20070022361 | Bauer et al. | Jan 2007 | A1 |
20080098284 | Wolfgang et al. | Apr 2008 | A1 |
20080117819 | Flott et al. | May 2008 | A1 |
20080244001 | Fang | Oct 2008 | A1 |
20080298271 | Morinaga et al. | Dec 2008 | A1 |
20090177948 | Fischer et al. | Jul 2009 | A1 |
20090210773 | Fang | Aug 2009 | A1 |
20100005178 | Sindelaru et al. | Jan 2010 | A1 |
20100218074 | Fang et al. | Aug 2010 | A1 |
Number | Date | Country | |
---|---|---|---|
60714565 | Sep 2005 | US |