  We consider three types of application layer coding for streaming over lossy
links: random linear coding, systematic random linear coding, and structured
coding. The file being streamed is divided into sub-blocks (generations). Code
symbols are formed by combining data belonging to the same generation, and
transmitted in a round-robin fashion. We compare the schemes based on delivery
packet count, net throughput, and energy consumption for a range of generation
sizes. We determine these performance measures both analytically and in an
experimental configuration. We find our analytical predictions to match the
experimental results. We show that coding at the application layer brings about
a significant increase in net data throughput, and thereby reduction in energy
consumption due to reduced communication time. On the other hand, on devices
with constrained computing resources, heavy coding operations cause packet
drops in higher layers and negatively affect the net throughput. We find from
our experimental results that low-rate MDS codes are best for small generation
sizes, whereas systematic random linear coding has the best net throughput and
lowest energy consumption for larger generation sizes due to its low decoding
complexity.
