Project MurX
The software that currently is (and in the future will be) made
available here is the result of my research for my PHD thesis.
The goal of the research was to implement a network-transparent
multimedia system based on the X Window System. The code
will be released in a piecemeal fashion as I am still busily removing
embarassments.
A working prototype of the system was already presented at
CeBIT exhibition 2007.
Why?
- ssh into a remote box
- fire up vlc (or whatever else
may be your favorite media player)
- watch in amazement as the network utilization skyrockets,
the video is jerky and audio comes out of the completely wrong
speakers (and is out of sync with your video, not that it would
matter anymore...)
- do this for half an hour and wait for a lynching mob of coworkers,
led by your network administrator, to form at your office door
Software components to address the problem
Three X extensions:
- TIME: allow X clients to send requests to the X server that
are not executed immediately but deferred to a defined point in time
(actually an interval)
- AUDIO: the name says it; audio playback provides timing information
which clients can use to schedule operations
- COMPRESS: allow transmission of compressed audio and video frames;
video frames are available as Pictures through the RENDER extension
for further compositing, audio data can be further processed through
the functions of the AUDIO extension
The AUDIO and TIME extension have been rolled into a single
module that is available here.
On top of these low-level building blocks the main part
of the architecture consists of:
- a media processing library that can defer media processing to
the X server (or alternatively perform in the client)
- a backend for the cairo
graphics processing library (to allow compositing of video frames)
- bridges to the gtk and
Qt user
interface toolkit libraries