Coding for real-time streaming under packet erasures
09800643 ยท 2017-10-24
Assignee
Inventors
- Derek Leong (Pasadena, CA, US)
- Asma Qureshi (Pasadena, CA, US)
- Yunkai Wei (Pasadena, CA, US)
- Tracey C. Ho (Pasadena, CA, US)
Cpc classification
H03M13/2921
ELECTRICITY
H03M13/3761
ELECTRICITY
H03M13/373
ELECTRICITY
H04N19/67
ELECTRICITY
H04N19/89
ELECTRICITY
H03M13/2721
ELECTRICITY
H03M13/3723
ELECTRICITY
International classification
H03M13/37
ELECTRICITY
H03M13/15
ELECTRICITY
Abstract
A computer-based real-time streaming system under packet erasures wherein created messages can be decoded within a fixed delay form their creation is presented. Various code construction methods and corresponding hardware implementation for different cases of erasure link models are also presented.
Claims
1. A computer-based method for real-time streaming of a plurality of independent messages over a communication link, the computer-based method comprising the steps: i) providing via a computer, a message size s of each of the plurality of independent messages at the creation time thereof; ii) providing via a computer, a message creation interval c based on a number of time steps, wherein the message creation interval defines the time interval between creation times of two consecutive messages of the plurality of independent messages; iii) providing via a computer, a packet size, wherein the packet size defines a size of an encoded packet transmitted at each time step; iv) providing via a computer, a link erasure characteristic, wherein the link erasure characteristic defines a communication link over which the encoded packet is transmitted; v) providing via a computer, a fixed decoding delay d in number of time steps, wherein the fixed decoding delay defines a delay with respect to a creation time of a message from the plurality of independent messages within which the message must be decoded, via a computer-based decoder, based on one or more transmitted encoded packets; vi) based on the steps i)-v), generating via a computer an encoding algorithm; vii) based on step vi), generating via a computer a decoding algorithm; viii) creating a computer-based encoder operatively implementing the encoding algorithm in one or more of hardware, firmware and software of the computer-based encoder, and ix) creating a computer-based decoder operatively implementing the decoding algorithm in one or more of hardware, firmware and software of the computer-based decoder, wherein a message of the plurality of independent messages encoded by the computer-based encoder into one or more encoded packets and transmitted over a communication link having the link erasure characteristic is decoded by the computer-based decoder within the fixed decoding delay from the creation time of the message.
2. The computer-based method of claim 1, wherein the link erasure characteristic is based on a window-based erasure model in which all erasure patterns containing a limited number of erasures in each specifically defined window are admissible.
3. The computer-based method of claim 2, wherein the specifically defined window is one of: a) a coding window, and b) a sliding window.
4. The computer-based method of claim 1, wherein the link erasure characteristic is based on a bursty erasure model in which all erasure patterns containing erasure bursts of a limited length, separated by intervals of at least a specified length, are admissible.
5. The computer-based method of claim 1, wherein the link erasure characteristic is based on an independent and identically distributed erasure model in which transmitted packets are erased independently with the same probability.
6. The computer-based method of claim 2, wherein the computer-based encoder has a fixed memory size m.sub.E and wherein the encoding algorithm operatively implemented within the computer-based encoder is a symmetric time-invariant intra-session coding (STIC) algorithm and comprises the computer-generated steps of: a. choosing a spreading parameter m={c, c+1, . . . , min(d, m.sub.E)} where m.sub.E is the encoder memory size; b. defining an effective coding window W.sub.i{(i1)c+1, . . . , (i1) c+m} for each message M.sub.i of the plurality of independent messages; c. defining a set of active messages A.sub.t at each time step t as A.sub.t
{M.sub.i: tW.sub.i}; d. dividing a packet space of a packet to be transmitted at each time step t evenly among the set of active messages at time step t, and e. using a max distance separable (MDS) code or random linear code to encode each message M.sub.i of the set of active messages into an appropriate number of symbols corresponding to a space of the packet space allocated to that message in the packet to be transmitted.
7. The computer-based method of claim 6, wherein the computer-based decoder receives a subset of the encoded packets, and based on the received packets, decodes each message separately using a computer-based decoder for the MDS or random linear code used to encode that message.
8. The computer-based method of claim 7, wherein the MDS code is a Reed-Solomon code.
9. The computer-based method of claim 7, wherein the linear code is constructed based on a random linear combination of symbols in a finite field.
10. The computer-based method of claim 4, wherein the bursty erasure model has a maximum erasure burst length z so that sc(dz)/d, and wherein the encoding algorithm operatively implemented within the computer-based encoder is a diagonally interleaved coding (DIC) algorithm and comprises the computer-generated steps of: a. considering a rectangular grid with d rows, where each column represents one encoded packet of normalized unit size; each cell in the grid contains one symbol of normalized size 1/d; the top dz rows of the grid contain the message information symbols, while the bottom z rows contain the parity symbols; b. inserting the c(dz) message symbols of message k, which is created at time step (k1)c+1, into the cells in the top dz rows of columns (k1)c+1, . . . , (k1)c+c, wherein zero padding or repeated symbols may be used if there are fewer than c(dz) message symbols; c. applying a computer-generated component systematic block code C to each diagonal on the grid, to generate the parity symbols in the bottom z rows, and d. transmitting each column of d symbols as a packet at the corresponding time step.
11. The computer-based method of claim 10, wherein the computer-generated component systematic block code C comprises d symbols, the first dz symbols being information symbols, while the last z symbols being parity symbols which can be non-degenerate or degenerate, and is generated using the following computer-generated steps: a. selecting the degenerate parity symbols by grouping parity symbols into disjoint intervals of dz symbols, if available, counting from the end of the block code, wherein degenerate parity symbols are uncoded copies of the information symbols, arranged in the same order; b. setting the remaining z parity symbols as the non-degenerate parity symbols, where 0z<dz; c. arranging the information symbols into rows of z symbols, counting from the beginning of the block code; If there are fewer than z symbols in the last row, then repeat them as many times as necessary until the row is filled, and d. arranging the z non-degenerate parity symbols below the last row of information symbols, and setting each non-degenerate parity symbol to be the bit-wise modulo-2 sum of the information symbols above the each non-degenerate parity symbol, wherein the computer-generated component systematic block code is given by the dz information symbols, followed by the z non-degenerate parity symbols (if any), followed by the zz degenerate parity symbols, if any.
12. The computer-based method of claim 10, wherein the computer-based decoder receives a subset of the encoded packets, and recovers the erased message symbols by taking a bit-wise modulo-2 sum of appropriate codeword symbols on each diagonal.
13. The computer-based method of claim 1 further comprising: providing parameters specifying decoding requirements for high and low priority messages, wherein high and low priority messages are created according to a periodic pattern such as a message of the plurality of messages is a high priority message or a low priority message.
14. The computer-based method of claim 13, wherein the encoder algorithm operatively implemented within the computer-based encoder is a proportional time-invariant intra-session coding (PTIC) algorithm and comprises the computer-generated steps of: a. choosing a spreading parameter m=d; b. defining an effective coding window W.sub.i{i, i+1, . . . , i+d1} for each message M.sub.i; c. defining a set of active messages A.sub.t at each time step t as A.sub.t
{M.sub.i: tW}; d. dividing a packet space of a packet to be transmitted at each time step t into one or more blocks according to the priority of an active message M.sub.i of the set of active messages, such as a block size allocated to the message M.sub.1 at time step t is:
15. The computer-based method of claim 14, wherein the computer-based decoder receives a subset of the encoded packets, and based on the received packets, decodes each message separately using a decoder for the MDS or random linear code used to encode that message.
16. The computer-based method of claim 15, wherein the parameters specifying decoding requirements for high and low priority messages are based on a number of erasures z.sub.h and z.sub.l respectively a message is required to tolerate, so that z.sub.lz.sub.hd and given by the expressions:
17. A computer-based real-time streaming system comprising: a computer-based source module configured to create a message of a plurality of independent messages of uniform size at a creation time of the message and encode the message into a plurality of sub-packets of a plurality of encoded packets, and a computer-based receiver module configured to decode the message of the plurality of independent messages within a fixed time delay from the creation time of the message based on a subset of the plurality of encoded packets, wherein the plurality of encoded packets are transmitted by the computer-based source module over a communication link to the computer-based receiver module; wherein the computer-based receiver module receives the subset of the plurality of encoded packets, and wherein an encoded packet of the plurality of encoded packets is encoded according to a set of parameters comprising: a) a link erasure characteristic of the communication link, b) the fixed time delay, c) the uniform size, d) a configurable size of the encoded packet, and e) a time interval between two consecutive creation times of the plurality of the independent messages.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12) [S] and the burstiness of undecodable messages as measured by the conditional probability
[
.sup.+, against message size s and packet erasure probability p.sub.e, for the family of symmetric intra-session codes, for (c, d, m.sub.E)=(3, 18, 6). In cases (a) and (c), p.sub.e=0.05. In cases (b) and (d), s=1. Spreading parameter m{c, . . . , d}, where d=min(d, m.sub.Ec)=18, gives the size of the effective coding window for each code. The bottommost solid curve in cases (a) and (b) describes a lower bound on the decoding failure probability for any time-invariant code, as given by Theorem 7 of Annex A1.
(13)
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
(22)
DETAILED DESCRIPTION
(23) .sup.+) time steps at the source module. At each time step t (e.g. positive integer), the source module transmits a single data packet of normalized unit size (e.g. packet size of 1) over the packet erasure link. Either the entire packet is received (e.g. instantaneously) by the receiver module (120) at a time step t, or the entire packet is erased (e.g. lost) and never received by the receiver module (120). The receiver module (120) must subsequently decode each message within a delay of d (e.g. positive integer) time steps from its creation time.
(24)
(25) The skilled person readily knows that the various elements (110, 120, 130) depicted in
(26) The communication link, noted as the erasure link (130), can be modeled by an error probability density function (e.g. erasure model) describing probability of occurrence of an error pattern (e.g. erasure pattern) over the link such as to affect the communication bandwidth required to support a particular message rate, as measured, for example, by a maximum transmission speed or packet size transmitted per a pre-defined unit of time. Therefore, an erasure pattern can specify a set of erased (e.g. erroneous, lost) packet transmissions over the link and an erasure model describes a distribution of erasure patterns over the link.
(27) According to various embodiments of the present disclosure, novel intra-session and intersession code constructions that allow the various messages to be encoded at the source module (110), transmitted over the erasure link (130) and be correctly decoded at the receiver module (120) within a pre-determined fixed delay (e.g. time window) with respect to the creation time of the message, and while accounting for a priority of a message if applicable, are provided. Such code constructions provides a decoding capability within the required fixed delay over links modeled by various erasure models as further described in Annex A1 and Annex A2, both of which make part of the present disclosure. In particular, such erasure models can comprise window based erasure models, bursty erasure models and independent and identically distributed (i.i.d.) erasure models.
(28) Code construction as provided by the various embodiments of the present disclosure and as further described in Annex A1 and Annex A2 which both make part of the present disclosure, can comprise joint consideration of various parameters, comprising: message size, message priority, message creation interval, packet size, decoding delay and link erasure characteristics.
(29) As used within the present disclosure, Annex A1 and Annex A2 which both make part of the present disclosure, the expression asymptotically optimal can refer to a code which achieves a maximum message size in the limit as the number of messages goes to infinity. As further used within the present disclosure, a code is referred to be asymptotically optimal over all codes when the code is optimal over all time-invariant and time-varying codes, as well as intra-session and inter-session codes; that is, its optimality is not restricted to a subset or family of codes.
(30) The novel codes presented in the following sections can be categorized as symmetric intra-session codes, which are suited for the window-based, bursty and i.i.d. erasure models, diagonally interleaved (intersession) codes which are suited for the bursty erasure model, and proportional intra-session codes which can be used for prioritized messages sent over window-based and i.i.d. erasure model links. Methods for construction of these novel codes are provided in the following sections, with more detailed information in the Annex A1 for the symmetric intra-session and the diagonally interleaved codes, and in the Annex A2 for the proportional intra-session codes, both Annex A1 and Annex A1 making part of the present disclosure.
(31) Throughout the present disclosure, for the case where the messages have equal priority, the usual definition of a time-invariant code applies in the case of c=1, where every packet is generated by applying a common encoding function to some recent interval of messages. For larger values of the message creation time interval c, the notion of time-invariance can be generalized as follows: Definition (Time-Invariant Code). A code is time-invariant if there exist causal and deterministic encoding functions .sub.1, . . . , .sub.c and a finite encoder memory size m.sub.E.sup.+ such that the packet transmitted at each time step (k1)c+i, where k
.sup.+, i{1, . . . , c}, is given by the function .sub.i applied to the m.sub.E most recent messages, such as:
X.sub.(k1)c+i=.sub.i(M.sub.k,M.sub.k1, . . . ,M.sub.km.sub.
(32) For prioritized messages (e.g. messages can have different priorities), a definition of time-invariant codes with finite encoder memory size m.sub.E can be codes in which the decoding statistics for all high-priority messages Mi for which im.sub.E are the same, and the decoding statistics for all low-priority messages Mi for which im.sub.E are the same. Such definition is used in the present disclosure as well as in Annex A2 which makes part of the present disclosure.
(33) Construction of Symmetric Intra-Session Codes
(34) In an intra-session code, coding is allowed within a same message but not across different messages. In such a code, a link bandwidth or data packet space at each time step (e.g. t) is allocated among the different messages. Each unit-size packet can be divided into multiple sub-packets or blocks of possibly different sizes, each encoding a different message. An appropriate code (e.g., a maximum distance separable (MDS) code or a random linear code) can subsequently be applied to this allocation so that each message is decodable whenever the total amount of received data that encodes that message, or the total size of the corresponding blocks, is at least the message size s. Reed-Solomon codes are examples of MDS code, whereas a random linear code can be constructed by computing random linear combinations of symbols in a finite filed (e.g. bytes in GF(2^8). The skilled person will require no further explanation of MDS and/or random linear codes.
(35) The blocks that encode a given message k are confined to the packets transmitted in the corresponding coding window W.sub.k (e.g. as defined in Annex A1 and Annex A2). Such blocks cannot be created before the message creation time, and are useless after the message decoding deadline. Thus, to decode each message, the decoder needs to access only the packets received at the most recent d time steps. The decoder memory requirements for intra-session codes are therefore modest compared to an intersession code requiring older packets or previous messages for decoding.
(36) In a time-invariant intra-session code, the encoding functions .sub.1, . . . , .sub.c determine the sizes of the blocks that encode the m.sub.E most recent messages in each interval of c packets or time steps. For each i{1, . . . , m.sub.Ec}, let x.sub.i0 be the size of the block that encodes message kq.sub.i,c at time step (k1)c+r.sub.i,c. Therefore, the size of the block that encodes message k at time step (k1)c+i is x.sub.i if i{1, . . . , m.sub.Ec}, and zero otherwise. Because of the unit packet size constraint (e.g. packet size of I as described in prior sections), the proposed code constructions according to the various embodiments of the present disclosure require that the sum of block sizes at each of the c time steps is at most one, as given by the expression:
(37)
Wherein q.sub.i,c and r.sub.i,c are unique integers defined as the offset quotient and the offset remainder of the positive integers i and c, such as:
i=q.sub.i,c+r.sub.i,c,q.sub.i,c.sub.0.sup.+,r.sub.i,c{1, . . . ,b}
wherein .sub.0.sup.+ denotes the set of non-negative integers. Note that this definition, as used in the present disclosure which includes Annex A1 and Annex A2, departs from the usual definition of quotient and remainder in that r.sub.i,c can be equal to b but not zero.
(38) According to an embodiment of the present disclosure, a family of symmetric intrasession codes, which are time-invariant intra-session codes with a symmetric allocation of packet space, is presented.
(39) For each symmetric code of the family of symmetric intra-session codes, a spreading parameter m{c, . . . , d} is defined, where by definition d=min(d, m.sub.Ec) (e.g. minimum value of the pair (d, m.sub.Ec)). According to some embodiments, d=d, since for most real-time streaming systems the decoding deadline constraint is typically stricter than the encoder memory size limit (e.g. dm.sub.Ec).
(40) For each symmetric code of the family of symmetric intra-session codes, let W.sub.k W.sub.k be the effective coding window for message k, which can be defined as the interval of m time steps beginning at the creation time of message k, such as,
W.sub.k{((k1)c+1, . . . ,(k1)c+m}
(41) For each symmetric code, let A.sub.t be the set of active messages at time step t, which are defined as the messages whose effective coding windows contain time step t, i.e.,
A.sub.t{k
:tW.sub.k}
(42) Note that non-positive messages are included as dummy messages.
(43) According to an embodiment of the present disclosure, for each symmetric code of the family of symmetric intra-session codes, the unit packet space at each time step is divided evenly among the active messages at that time step. Thus, the number of blocks allocated to each message k.sup.+ is given by the spreading parameter m, and the size of the block that encodes each active message kA.sub.t at each time step t
.sup.+ is given by 1/|At|.
(44) In the case of the symmetric code, the number of active messages at each time step (e.g. t.sup.+), for a given choice of (c, m), can be explicitly provided, as demonstrated in Annex A1 which makes part of the present disclosure. As described in Annex A1, there are two distinct cases which dictate differing number of active messages for a time step, as defined by the offset quotient and the offset remainder (as previously defined) of integer parameter sets (t, c) and (m, c): Case a.sub.1: If r.sub.t,cr.sub.m,c, then there are q.sub.m,c+1 active messages at time step t, each of which is allocated a block of size 1/(q.sub.m,c+1). Case a.sub.2: If r.sub.t,c>r.sub.m,c, then there are q.sub.m,c active messages at time step t, each of which is allocated a block of size 1/q.sub.m,c. As noted in Annex A1, which makes part of the present disclosure, when m is a multiple of c, then for any time step t, r.sub.t,cr.sub.m,c=c, which implies that there are q.sub.m,c+1 active messages at every time step, and therefore all blocks are of size 1/(q.sub.m,c+1)=c/m. This is showcased in diagram (a) of
(45) As a consequence of the number of active messages, message k is allocated either a small block of size 1/(q.sub.m,c+1) or a big block of size 1/q.sub.m,c at each time step tW.sub.k. No blocks are allocated to message k at all other time steps t.Math.W.sub.k. Writing each time step tW.sub.k as
t=(k1)c+i=(k1+q.sub.i,c)c+r.sub.i,c,
where i{1, . . . , m}, one can observe that the size of the block that encodes message k at time step (k1)c+i, which has been defined as x.sub.i, depends on the value of r.sub.i,c. As demonstrated in Annex A1, which makes part of the present disclosure, two cases are possible: Case b.sub.1: If r.sub.i,cr.sub.m,c, then x.sub.i=1/(q.sub.m,c+1). Since i{1, . . . , m}, this condition corresponds to the case where q.sub.i,c{0, . . . , q.sub.m,c} and r.sub.i,c{1, . . . , r.sub.m,c}. Therefore, message k is allocated a small block size 1/(q.sub.m,c+1) per time step for a total of (q.sub.m,c+1) r.sub.m,c time steps in the effective coding window Wk. Case b.sub.2: If r.sub.i,c>r.sub.m,c, then x.sub.i=1/q.sub.m,c. Since i{1, . . . , m}, this condition corresponds to the case where q.sub.i,c{0, . . . , q.sub.m,c1} and r.sub.i,c{r.sub.m,c+1, . . . ,c}. Therefore, message k is allocated a big block size 1/q.sub.m,c per time step for a total of q.sub.m,c(cr.sub.m,c) time steps in the effective coding window Wk.
(46) Other characteristics of the proposed novel family of symmetric time-invariant intra-session codes are provided in the Annex A1 which makes part of the present disclosure.
(47) A method for construction of the symmetric time-invariant intra-session codes, as provided in the various embodiments of the present disclosure and presented in the preceding paragraphs as well as in Annex A1 which makes part of the present disclosure, can be summarized by a construction flowchart (300A) as depicted in
(48) Given the parameters (c, d) and as presented in the method described by flowchart (300A) of {(i1)c+1, . . . , (i1) c+m} for each message M.sub.i Step 330: Define the set of active messages A.sub.t at each time step t as A.sub.t
{M.sub.i: tW.sub.i} Step 340: Divide the packet space at each time step t evenly among the active messages at time step t Step 350: Use a max distance separable (MDS) code or random linear code to encode each message into an appropriate number of symbols corresponding to the space allocated to that message in the packets to be transmitted Step 360: Transmit the coded packets over the channel Step 370: Receive a subset of the packets at the receiver. Step 380: Decode each message separately using a decoder for the MDS or random linear code used to encode that message.
Construction of Diagonally Interleaved Codes
(49) Consider a systematic block code C that encodes a given vector a of d information symbols, such as a=(a[1], . . . , a[d]), as a codeword vector of d symbols (a[1], . . . , a[d], b[1], . . . , b[a]), where each symbol has a normalized size of 1/d.
(50) For each i{1, . . . , }, we define an encoding function g.sub.i so that a parity symbol b[i] of the codeword vector is given by b[i]=g.sub.i(a).
(51) According to an embodiment of the present disclosure, for a given choice of (c, d, a), a time-invariant diagonally interleaved code for a message size of s=(d)/d)c is provided by interleaving codeword symbols produced by the component systematic block code C in a diagonal pattern and as described in the following two steps with further explanation in the Annex A1 which makes part of the present disclosure.
(52) In a first step, and according to an embodiment of the present disclosure, to facilitate code construction, the derived code can be represented by a table of symbols, with each cell in the table assigned one symbol of size 1/d. The table presented in and row i{1, . . . , d}. The unit-size packet transmitted at each time step t is composed of the d symbols x.sub.t[1], . . . , x.sub.t[d] in column t of the table. Rows {1, . . . , d} of the table are populated by information symbols, while rows {d+1, . . . , d} are populated by parity symbols.
(53) In a second step, and according to an embodiment of the present disclosure, each message k can be divided into (d)c sub-messages or information symbols denoted by M.sub.k[1], . . . , M.sub.k[(d)c], with each symbol having a size of s/[(d)c]=1/d. The information symbols corresponding to each message k are assigned evenly to the columns representing the first c time steps in coding window W.sub.k, such that
x.sub.t[i]=M.sub.q.sub.
for each i{1, . . . , d}. To obtain the parity symbols for column t, the component systematic block code C is applied to the information symbols on each diagonal, such that
x.sub.t[d+i]=g.sub.i((x.sub.ti(d)+l[l]).sub.l=1.sup.d)
for each i{1, . . . , }. Thus, the d symbols on each diagonal spanning across d consecutive time steps in the derived code constitute one codeword produced by C. Note that the information symbols for nonexistent messages (i.e., non-positive messages and messages after the actual final message) are assumed to be zeros so that all codeword symbols are well defined.
Three component systematic block codes (e.g. systematic block code C) are specified by Theorems 4, 5 and 6 in Section V-B of Annex A1 (which makes part in its entirety of the present disclosure) which describes a bursty erasure model. In the mentioned section, it is shown that diagonally interleaved codes using such component systematic block codes are asymptotically optimal under specific conditions (e.g. erasure burst lengths). A general construction that unifies these three block codes is summarized by the following steps, for a given choice of (c, d, ): 1) The component systematic block code C comprises d symbols. The first d symbols are information symbols, while the last symbols are parity symbols which can be non-degenerate or degenerate 2) Select the degenerate parity symbols by grouping the parity symbols into disjoint intervals of d symbols (if available), counting from the end of the block code. Degenerate parity symbols being uncoded copies of the information symbols, arranged in the same order, and non-degenerate parity symbols being parity symbols calculated from the information symbols 3) Set the remaining parity symbols as the non-degenerate parity symbols. Let be the number of non-degenerate parity symbols, where 0<d 4) Arrange the information symbols into rows of symbols, counting from the beginning of the block code. If there are fewer than symbols in the last row, then repeat them as many times as necessary until the row is filled 5) Arrange the non-degenerate parity symbols below the last row of information symbols. Set each non-degenerate parity symbol to be the bit-wise modulo-2 sum of the information symbols above it 6) The component systematic block code C is given by the d information symbols, followed by the non-degenerate parity symbols (if any), followed by the degenerate parity symbols (if any)
(54) A method for construction of the diagonally interleaved intersession codes, as provided in the various embodiments of the present disclosure and presented in the preceding paragraphs (e.g. first/second step) as well as in Annex A1 which makes part of the present disclosure, can be summarized by a construction flowchart set, comprising flowchart (400A) as depicted in
(55) Given the parameters (c, t: z) and as presented in the method described by flowcharts (400A) and (400B) of
(56) STEP 1: (Steps 410A-460A) Construction of the Component Systematic Block Code C Step 410A: The component systematic block code C comprises d symbols. The first dz symbols are information symbols, while the last z symbols are parity symbols which can be non-degenerate or degenerate Step 420A: Select the degenerate parity symbols by grouping parity symbols into disjoint intervals of dz symbols (if available), counting from the end of the block code. Degenerate parity symbols being uncoded copies of the information symbols, arranged in the same order Step 430A: Set the remaining parity symbols as the non-degenerate parity symbols. Let z be the number of non-degenerate parity symbols, where 0z<dz Step 440A: Arrange the information symbols into rows of z symbols, counting from the beginning of the block code. If there are fewer than z symbols in the last row, then repeat them as many times as necessary until the row is filled Step 450A: Arrange the z non-degenerate parity symbols below the last row of information symbols. Set each non-degenerate parity symbol to be the bit-wise modulo-2 sum of the information symbols above it Step 460A: The component systematic block code is given by the dz information symbols, followed by the z non-degenerate parity symbols (if any), followed by the zz degenerate parity symbols (if any)
(57) STEP 2: (Steps 410B-450B) Construction of the Diagonally Interleaved Code Step 410B: Consider a rectangular grid with d rows, where each column represents one encoded packet of normalized unit size. Each cell in the grid contains one symbol of normalized size 1/d. The top dz rows of the grid contain the message (information) symbols, while the bottom z rows contain the parity symbols Step 420B: Insert the c(dz) message symbols of message k, which is created at time step (k1)c+1, into the cells in the top dz rows of columns (k1)c+1, . . . , (k1)c+c. Zero padding or repeated symbols may be used if there are fewer than c(dz) message symbols Step 430B: Apply the component systematic block code from Step 1 to each diagonal on the grid, to generate the parity symbols in the bottom z rows Step 440B: Transmit each column of d symbols as a packet at the corresponding time step Step 450B: At the receiver, recover the erased message symbols by taking the bit-wise modulo-2 sum of appropriate codeword symbols on each diagonal.
Construction of Proportional Intra-Session Codes
(58) .sup.+, the data source generates a message, represented by random variable M.sub.i. If i1(mod c), the message M.sub.i is a high priority message with size s.sub.h, otherwise, M.sub.i is a low priority message with size s.sub.l. That is:
(59)
The random variables {M.sub.i} are independent. All high-priority messages are identically distributed, and all low priority messages are identically distributed. Furthermore, M.sub.i=0 for i0.
(60) Each message M.sub.i must be decoded no later than a delay of d time steps from its creation time. For example, a message M.sub.i created at time step i, is to be decoded by time step i+d1. In practice, delay can be a multiple of the length of a data set (such as GOP in MPEG), thus d0(mod c). Let W.sub.i be the coding window for message M.sub.i which can be defined as the interval of d time steps between its creation time and decoding deadline, such as:
W.sub.i{i, . . . ,i+d1}
(61) Since a message is available for coding only after its creation time and is not useful after its decoding deadline, for any message M.sub.i the associated coding window W.sub.i can be represented by: W.sub.i={i, . . . , jd, jd+1, . . . , i+d1: j=[i/d]+1}. According to an embodiment of the present disclosure and as further described in Appendix A2 which makes part of the present disclosure, the priority of a message M.sub.i can be defined by specifying the number of erasures z.sub.i it is required to tolerate, for example, it can be required that M.sub.i is recovered by its deadline under any erasure pattern in which the number of erased packets in the coding window W.sub.i is less than or equal to z.sub.i. For notational convenience, a corresponding fraction of received packets can be defined by:
(62)
(63) In the particular prioritized real-time system depicted in
(64)
where .sub.l.sub.h. From the pattern of high and low priority messages, we have
(65)
(66) As previously mentioned and further described in Annex A2 which makes part of the present disclosure, in an intra-session code, coding is allowed within a same message but not across different messages. In such a code, a link bandwidth or data packet space at each time step (e.g. t) is allocated among the different messages. Each unit-size packet can be divided into multiple sub-packets or blocks of possibly different sizes, each encoding a different message. An appropriate code (e.g., a maximum distance separable (MDS) code or a random linear code) can subsequently be applied to this allocation so that each message is decodable whenever the total amount of received data that encodes that message, or the total size of the corresponding blocks, is at least the message size s.
(67) The blocks that encode a given message M.sub.i are confined to the packets transmitted in the corresponding coding window W.sub.i (e.g. as previously defined). Such blocks cannot be created before the message creation time, and are useless after the message decoding deadline. Thus, to decode each message, the decoder needs to access only the packets received at the most recent d time steps. The decoder memory requirements for intra-session codes are therefore modest compared to an intersession code requiring older packets or previous messages for decoding.
(68) As illustrated in
(69) .sup.+ is determined by the priorities of the active messages. Let M.sub.i[t] denote the size of block for message M.sub.i at time step t. The size of the block allocated to each active message M.sub.i is in inverse proportion to its priority, such as:
(70)
(71) Other characteristics of the proposed novel family of proportional time-invariant intra-session codes are provided in the Annex A2 which makes part of the present disclosure.
(72) A method for the construction of the proportional time-invariant intra-session codes, as provided in the various embodiments of the present disclosure and presented in the preceding paragraphs as well as in Annex A2 which makes part of the present disclosure, can be summarized by a construction flowchart (15A0) as depicted in
s.sub.h.sub.l+(c1)s.sub.l.sub.hc.sub.h.sub.l
(73) Given the parameters defined in i)-iv) above and as presented in the construction method of flowchart (15A0) of {i, i+1, . . . , i+d1} for each message M.sub.i Step 15A3: Define the active messages A.sub.t at each time step t as A.sub.t
{M.sub.i: tW.sub.i} Step 15A4: Divide the packet space at each time step t according to the priority of the active messages, such as a block size allocated to message M.sub.i at time step t is:
(74)
(75) The person skilled in the art of information theory, communication theory and/or coding theory will know how to apply the mentioned techniques and computations presented above and in Annex A1 and Annex A2 which make part of the present disclosure, including generation of the various information/parity symbols, data packets and blocks, as well as encoding/decoding based on maximum distance separable (MDS) or random linear codes (e.g. Reed Solomon codes), to the disclosed methods (e.g. flowcharts). The skilled person may also find different sequences of applying the various code construction steps represented in flowcharts (300A, 400A/B, and 15A0), whether serially, in parallel and/or combination thereof, to obtain a similar result, and implement those using various hardware, software, firmware and/or combination thereof.
(76) As further described in the Annex A1 and Annex A2, the various novel time-invariant codes as presented in the previous sections are asymptotically optimal under various erasure models, but can be used under other erasure models as well, albeit not necessarily asymptotically optimal.
(77) For example, for window-based erasure models containing a limited number of erasures per coding window, per sliding window, and containing erasure bursts whose maximum length is sufficiently short or long and separated by intervals of at least a specified length, the novel time-invariant intra-session code presented in prior sections, namely the symmetric intra-session code, asymptotically achieves a maximum message size (e.g. bandwidth) among all codes that allow decoding under all admissible erasure patterns. Such novel symmetric intra-session code performs well under other erasure models as well. For example, in the case of an i.i.d. erasure model in which each transmitted packet is erased independently with the same probability, as further described in Annex A1, an upper bound on the decoding probability for any time-invariant code is provided, and it is shown that the gap between this bound and the performance of the proposed family of novel time-invariant intra-session codes as presented in the various embodiments of the present disclosure is small when the message size and packet erasure probability are small. In a simulation study as further described in Annex A1 which makes part of the present disclosure, these time-invariant intra-session codes performed well against a family of random time-invariant convolutional codes under a number of scenarios.
(78) As further described in Annex A1, which makes part of the present disclosure in its entirety, for a bursty erasure model, the novel time-invariant diagonally interleaved code derived from a specific component systematic block code and designed for particular burst erasure parameters, is asymptotically optimal over all codes. Construction of this novel code is provided in the prior sections of the present disclosure.
(79) According to yet another embodiment of the present disclosure and as further described in Annex A2 which makes part of the present disclosure, for the case of the window-based erasure model wherein the messages have a high or low priority, the novel time-invariant intra-session code presented in the prior sections of the present disclosure (and in Annex A2 which makes part of the present disclosure)), namely the proportional time-invariant intra-session code, asymptotically achieves a maximum message size (e.g. bandwidth) among all codes that allow decoding under all admissible erasure patterns. As previously mentioned, such code can also be used under other erasure models, such as for example the i.i.d. erasure model, although not necessarily optimal.
(80) With reference back to the real-time streaming systems presented in
(81) Furthermore, each of the source module and/or receive module of
(82) For any given hardware implementation of a source or receiver module, corresponding software/firmware may be used to generate all or portion of the encoding/decoding steps required by the specified code construction as some of the associated steps (e.g. flowcharts 300A, 400A/B, 15A0 and Annex A1/A2), such as one that are computational intensive, may be implemented using the target hardware itself or a dedicated hardware residing on an I/O port of the workstation.
(83) Once the source workstation (e.g. module) has accessed the information streams, whether read into a local memory first or while reading the information streams on the fly, the source workstation can encode the corresponding messages as per the provided encoding schemes and as described in prior paragraphs, the encoding scheme being suited for the communication link being used to send over the encoded messages. The encoding can be implemented in a combination of hardware, firmware and software, working in unison to generate the encoded messages. Once the receiver workstation (e.g. module) has received the encoded packets, it can also first buffer the encoded packets into a local memory and then perform the decoding of each message by reading the packets from the local memory, decoding being performed as per the provided flowcharts and as described in the previous paragraphs. Alternatively, the receiver workstation may decode the messages from the received packets and then store into local memory prior to decoding each message.
(84) The methods (e.g. code construction and associated flow charts) and systems (e.g. real-time streaming systems) described in the present disclosure may be implemented in hardware, software, firmware or combination thereof. Features described as modules (e.g. 110, 120) or components (e.g. 110, 120, 130) may be implemented together or separately using a combination of hardware, software and/or firmware. A software portion of the methods (e.g. flowcharts) of the present disclosure may comprise a computer-readable medium which comprises instructions (e.g. executable program) that, when executed, perform, at least in part, the described methods, such as construction in part or in entirety of a code according to the various embodiments of the present disclosure. The computer-readable medium may comprise, for example, a random access memory (RAM) and/or a read-only memory (ROM). The instructions may be executed by a processor (e.g., a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable logic array (FPGA) or a combination thereof which can be integrated within a single integrated circuit (IC).
(85)
(86) Such exemplary computer hardware as depicted by
(87) The examples set forth above and in Annex A1 and Annex A2 which make part of the present disclosure, are provided to give those of ordinary skill in the art a complete disclosure and description of how to make and use the embodiments of the coding for real-time streaming under packet erasures, and are not intended to limit the scope of what the inventors regard as their disclosure. Modifications of the above-described modes for carrying out the disclosure may be used by persons of skill in the information/coding/communication theory and processing, and are intended to be within the scope of the following claims. All patents and publications mentioned in the specification may be indicative of the levels of skill of those skilled in the art to which the disclosure pertains. All references cited in this disclosure and Annex A1 and Annex A2 which make part of the present disclosure are incorporated by reference to the same extent as if each reference had been incorporated by reference in its entirety individually.
(88) It is to be understood that the disclosure is not limited to particular methods or systems, which can, of course, vary. It is also to be understood that the terminology used herein is for the purpose of describing particular embodiments only, and is not intended to be limiting. As used in this specification and the appended claims, the singular forms a, an, and the include plural referents unless the content clearly dictates otherwise. The term plurality includes two or more referents unless the content clearly dictates otherwise. Unless defined otherwise, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which the disclosure pertains.
(89) A number of embodiments of the disclosure have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the present disclosure. Accordingly, other embodiments are within the scope of the following claims.