Packet-Level Forward Error Correction in Video Transmission Matteo Mazzotti, Enrico Paolini, Marco Chiani, Davide Dardari, and Andrea Giorgetti University of Bologna Wireless Communications Laboratory (WiLab) Department of Electronics, Computer Sciences and Systems (DEIS)
Summary The FP7 OPTIMIX Project Packet-Level Codes at RTP/Transport Layer Reed Solomon-based Forward Error Correction at RTP LDPC-based packet erasure coding at UDP Performance comparison Performance improvements: nonbinary LDPC codes Conclusions
FP7 OPTIMIX Project (2008-2011) OPTIMIX aims at studying innovative solutions enabling enhanced video streaming in point to point and point to multi-point contexts for an IP based wireless heterogeneous system, based on cross layer adaptation of the whole transmission chain Final goal: increase the quality of experience (QoE) for the end user in point to point and point to multi-point multimedia transmission contexts
FP7 OPTIMIX Project (2008-2011) OPTIMIX aims at studying innovative solutions enabling enhanced video streaming in point to point and point to multi-point contexts for an IP based wireless heterogeneous system, based on cross layer adaptation of the whole transmission chain Final goal: increase the quality of experience (QoE) for the end user in point to point and point to multi-point multimedia transmission contexts Considered scenario:
FP7 OPTIMIX Project (2008-2011) Project evaluation tools: Real test-bed (including only a subset of proposed algorithms) Complete software simulator (developed within OMNeT++ framework)
FP7 OPTIMIX Project (2008-2011) Project evaluation tools: Real test-bed (including only a subset of proposed algorithms) Complete software simulator (developed within OMNeT++ framework)
FP7 OPTIMIX Project (2008-2011) Project evaluation tools: Real test-bed (including only a subset of proposed algorithms) Complete software simulator (developed within OMNeT++ framework)
Packet-Level Codes at RTP/Transport Layer Packet Erasure Correcting Codes: basic idea 1. A set of video data packets are provided by the application layer (source packets) 2. The packet-level encoder encodes the information packets generating a set of parity packets (repair packets) 3. At the base station, all the packets are protected by PHY layer codes and transmitted 4. At the receiver, PHY layer FEC takes place. Unrecoverable packets (e.g., CRC check) are marked as corrupted 5. The packet level decoder can work on a virtual erasure channel: packets are either lost (if corrupted) or correctly received. 1 2......... Packet-level encoder 3 PHY TX Source packets Source packets Repair packets Packet Erasure Channel Channel 4 Packet-level decoder...... PHY RX 5
Packet-Level Codes at RTP/Transport Layer Packet Erasure Correcting Codes: encoding 1. Fill an encoding table (source block, SB) with the source packets row-wise. Each row (symbol) is T bytes long. After insertion, each source packet is immediately transmitted (no additional delay). 2. The encoding process starts when either the systematic part of the SB (k rows) is completely filled or a maximum tolerable delay has been reached. 1 symbol = T bytes Source symbols Still empty Source Block
Packet-Level Codes at RTP/Transport Layer Packet Erasure Correcting Codes: encoding 1. Fill an encoding table (source block, SB) with the source packets row-wise. Each row (symbol) is T bytes long. After insertion, each source packet is immediately transmitted (no additional delay). 2. The encoding process starts when either the systematic part of the SB (k rows) is completely filled or a maximum tolerable delay has been reached. 3. The encoding proceeds columnwise, until all columns of the SB have been processed. 4. Generate the repair symbols (m=n-k rows) and transmit them in the payload of the repair packets. 1 symbol = T bytes Source symbols Source Block
Packet-Level Codes at RTP/Transport Layer Packet Erasure Correcting Codes: encoding 1. Fill an encoding table (source block, SB) with the source packets row-wise. Each row (symbol) is T bytes long. After insertion, each source packet is immediately transmitted (no additional delay). 2. The encoding process starts when either the systematic part of the SB (k rows) is completely filled or a maximum tolerable delay has been reached. 3. The encoding proceeds columnwise, until all columns of the SB have been processed. 4. Generate the repair symbols (m=n-k rows) and transmit them in the payload of the repair packets. 1 symbol = T bytes Source symbols Source Block
Packet-Level Codes at RTP/Transport Layer Packet Erasure Correcting Codes: encoding 1. Fill an encoding table (source block, SB) with the source packets row-wise. Each row (symbol) is T bytes long. After insertion, each source packet is immediately transmitted (no additional delay). 2. The encoding process starts when either the systematic part of the SB (k rows) is completely filled or a maximum tolerable delay has been reached. 3. The encoding proceeds columnwise, until all columns of the SB have been processed. 4. Generate the repair symbols (m=n-k rows) and transmit them in the payload of the repair packets. 1 symbol = T bytes Source symbols Source Block
Packet-Level Codes at RTP/Transport Layer Packet Erasure Correcting Codes: encoding 1. Fill an encoding table (source block, SB) with the source packets row-wise. Each row (symbol) is T bytes long. After insertion, each source packet is immediately transmitted (no additional delay). 2. The encoding process starts when either the systematic part of the SB (k rows) is completely filled or a maximum tolerable delay has been reached. 3. The encoding proceeds columnwise, until all columns of the SB have been processed. 4. Generate the repair symbols (m=n-k rows) and transmit them in the payload of the repair packets. 1 symbol = T bytes Source symbols Repair symbols Source Block
Packet-Level Codes at RTP/Transport Layer Packet Erasure Correcting Codes: decoding 1 symbol = T bytes RX source symbols Missing symbols 1. Fill a decoding table (decoding source block) with the received source and parity packets, row-wise. 2. The decoding process starts when either a maximum tolerable delay has been reached or the first packet of the next SB has been received. RX repair symbols Source Block
Packet-Level Codes at RTP/Transport Layer Packet Erasure Correcting Codes: decoding 1 symbol = T bytes RX source symbols Missing symbols RX repair symbols 1. Fill a decoding table (decoding source block) with the received source and parity packets, row-wise. 2. The decoding process starts when either a maximum tolerable delay has been reached or the first packet of the next SB has been received. 3. The decoding proceeds column-wise, until all columns of the SB have been processed. 4. Recover the missing symbols and, possibly recover the biterrors in the corrupted packets. Source Block
Packet-Level Codes at RTP/Transport Layer Packet Erasure Correcting Codes: decoding 1 symbol = T bytes RX source symbols Missing symbols RX repair symbols 1. Fill a decoding table (decoding source block) with the received source and parity packets, row-wise. 2. The decoding process starts when either a maximum tolerable delay has been reached or the first packet of the next SB has been received. 3. The decoding proceeds column-wise, until all columns of the SB have been processed. 4. Recover the missing symbols and, possibly recover the biterrors in the corrupted packets. Source Block
Packet-Level Codes at RTP/Transport Layer Packet Erasure Correcting Codes: decoding 1 symbol = T bytes RX source symbols Missing symbols RX repair symbols 1. Fill a decoding table (decoding source block) with the received source and parity packets, row-wise. 2. The decoding process starts when either a maximum tolerable delay has been reached or the first packet of the next SB has been received. 3. The decoding proceeds column-wise, until all columns of the SB have been processed. 4. Recover the missing symbols and, possibly recover the biterrors in the corrupted packets. Source Block
Packet-Level Codes at RTP/Transport Layer Packet Erasure Correcting Codes: decoding 1 symbol = T bytes RX source symbols Recovered symbols RX repair symbols 1. Fill a decoding table (decoding source block) with the received source and parity packets, row-wise. 2. The decoding process starts when either a maximum tolerable delay has been reached or the first packet of the next SB has been received. 3. The decoding proceeds column-wise, until all columns of the SB have been processed. 4. Recover the missing symbols and, possibly recover the biterrors in the corrupted packets. Source Block
RS Codes at RTP layer Reed-Solomon (RS) codes at the RTP layer [VTC11] Source Block structure: a single RTP source packet per row row length T set to the maximum RTP packet size (S max ) plus 2 additional bytes indicating the packet size (S) packet size S needed at the receiver for recovery in case of losses S virtually inserted in the matrix (in RTP source packets) not really transmitted to the receiver [VTC11] M.Mazzotti, E.Paolini, M.Chiani, R.Fracchia, B. Gadat, and C.Bergeron, Analysis of packet-level forward error correction for video transmission, in Proc. 2011 IEEE Vehicular Technology Conf. (VTC Spring), Budapest, May 2011.
RS Codes at RTP layer Source packets: original RTP source packets Repair packets: RTP packets, whose payload is a single repair symbol new RTP payload type (e.g. 99) Extra Header (EH) field: Sequence number (SBN), 2 bytes Number of systematic rows k, 1 byte EH control field, 1 byte
RS Codes at RTP layer Encoding: k (number of source packets in the SB) is a system parameter in order not to split a NAL into different SBs, k =k+k (with K 0) source packets are inserted in the SB the target k and n are obtained from a low code-rate RS code, e.g. RS(255,128), through puncturing and shortening Decoding: packet loss recovery and bit error correction with a RS(n RS,k RS ) any combination of E errors and L erasures can be recovered, as long as 2E+L n RS -k RS
LDPC-based packet erasure coding at UDP Low-Density Parity Check (LDPC) codes applied at the UDP/UDPLite transport layer [VTC11] Source Block structure (before encoding): multiple rows per each RTP source packet row length of T bytes additional description fields (not transmitted) UDP flow ID (1B) packet length (2B) [VTC11] M.Mazzotti, E.Paolini, M.Chiani, R.Fracchia, B. Gadat, and C.Bergeron, Analysis of packet-level forward error correction for video transmission, in Proc. 2011 IEEE Vehicular Technology Conf. (VTC Spring), Budapest, May 2011.
LDPC-based packet erasure coding at UDP Source packets: UDP/UDPLite packets, whose payload is an RTP packet Source Payload ID (4B): source block number (SBN), 2B encoding symbol ID (ESI), 2B
LDPC-based packet erasure coding at UDP Repair packets: UDP/UDPLite packets, whose payload is several repair symbols Repair Payload ID (7B): source block number (SBN), 2B encoding symbol ID (ESI), 2B number or used systematic rows (k), 2B code-rate ID, 1B
LDPC-based packet erasure coding at UDP Encoding: based on a LDPC(n LDPC, k LDPC ) mother code target n and k are achieved by expurgating and puncturing Encoding steps: E1: pseudo-random interleaving of the systematic part of the SB (first k LDPC rows) E2: generation of the n LDPC -k LDPC repair symbols E3: pseudo-random interleaving of the redundant part of the SB (last n LDPC -k LDPC rows) Decoding: packet loss recovery, through iterative or maximum likelihood (ML) decoding Decoding steps: D1: pseudo-random interleaving of the systematic part of the SB (first k LDPC rows) D2: deinterleaving of the redundant part of the SB (last n LDPC -k LDPC rows) D3: iterative or ML LDPC erasure decoding D4: deinterleaving of the systematic part of the SB
Performance comparison OPTIMIX simulator H.264 video CIF 30fps 840 kbps Scenario 1 only packet losses across the IPv6 network Scenario 2 packet losses across the IPv6 network bit errors in the packet payload due to a wireless link (IEEE 802.11g) with E s /N 0 =28 db
Performance comparison SB systematic size: ~20kB Scenario 1 Results averaged over 20 simulation runs per point Performance: RS and LDPC codes have similar performance with R c =2/3 with high Ploss values, LDPC codes with Rc=1/2 perform better than RS codes
Performance comparison Scenario 2 SB systematic size: ~20kB Results averaged over 20 simulation runs per point Performance: with low Ploss values RS codes perform better, due to bit error correction with high Ploss values, LDPC codes codes perform better, due to longer codewords
Nonbinary LDPC codes for erasure channels A nonbinary LDPC code is characterized by a sparse parity-check matrix H whose elements belong to some finite field F q Usually q=2 p and the 8T bits composing a symbol are regarded as 8T/p nonbinary symbols in F q ML decoding consists in solving a linear system in F q, via inversion of the (n LDPC -k LDPC ) x e matrix composed of the columns of H corresponding to the e missing simbols. A decoding failure happens if the rank of this (n LDPC -k LDPC ) x e matrix is smaller than e The probability of decoding failure can be simply decreased increasing the finite field order, even for the same matrix H, at the expense of a little increase in complexity This techniques has been successfully adopted for both LDPC and MBMS Raptor codes
Nonbinary LDPC codes for erasure channels The figure illustrates the performance of two short binary MBMS Raptor codes and the performance of their nonbinary counterparts constructed on F 4 [LPC10] Similar results hold also for LDPC codes The decoding failure rate is expressed as a function of the overhead ov, i.e. the number of equations in excess respect to the number of unknowns in the linear system to be solved [LPC10] G. Liva, E. Paolini and M. Chiani, Performance versus overhead for Fountain codes over F q, IEEE Communications Letters, vol. 14, no. 2, pp. 178 180, Feb. 2010.
Conclusions We have described two packet level coding solutions based on RS and LDPC codes, operating at RTP and UDP/UDPLite layer respectively. We have compared their performance in terms of PSNR in case of H.264/AVC video transmissions, based on the simulation framework developed within the FP7 OPTIMIX project. At low packet loss rates, the correction capabilities of the RS-based solution provide some advantages over the LDPC codes. Increasing the erasure rate, the longer LDPC codewords determines better video qualities. Significant performance improvements can be obtained using nonbinary LDPC codes.
Thank you.