In this chapter, we have a lok at some Internet Multimedia applications. We have looked at a number of the building blocks, and just seen that there are some principles of design for Internet applications that have emerged that are very powerful:
The notion that an application can best select the ``element of synchronisation'', and that this is then suitable as the Protocol Data Unit, or packet size to be used is pursuasive. It turns out that for multimedia applications and especially for multicast, this greatly simplifies application design.
This is more a hint to implementors than the previous principle which addresses system design. Layers of protocol software are often slowed down by the very layering that makes their design simple. However, ILP is basically the same idea as that which compiler writers call ``in-lining''. Instead of a hierarchy of layers mapping onto an implementation model of a sequence of procedure or function calls, one can observe that much protocol processing is repetitive sequences carried out over a PDU/packet which can be rolled together. Together with ALF (which is a pre-requisite for ILP to deploy sensibly), this can be applied, particularly to multimedia units of data sent as RTP/UDP/IP encapsulations.
We do not need to go into the design of audio and video software here. Vic, Vat and Rat are all well documented elsewhere, and the algorithms for compression, playout adaptation and mixing have already nbeen described in earlier chapters.
Here we concentrate on the Shared Applications and the LBNL Whiteboard, wb, and the UCL Network Text Editor, nte. We take a close look in particular at the Distributed Repair Algorithms.