Introduce per group slice sizes.
authorAndre Noll <maan@systemlinux.org>
Sat, 7 Aug 2010 16:36:45 +0000 (18:36 +0200)
committerAndre Noll <maan@systemlinux.org>
Sun, 31 Oct 2010 11:06:58 +0000 (12:06 +0100)
commitfd62cf6f3c17ec9f504d3a05be4fd48f969dcb01
tree2f09a801f063db3386fe175474a4555b7fbca0b1
parentedeb499676e6d042ef1a913914a9fcb45a8cadde
Introduce per group slice sizes.

While the FEC parameters k and n are fixed, the size of a FEC slice may
be different for each FEC group. This patch exploits this freedom and
implements variable sized FEC slices for the DCCP and UDP transports.

Two new functions, compute_group_size() and compute_slice_size(),
are introduced which try to compute an optimal size for the entire
FEC group and the slice size of the group respectively.

The group size is chosen such that the group duration is approximately
150ms. Larger values cause too much latency while smaller groups use
the available bandwidth ineffectively. Several contraints such as
the maximal packet size are taken into account when computing the
group size.

Once the group size is known, a suitable slice size is chosen. It
should be as small as possible to avoid unnecessary FEC calculations
but must be large enough to guarantee that the k data slices suffice
to encode the header (if needed) and the data chunk(s).
vss.c