Hi Cullen,
Thanks for the comments. I would like to have a small clarification
on one
of the issues you raised. In your email:
I am unclear on what level of reconstruction is provided or what we
are tying to do with the multiple levels. For example, take the
example in figure 5. Here 8 payloads are sent and 7 payloads worth of
parity bits are sent so we are sending nearly as much FEC data as
original data and introducing significant decode latency. Yet if
payload 0 and 1 are lost, it does not seem like they can be
reconstructed. I hope I am wrong here - it seems like with this
amount of bits allocated to FEC we should be apply to loose any 3
packets and still recover all the data. Please help me understand.
Can both 0 and 1 be recovered?
Here is Figure 5 from the draft:
Payload Packet # | FEC packet which protects at level
| 0 1 2
---------------------+---------------------------------------
0 | 0 1 3
1 | 0 1 3
2 | 1 1 3
3 | 1 1 3
4 | 2 3 3
5 | 2 3 3
6 | 3 3 3
7 | 3 3 3
Figure 5: An example of protection combination
The detail is explained in the paragraphs following the figure in
the draft.
The scenario described is having 8 payload packets sent (as you
mentioned).
However, there are only 4 FEC packets (not 7) protecting these 8
payload
packets. Further more, the overhead is not 4/8 but something smaller
(depending on settings as explained below).
For simplicity, let's assume all the payload packets are of the
same size.
Then the above scenario can also be described with the following
diagram
similar to those used in the example section (P1 refers to payload
#1, F1
refers to FEC #1, and so on):
P0: #############################################################
P1: #############################################################
F0: 00000000
P2: #############################################################
P3: #############################################################
F1: 00000000111111111111111
P4: #############################################################
P5: #############################################################
F2: 00000000
P6: #############################################################
P7: #############################################################
F3: 0000000011111111111111122222222222222222222222222222222222222
The 0's are the protection level 0, 1's for level 1, and 2's for
level 2.
The overhead depends on the settings and packet sizes. For example,
if all
payload packets are the same length, and level 0 is 15% of the overall
length, the level 1 is 25% of the overall length, then the FEC to
payload
ratio is 1.7:8, or an overhead of 17.5%.
Secondly, you are right that if both P0 and P1 are lost, they can
not be
recovered. That is 2 / 9.7 (or 20.7%) data lost. If the lost
packets are P0
and P2 instead, both of these can be recovered to level 0, or 15%
recovery
of the lost data in this case. If the lost packets are P0 and P4
instead,
then both of the lost packets can be recovered to level 1, or 40%
recovery
of the lost data in this case. This can be useful for the payload
where the
partial data can be used to reconstruct and conceal for most of the
less
important data that is un-recovered.
Adam