Final-year project proposal for University of Plymouth BSc (hons.) Computing, 2009-2010.
"Network-distributed media player"
My initial plan was to use XMPP as the protocol; however, I will be evaluating several protocols before implementing.

Key:
- red: logical connections
- black: actual flow of data
- blue: hardware usage
- green: peer-to-peer connection
Users interact with the Client (which may be the same program as the Player, but for simplicity will be assumed to be separate). User commands are sent to the Controller, which passes appropriate commands to each service.
For example:
- User wishes to listen to Neil Young’s "Heart Of Gold", so selects it in his/her client.
- Client sends command to Controller play "Neil Young / Heart Of Gold".
- Controller sends command to Library send "Neil Young / Heart Of Gold" to Decoder.
- Controller sends command to Decoder accept data connection. Library and Decoder establish an out-of-band data connection.
- Controller sends command to Player accept data connection. Decoder and Player establish an out-of-band data connection.
- Player sends incoming audio data to audio hardware.
- User hears Neil Young’s "Heart Of Gold".
Add a comment