623.712 – PR AUS RECHNER UND NETZARCHITEKTUR
SS 2003, CHRISTIAN TIMMERER

 

ÜBUNGSBLATT 1

 

 

Institut für Informationstechnologie, 20. März 2003

 

Parallele Programmierung

Einführung

Parallele Programmierung gewinnt in Zeiten in denen es an Ressourcen (CPU, Speicher, Bandbreite) mangelt immer mehr an Bedeutung. In diesem Praktikum soll unter anderem die parallele Programmierung mittels Threads und MPI praxisbezogen geübt werden. Um dies zu bewerkstelligen wurden die Ergebnisse einer am Institut für Informationstechnologie abgeschlossenen Diplomarbeit herangezogen und für diese Lehrveranstaltung entsprechend aufbereitet. Die Diplomarbeit beschäftigt sich mit qualitätsgesteuerter, temporaler Adaptierung von MPEG-4 Videos und trägt den Titel „Quality Controlled Temporal Video Adaptation (QCTVA)“.

Adaption wird immer häufiger zu einem wichtigen Bestandteil für die Verwaltung von Ressourcen und Medien in verteilten Multimediasystemen. Eine reibungslose Übertragung von Multimediadaten Über ein heterogenes Netzwerk wie das Internet ist beinahe unmöglich. Deswegen müssen Multimediaströme adaptiert werden, um einen angemessenen Transport zu gewährleisten. Temporale Skalierung ist eine der einfachsten und schnellsten Adaptionstechniken. Heutige Ansätze werfen zufällig einzelne Frames in einem Video weg, ohne auf die Konsequenzen zu achten. Dies führt in den meisten Fällen zu einer sehr schlechten Videoqualität. Diese Arbeit stellt einen Ansatz vor, welcher eine Analyse des Videostromes durchführt, mit dem Ziel die qualitativ beste temporale Skalierbarkeit zu erlangen. Dafür wird für alle möglichen “Wegwerf-Szenarien” ein Qualitätswert berechnet. Basierend auf den Resultaten der Analyse, können viele bekannte Adaptionstechniken wesentlich verbessert werden.

Übungsumgebung und APIs

Auf der Webseite (http://www-itec.uni-klu.ac.at/~timse/lehre/ss2003/rnarch/) befindet sich ein Paket bestehend aus Quelldateien, Dokumentation und Test-Streams, welches als Grundlage für die ersten beiden Projekte (Parallele Programmierung mit Threads und MPI) dient. Es beinhaltet u.a. C++-Klassen (API) zum Einlesen von Videoströmen und PSNR-Berechnung. Abbildung 1 zeigt den grundsätzlichen Aufbau der qualitätsgesteuerten, temporalen Adaptierung, d.h. die Berechnung der PSNR und den sogenannten BFE-ModificationPath.

Abbildung 1 Qualitätsgesteuerte temporale Adaptierung

Zum Kompilieren der API gehen Sie bitte wie folgt vor:

·         Voraussetzungen: Qt 3.0.x und Qt 3.0.x devel

·         Laden Sie sich das Paket qctva4lv.tbz2 herunter und entpacken Sie es mittels tar xvfj qctva4lv.tbz2.

·         Danach wechseln sie in das src-Verzeichnis des Paketes und kompilieren sie die API mittels ./configure und make. ACHTUNG: Installieren sie das Paket (d.h. make install) nicht!

 

Im src-Verzeichnis finden Sie nun die ausführbare Datei qctva4lv. Diese Datei ist der Ausgangspunkt für Erweiterungen, welche im Rahmen dieses Praktikums durchgeführt und geübt werden.

Quality Controlled Temporal Video Adaptation

 

  Usage: ./qctva4lv yuv org mpg width height fpg

 

        yuv     lossy YUV stream

        org     original YUV stream

        mpg     MPEG-4 encoded origial YUV stream

        width   frame width

        height  frame heigth

        fpg     frames per GOP

 

Verzeichnisstruktur:

Zur Durchführung des Praktikums steht Ihnen eine Vier-Prozessor-Maschine mit Pentium III 550MHz XEON Prozessoren mit jeweils 1MB 2nd-Level Cache zur Verfügung – sgi-itec.uni-klu.ac.at. Username und Passwort erhalten sie während der Lehrveranstaltung. Arbeiten ist remote via ssh von zu Hause bzw. von einem ZID-PC aus möglich.

Aufgabenstellung Übungsblatt 1

  1. Einlesen in das Themengebiet und vertraut machen mit der API.
  2. Aufbau des BFE-Pfades pro GOP auf konventionelle Art und Weise, d.h. sequentiell (keine parallele Programmierung) – expandSeq()-Methode.
  3. Ausgabe: Liste aller BFE-Modifikationen + PSNR-Wert pro GOP – writeBFEInfo().

 

Termine:

 

Fragen: