Entwurf und Implementierung eines Reflectors in der komssys-Streaming-Umgebung Motivation: Bei Media-on-Demand gibt es häufig den Fall, dass mehrere Benutzer sich dieselbe Medienpräsentation gleichzeitig ansehen möchten. Für RTSP-Streaming lässt sich dies unter Verwendung von IP-Multicast auch leicht implementieren. Allerdings ist Multicast nicht überall implementiert. Für Clients, die Multicast nicht nutzen können, kann daher ein Reflector als Zwischensystem die Medienströme nach Unicast umsetzen. Beim QuickTime-Streaming-System von Apple wird dies beispielweise angewandt. Am IBR werden zur Zeit zwei Projekte mit der komssys-Streaming-Umgebung durchgeführt. In dieser Umgebung wird der Datenpfad durch eine Aneinanderreihung von Stream-Handlern implementiert. Stream-Handler können bspw. Pufferfunktionen oder elementare Manipulationsfunktionen bereitstellen. Ein so genannter Graph-Manager erlaubt die Festlegung eines Datenpfades durch Zusammenfügen der Stream-Handler. Aufgabe: Es soll ein Proxy als Reflector für die komssys-Streaming-Umgebung implementiert werden, der es Clients erlaubt, sich dynamisch zu einer Medienpräsentation hinzuzuschalten bzw. diese wieder zu verlassen. Dabei sind folgende Teilaufgaben zu erfüllen: - Entwurf und Implementierung eines Stream-Handlers, der für eine beliebige, dynamisch wechselnde Anzahl von Clients die eintreffenden Daten kopiert. - Entwurf und Implementierung eines Graph-Managers, der für alle an einer "Multicast"-Sitzung teilnehmenden Clients den passenden Datenpfad aufsetzt. Bei später hinzutretenden Clients müssen hier nur Teilpfade in den Datenpfad eingesetzt werden. - Entwurf und Implementierung der entsprechenden RTSP-Signalisierung für eine Reflected-Multicast-Sitzung in Client, Proxy und Server. - Entwurf und Implementierung einer Schnittstelle von RTSP-Signalisierung zu RTP-Datenübertragung. In dieser Schnittstelle muss für alle Clients der passende Graph-Manager gefunden werden. Umgebung: Bei dieser Arbeit kann auf die bereits (in C++) implementierte Umgebung komssys zurückgegriffen werden. Es sind einige Beispiele für Graph-Manager und Stream-Handler vorhanden, an denen sich orientiert werden kann. Voraussetzung: Gute C++-Programmierkenntnisse Bereitschaft, sich in ein bestehendes Projekt einzuarbeiten Interesse am Thema Multimedia-Streaming Motivation, Engagement, selbstständiges Arbeiten