Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Flexible FEC: Encoding in RTP

Varun Singh
November 10, 2014

Flexible FEC: Encoding in RTP

Payload WG, IETF91, Honolulu

Varun Singh

November 10, 2014
Tweet

More Decks by Varun Singh

Other Decks in Technology

Transcript

  1. flexible-FEC Ali C Begen Varun Singh Mo Zanaty AVTCore, IETF

    91 draft-singh-payload-rtp-1d2d-parity-scheme-00
  2. Row FEC (1D) 1 2 3 7 8 9 4

    5 6 R1 R2 R3 ! 1 2 3 7 8 9 4 5 6 R1 R2 R3 ! !
  3. Column FEC (1D) 1 2 3 7 8 9 4

    5 6 C1 C2 C3 1 2 3 7 8 9 4 5 6 C1 C2 C3 ! ! ! ! ! ! !
  4. 2-D FEC 1 2 3 7 8 9 4 5

    6 C1 C2 C3 R1 R2 R3 ! ! ! ! 1 2 3 7 8 9 4 5 6 C1 C2 C3 R1 R2 R3 ! ! ! ! !
  5. RFC 6363: FEC Framework RTP Packets FEC Code FEC Module

    RTP (De)mux Transport Layer (UDP) IP Repair RTP Source RTP
  6. FEC payload              0  

                                       1                                      2                                      3              0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5  6  7  8  9  0  1            +-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+            |MSK|P|X|    CC      |M|  PT  recovery  |                        SN  base                        |            +-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+            |                                                    TS  recovery                                                    |            +-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+            |                length  recovery                |M  or  Mask[8-­‐15]|  N  or  Mask[0-­‐7]|            +-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+            |                                        Mask  [16-­‐47]  (optional)                                        |            +-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+            |                                                                                                                              |            +                                        Mask  [48-­‐111]  (optional)                                      +            |                                                                                                                              |            +-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+-­‐+    
  7. MSK values (1/2) •  00 à 16-bit mask •  01

    à 48-bit mask •  10 à 112-bit mask •  11 à variable length mask, see M and N values
  8. MSK values (2/2) •  M=0, N=0 à fixed values indicated

    in SDP •  M>0, N=0 à non-interleaved of M packets starting from SN_base –  FEC  =  SN,  SN+1,  SN+2,…,  SN+(M-­‐1),  SN+M.   •  M>0, N>0 à interleaved with M offset starting from SN_base in a group of N packets –  FEC  =  SN+(Mx0),  SN+(Mx1),…,  SN+(MxN).