Ulpfecreading rfc5109

========================================================

traditional FEC schemes


such as Reed-Solomon, and Hamming codes.

bandwidth utilization issue

unequal error protection


  • protection levels
    • lower levels – greater protection, smaller group sizes
    • higher levels – inverse
  • different protection level for different data importance.
    the more important parts of the data are always at the beginning of the data packet.
  • media payload – raw user data
  • media header – rtp header
  • media packet – rtp header + raw user data
  • fec packet – take media packets as input
    • output: media packets
    • output: fec packets for error correction
  • fec header – header info in fec packet
  • fec level header – header info in fec packet for each level
  • fec payload – payload of fec packet. may be divided into multiple levels

  • relationship between fec packet and media packet
fec packet(s) media packet(s)
1 N (N >= 1)
N (N >= 1) 1

basic operation


  • XOR
  • offset mask m(k)
  • the amount of data is protected at level k – L(k)

parity codes


for example, protection on every two data blocks

a        b        c        d               <-- media stream
           f(a,b)            f(c,d)        <-- FEC stream

why XOR?

  • effectiveness
  • simplicity

in protocol design and implementation.

important! for implementation in embedded devices.

Uneven Level Protection (ULP)


  • trade-off between the bandwidth and the protection strength.
    • different importance with different level of protection.

transfer via separated stream


  • origin meida stream is not affected. clients without fec can work well.
  • tracking the amount of fec.

issues

  • separated stream?
  • redundant coding?