studie

Werbung
GMD
STUDIE
K ONZEPTION
UND R EALISIERUNG EINER
MULTIMEDIALEN S CHNITTSTELLE AUF
B ASIS EINES OBJEKTRELATIONALEN
DBMS
Autor
Martin Mierse
Dipl. Inf. Matthias Malsy
Dipl. Inf. Matthias Hemmje
GMD – Forschungszentrum Informationstechnik GmbH
Institut für integrierte Publikations- und Informationssysteme
Copyright  1998
2
KURZBESCHREIBUNG
Bei der Bearbeitung von Videos durch digitalen Videoschnitt und deren Analyse
beispielsweise durch Schnitterkennung bzw. die Erkennung von Szenenwechseln ist
häufig der Zugriff auf Teile (Segmente) eines Videos erforderlich. Die dabei notwendige
Extraktion dieser Segmente aus dem gesamten Video ist keineswegs immer trivial,
besonders im Fall von komprimierten Videos. Häufig muß dazu das Datenmaterial
vorher aufbereitet und die interne Struktur des Videos analysiert werden. Da das dabei
notwendige Parsen recht rechenzeitintensiv ist, wäre es wünschenswert, es nur einmal
durchzuführen und das Ergebnis persistent zu speichern. Um die Vorteile von
Datenbankmanagementsystemen zu nutzen, bietet sich eine Speicherung in einem
solchen an.
Der Zugriff auf die Struktur von Videos ist außerdem für eine Reihe weiterer
Anwendungen erforderlich. So entstand die Idee, ein System zu entwerfen, das Zugriff,
Management und Retrieval von internen Strukturinformationen von Videos bietet.
Ziel der Arbeit war es, das Video Foundation DataBlade des Informix Dynamic Servers
um MPEG 1/2-Verwaltungsfunktionalitäten zu erweitern. Hierzu wurden zunächst
verschiedene Benutzungsanforderungen unter ORDBMS-Gesichtspunkten untersucht
und bewertet. Eine davon diente als Grundlage für die Konzeption eines effizienten
Speichermodells.
Schlagworte: MPEG, objektrelationale DBMS, Video Archive
3
ABSTRACT
Post-processing of digital video like video editing or video analysis (e.g. for cut
detection) requires frequent access on parts resp. segments of videos. Especially in the
case of compressed video stream data, the extraction is not trivial. Most often, the video
data itself must be prepared and internal structures must be analyzed which is done by a
so called ‘parser’. Due to the fact, that parsing large amounts of video data is a timely
expensive process, the demand for persistent storage and reuse of parser results is
obvious. The functional properties of data base management systems (DBMS) qualifies
these systems for the persistent storage of parsed meta data.
Since the access on internal video structures is useful for further applications the idea
arise for developing a system for efficient management and retrieval of structural
information of video streams.
In practice, the Video Foundation DataBlade of the Informix Dynamic Server was
extended by MPEG 1+2 support functions. Different user requirements have been
examined under the perspective of ORDBMS. One scenario acts as a base for the
storage model.
Keywords: MPEG, object-relational DBMS, Video Archives
4
INHALT
0 Einleitung ............................................................................................................................ 9
0.1 Motivation.................................................................................................................... 9
0.2 Überblick....................................................................................................................10
1 Stand der Technik ............................................................................................................13
1.1 Datenbanken .............................................................................................................13
1.1.1 Grundlegende Technologien ...........................................................................13
1.1.2 Datenbankmodelle ............................................................................................16
1.1.2.1 Relationale Datenbanken ..........................................................................16
1.1.2.2 Objektorientierte Datenbanken ...............................................................17
1.1.2.3 Objektrelationale Datenbanken ...............................................................18
1.1.3 Informix Dynamic Server.................................................................................21
1.1.3.1 Architektur ..................................................................................................22
1.1.3.2 DataBlade-Technologie.............................................................................25
1.2 Digitales Video ..........................................................................................................25
1.2.1 Formate für digitales Video .............................................................................26
1.2.2 Komprimierungsstandards...............................................................................26
1.2.2.1 DVI ..............................................................................................................28
1.2.2.2 Motion-JPEG .............................................................................................28
1.2.2.3 MPEG 1 ......................................................................................................29
1.1.2.4 MPEG 2 ......................................................................................................32
1.3 Video und Datenbanken..........................................................................................33
1.3.1 Multimediale Datenbanken ..............................................................................33
1.3.2 Das Video Foundation-DataBlade..................................................................34
2 Anforderungsanalyse .......................................................................................................39
2.1 Benutzungsszenarios ................................................................................................39
2.1.1 Verwaltung von MPEG-Videos......................................................................39
2.1.2 Zugriff auf Segmente eines MPEG-Videos...................................................39
2.1.2.1 Digitaler Videoschnitt................................................................................39
2.1.3 Zugriff auf strukturelle Metadaten eines MPEG-Videos ............................40
2.1.3.1 Erkennen von Szenenwechseln................................................................40
2.1.3.2 Objekterkennung........................................................................................40
2.1.3.3 Watermarking..............................................................................................40
2.1.3.4 Adaption ......................................................................................................41
2.1.3.5 Panoramabilder...........................................................................................42
2.1.3.6 Evaluierung von Encodern.......................................................................45
3 Entwurf..............................................................................................................................47
3.1 Entwurfsansatz..........................................................................................................47
5
3.1.1 Prinzipien............................................................................................................47
3.1.2 Grundsätzliche Überlegungen .........................................................................48
3.2 Spezifikation der SQL-Schnittstelle .......................................................................48
3.2.1 Erste Alternative: Abbildung der MPEG-Hierarchie ..................................49
3.2.1.1 Datentypen und Tabellen..........................................................................49
3.2.1.2 Funktionen ..................................................................................................50
3.2.1.3 Bewertung....................................................................................................51
3.2.2 Zweite Alternative: Funktionale Sicht ............................................................52
3.2.2.1 Tabellen........................................................................................................52
3.2.2.2 Funktionen ..................................................................................................53
3.2.2.3 Bewertung....................................................................................................54
4 Realisierung .......................................................................................................................57
4.1 Bereits existierende Module ....................................................................................57
4.1.1 MPEG-Library...................................................................................................57
4.1.2 Video Foundation-Datablade ..........................................................................60
4.1.3 Videoserver.........................................................................................................60
4.2 Architektur.................................................................................................................61
4.3 Speicherkonzepte ......................................................................................................63
4.3.1 Generelle Überlegungen ...................................................................................64
4.3.2 Primary Access Method....................................................................................64
4.3.3 Secondary Access Method ...............................................................................65
4.3.4 Parse Tree ...........................................................................................................65
4.4 Integration der bereits existierenden Module .......................................................66
4.4.1 MPEG-Library...................................................................................................66
4.4.2 Video Foundation-DataBlade..........................................................................67
4.4.3 Videoserver.........................................................................................................68
4.5 Implementierung der DataBlade-Funktionen.......................................................69
4.5.1 Generelles Schema der DataBlade-Funktionen ............................................69
4.5.2 Deklaration in SQL ...........................................................................................70
4.5.3 MPEGcreateVideo ............................................................................................70
5 Evaluierung .......................................................................................................................73
5.1 Das Web-DataBlade .................................................................................................73
5.2 Die Demonstrationsanwendung.............................................................................74
5.2.1 Ablauf der Demonstration ...............................................................................75
6 Ausblick .............................................................................................................................79
Anhang A: Die Klasse IDSaccess ....................................................................................81
Anhang B: Implementierung der DataBlade-Funktionen............................................83
Anhang C: Funktionen des MPEG-DataBlades............................................................87
Anhang D: Installation ......................................................................................................91
Installation des MPEG-DataBlades..............................................................................91
Installation der Demonstrationsanwendung ...............................................................93
6
Anhang E: Glossar.............................................................................................................95
Anhang F: Abbildungsverzeichnis...................................................................................97
Anhang G: Tabellenverzeichnis .......................................................................................99
Anhang H: Literatur.........................................................................................................101
7
0 Einleitung
In der Entwicklung der Computertechnologie spielen multimediale Daten eine immer
wichtiger werdende Rolle. Sie ermöglichen dem Computer ein Vordringen in Bereiche,
die bisher anderen Technologien und Geräten, zumeist analogen, vorbehalten waren. So
ist die Vision einer Integration von verschiedenen Medien wie Fernsehen, Rundfunk,
den klassischen Printmedien und Kommunikationsmedien wie Briefpost, Telefon und
Telefax längst keine Utopie mehr, sondern bereits weitgehend realisiert. Der Computer
spielt dabei eine zentrale Rolle, indem er durch die Entwicklung von TV- und RadioErweiterungssteckkarten, durch das Internet mit dem World Wide Web, Email und
Internettelefonie sowie Zusatzperipherie wie Faxmodems in alle genannten
Medienbereiche eindringt. Eine multimediale Ausstattung eines Rechners mit
Soundkarte und CD ROM-Laufwerk ist bereits Standard; wer einen Rechner ohne diese
Komponenten erwerben will, braucht eine Sonderanfertigung.
Auch das multimediale Medium Video hat Einzug in die Welt der Computer gehalten.
Eine Vielzahl von Datenformaten für Videos wie AVI, Quicktime sowie MPEG 1 und
die anderen Standards der MPEG-Familie unterstreicht dies. Auch
Hardwareunterstützung ist beispielsweise in Form von MPEG-Erweiterungssteckkarten
erhältlich.
0.1 Motivation
Computerunterstützung ist bei zahlreichen Anwendungen hilfreich. Als Beispiele seien
hier die Videobearbeitung mit digitalem Videoschnitt und die Videoanalyse mit
Schnitterkennung bzw. der Erkennung von Szenenwechseln genannt. Dabei ist häufig
der Zugriff auf Teile (Segmente) eines Videos erforderlich. Die dabei notwendige
Extraktion dieser Segmente aus dem Gesamtvideo ist keineswegs trivial, besonders im
Fall komprimierter Videos. Häufig muß dazu das Datenmaterial aufbereitet und die
interne Struktur des Videos analysiert werden. Da das dabei notwendige Parsen
rechenzeitintensiv ist, wäre es wünschenswert, es nur einmal durchzuführen und das
Ergebnis persistent zu speichern. Um die Vorteile von Datenbankmanagementsystemen
zu nutzen, bietet sich eine Speicherung in einem solchen an.
Der Zugriff auf die Struktur von Videos ist außerdem für eine Reihe weiterer
Anwendungen erforderlich; Beispiele dazu finden sich im Kapitel „2.1
Benutzungsszenarios“. So entstand die Idee, ein System zu entwerfen, das den Zugriff
9
0 E INLEITUNG
auf interne Strukturinformationen von Videos sowie deren Management und Retrieval
bietet. Dieses System wird in dieser Arbeit beschrieben.
0.2 Überblick
Im folgenden wird ein kurzer Überblick über die weiteren Kapitel dieser Arbeit
gegeben.
Kapitel I beschreibt den aktuellen Stand der Technik. Es geht auf die grundlegenden
Technologien und Modelle von Datenbanken ein und illustriert sie anhand eines
Beispielsystems, des Dynamic Servers von Informix. Weiterhin beschreibt es Formate
und Komprimierungsstandards für digitales Video und stellt eine Beziehung zwischen
Videos und Datenbanken her.
Das Kapitel II beinhaltet die Analyse der Anforderungen an das zu erstellende System.
Anhand von Benutzungsszenarios werden verschiedene Anwendungsfälle aufgezeigt.
In Kapitel III wird der Entwurf des Systems dargestellt und auf verschiedene
Alternativen bei der Spezifikation der SQL-Schnittstelle eingegangen.
Kapitel IV erläutert die Realisierung und Implementierung des Systems. Dabei werden
die Systemarchitektur, verschiedene Speicherkonzepte und die Integration bereits
existierender Module beschrieben.
Die Evaluierung anhand einer Demonstrationsanwendung wird in Kapitel V aufgezeigt.
Das Kapitel IV bietet
Ergänzungsmöglichkeiten.
einen
Ausblick
auf
zukünftige
Erweiterungs-
und
Anhang A gibt die Header-Datei der in C++ implementierten Klasse IDSaccess wieder.
Der Anhang B zeigt anhand einiger ausgewählter Beispiele die Implementierung der
DataBlade-Funktionen auf.
In Anhang C werden sämtliche Funktionen des MPEG-DataBlades mit ihrer Signatur
aufgeführt.
Der Anhang D beschreibt die bei der Installation des MPEG-DataBlades sowie der
Demonstrationsanwendung notwendigen Schritte.
Ein Glossar findet sich in Anhang E.
Anhang F bietet ein Verzeichnis aller Abbildungen.
10
In Anhang G befindet sich das Tabellenverzeichnis.
Schließlich rundet der Anhang H die Arbeit mit einem Verzeichnis der verwendeten
Literatur ab.
11
1 Stand der Technik
1.1 Datenbanken
1.1.1 Grundlegende Technologien
Die folgende Einführung in Datenbankmanagementsysteme orientiert sich an [DB1]
und [MMOODB].
Prinzipiell könnte jedes Anwendungsprogramm die Speicherung der von ihm
bearbeiteten Daten selbst übernehmen. Oft arbeiten jedoch mehrere Anwendungen
teilweise oder vollständig auf demselben Datenbestand (siehe Abbildung 1).
Abbildung 1: Mehrere Anwendungen arbeiten auf demselben Datenbestand
Dabei entstehen die folgenden Probleme:
• Inkonsistenzen
• Redundanzen
• Konkurrierende Zugriffe auf Daten
13
1 S TAND DER T ECHNIK
• Änderungen an der Struktur der gespeicherten Daten müssen in allen beteiligten
Anwendungen vorgenommen werden.
• Abhängigkeiten zwischen
- Daten untereinander
- Daten und Programmen
- Programmen untereinander
Zur Lösung dieser Probleme wurden Datenbanksysteme erfunden. Sie bestehen aus
einer Datenbank und einem Datenbankmanagementsystem. Dabei ist die Datenbank
eine einheitlich beschriebene Darstellung eines Weltausschnittes mittels diskreter Daten
auf externen und persistenten Speichermedien, wobei es sich üblicherweise um
Magnetplatten handelt. Der Zugriff auf die Daten in der Datenbank ist nur über das
Datenbankmanagementsystem möglich. Es ist für das Einfügen, Lesen, Ändern und
Löschen von Daten zuständig.
Wie Abbildung 2 zeigt, existiert in Form des Datenbankmanagementsystems eine
einheitliche Schnittstelle für den Zugriff auf die gemeinsame Datenbasis. Somit findet
eine Entkopplung von Applikationen und Datenverwaltung statt. Alle
Anwendungsprogramme haben die gleiche logische Sicht auf den Datenbestand, und
um die Strukturen der physischen Speicherung kümmert sich das
Datenbankmanagementsystem. Die Programmteile zur Verwaltung der Daten werden
also aus den Anwendungen herausfaktorisiert.
14
1.1 D ATENBANKEN
Abbildung 2: Mehrere Anwendungen greifen auf eine Datenbank zu
Aus diesem Ansatz ergeben sich folgende grundlegende Eigenschaften von
Datenbanksystemen:
• Verwaltung großer Datenmengen
• Persistente Speicherung der Daten
• Strukturierte Datenverwaltung
• Querying
• Redundanzfreiheit durch einen integrierten Datenbestand
• Korrektheit in Mehrbenutzerbetrieb durch Concurrency Control
• Zugriffsregelung
mit
Transaktionsmanagement
feinkörnigen
Zugriffsrechten
und
• Korrektheit der Daten durch Überprüfen der Einhaltung definierter
Konsistenzregeln
15
1 S TAND DER T ECHNIK
• Datensicherheit bei fehlerhaftem Ablauf einzelner Anwendungen und
Systemabsturz durch Recovery
• Datenunabhängigkeit
1.1.2 Datenbankmodelle
1.1.2.1 Relationale Datenbanken
Das Konzept der relationale Datenbanken folgt dem Relationenmodell von [Codd]. Die
Darstellung der zu modellierenden Wirklichkeit erfolgt hier mit einem einzigen
Konstrukt, dem der Relation, wie sie aus der Mathematik bekannt ist. Relationen
können dabei als Tabellen gesehen werden. Die Einträge jeder Spalte sind alle vom
selben fest definierten Datentyp. Eine Zeile, Tupel genannt, entspricht einem Datensatz.
Auf den Tabellen sind Operationen definiert; eine der wichtigsten ist die Selektion, die
eine Menge von Tupeln aus einer Tabelle, die einer angegebenen Bedingung
entsprechen, zurückliefert. Durch Beziehungen zwischen Tabellen können komplexe
Sachverhalte modelliert werden.
Für relationale Datenbanken existieren Sprachen zur Definition der Datenschemata
(DDLs, Data Definition Languages) und Abfragesprachen (DMLs, Data Manipulation
Languages). SQL ist die am weitesten verbreitete Datenbanksprache und dient
gleichzeitig als DDL und DML.
Relationale Datenbanken eignen sich besonders für die klassischen administrativen und
betriebswirtschaftlichen Anwendungen wie die Verwaltung von Kundendaten oder
Lohnbuchhaltung. Die Ursache dafür liegt in der sehr flachen und einfachen Struktur
der dabei anfallenden Daten, die sich mit relationalen Modellen sehr einfach modellieren
läßt.
Relationale Datenbanken weisen aber auch eine Reihe von Unzulänglichkeiten auf. Da
mit Tupeln nur flache Strukturen nachgebildet werden können, sind die
Modellierungsmöglichkeiten stark eingeschränkt, besonders wenn man als Vergleich
objektorientierte Programmiersprachen heranzieht. Die Darstellung der Objektstruktur
ist
nur
über
Fremdschlüssel
möglich,
damit
existieren
keine
Unterscheidungsmöglichkeiten für Generalisierung und Aggregation. Relationale
Datenbanken kennen keine globalen Operatoren für komplexe Objekte. Weiterhin
fehlen benutzerdefinierbare Operationen. Schließlich ist die Bearbeitung von
Datenobjekten großen Volumens mit Ausnahme von proprietären Lösungen wie
BLOBs (Binary Large Objects) nicht vorgesehen.
16
1.1 D ATENBANKEN
1.1.2.2 Objektorientierte Datenbanken
Um die Nachteile relationaler Datenbanksysteme aus dem Weg zu räumen, wurde die
Familie der objektorientierten Datenbanken entwickelt. Sie entstehen durch Erweitern
eines (relationalen) Datenbankmanagementsystems um objektorientierte Konzepte oder
durch Hinzufügen von Datenbankfunktionalität zu einer objektorientierten
Programmiersprache. So bleiben die im Kapitel „1.1.1 Grundlegende Technologien“
erwähnten Eigenschaften erhalten.
Das Objektkonzept geht auf die Idee des abstrakten Datentyps zurück. Abstrakte
Datentypen bestehen aus einer Datenstruktur und darauf definierten Operationen.
Genauso haben Objekte eine interne Struktur (Attribute) und typspezifische Operatoren
(Methoden). Die Implementierungsdetails sind dabei für den Benutzer nicht sichtbar.
Die Werte der Attribute können nur durch die Methoden verändert werden, somit sind
sie nach außen abgekapselt.
Objektorientierte Datenbanksysteme haben die folgenden grundlegenden Eigenschaften
[Manifesto]:
• Komplexe Objekte
• Objektidentität: Jedes Objekt hat einen systemweit eindeutigen Identifier. Zwei
Objekte sind identisch, wenn ihre Identifier identisch sind; sie sind gleich, wenn
ihre Attribute die gleichen Werte haben.
• Datenunabhängigkeit durch Kapselung
• Typen oder Klassen: Typen beschreiben das nach außen sichtbare Verhalten
und können mehrere Implementierungen haben. Klassen definieren eine
Struktur und liefern eine Implementierung für Operationen. (Also binden
Klassen eine Implementierung an einen Typ. Oder anders gesagt:
Klassenzugehörigkeit impliziert Typzugehörigkeit, umgekehrt ist das nicht der
Fall.)
• Vererbung: Klassen können von anderen Klassen Eigenschaften erben.
Vererbung dient zur Kontrolle von Redundanz und Konsistenz.
• Überladen (Overloading) und Überschreiben (Overriding) von Operatoren
sowie spätes Binden
• Erweiterbarkeit: Neue Typen und Operatoren sind benutzerdefinierbar.
• Computational Completeness: Jede berechenbare Funktion ist in der DML
spezifizierbar
17
1 S TAND DER T ECHNIK
• Persistenz
• Sekundärspeicherverwaltung:
Indizes,
Zugriffspfade, Queryoptimierung
Clustering,
Puffermechanismen,
• Nebenläufigkeit (Concurrency Control): Sicherung nebenläufiger Transaktionen
und Mehrbenutzerbetrieb
• Recovery
• Ad hoc Queries: Eine einfache Möglichkeit, Abfragen zu stellen, z. B. durch eine
spezielle Abfragesprache
Mit diesen Merkmalen sind objektorientierte Datenbanksysteme ihren relationalen
Verwandten in vieler Hinsicht überlegen. Das resultiert im wesentlichen aus der
Möglichkeit einer adäquateren Modellierung des Umweltausschnittes durch
benutzerdefinierte komplexe Objekte. Ihr wohl größter Nachteil ist die im Vergleich zu
relationalen Systemen geringere Performanz aufgrund des zusätzlichen
Verwaltungsaufwandes.
Besondere Bedeutung haben objektorientierte Datenbanken im Bereich der NichtStandardanwendungen wie CAD/CAM/CIM, geographischen Informationssystemen,
Workflowmanagementsystemen, multimedialen Systemen, wissensbasierten Systemen,
naturwissenschaftlichen Anwendungen sowie in der Dokumentverwaltung mit
Büroautomation, Hypertext und Autorensystemen.
1.1.2.3 Objektrelationale Datenbanken
Nach [Stonebraker] lassen sich Datenbankanwendungen in Kategorien einteilen. Dabei
wird zwischen einfachen und komplexen Daten sowie zwischen Anwendungen mit und
ohne Abfragen unterschieden. Somit ergeben sich insgesamt vier Kategorien (siehe
Abbildung 3).
18
1.1 D ATENBANKEN
Abbildung 3: Die Klassifizierung von Datenbankanwendungen nach
[Stonebraker]
In die erste Kategorie mit einfachen Daten und ohne Abfragen fallen Anwendungen wie
Editoren oder Textverarbeitung. Diese benötigen keine Datenbank, sondern benutzen
für die persistente Speicherung der bearbeiteten Texte das vom Betriebssystem
bereitgestellte Dateisystem.
Beispiele für die zweite Kategorie von Anwendungen sind etwa eine
Kundendatenverwaltung und eine Lohnbuchhaltung. Diese werden typischerweise mit
relationalen Datenbanken und der Abfragesprache SQL implementiert.
Die dritte Kategorie steht für Anwendungen, die komplexe Datenstrukturen benötigen,
aber ohne Abfragen auskommen, wie etwa CAD-Programme. Würden diese wie bei der
ersten Kategorie das Dateisystem nutzen, wären aufwendige Konvertierungen zwischen
den Formaten durchzuführen, in denen die Daten in der Datei bzw. im Hauptspeicher
gespeichert sind. Statt dessen werden bei solchen Applikationen Erweiterungen für
Programmiersprachen verwendet, die die persistente Speicherung von in der
Programmiersprache definierten Datenstrukturen unterstützen. Es wird also ein
objektorientiertes Datenbanksystem verwendet.
Die letzte Kategorie ist abfrageorientiert und erfordert komplexe Datenstrukturen.
Anwendungsbeispiele für diese Kategorie sind die Verwaltung multimedialer
Datenbeständen wie Bild-, Ton- und Videoarchive.
19
1 S TAND DER T ECHNIK
Um dafür ein geeignetes Hilfsmittel zu haben, wurde eine neue Familie von
Datenbanken geschaffen: die objektrelationalen Datenbanksysteme. Sie versuchen, die
Vorteile von relationalen und objektorientierten Systemen zu vereinen, indem sie
relationale Datenbanken um objektorientierte Konzepte erweitern.
Für objektrelationale
charakteristisch:
Datenbanksysteme
sind
die
folgenden
Eigenschaften
• Die Daten werden wie bei relationalen Systemen in Tabellen gespeichert.
• Den Spalten der Tabellen ist ebenso wie bei relationalen Datenbanken ein fester
Typ zugewiesen.
• Als Datentypen sind erlaubt:
-
Vordefinierte Typen wie integer oder varchar(100)
-
Basisdatentypenerweiterung: Es sind benutzerdefinierte Typen wie row
type point (x float, y float) möglich. Diese neuen Typen sind
genauso wie die vordefinierten z. B. bei Abfragen einsetzbar. Dies ermöglicht
nebenbei auch die Verwaltung von Datentypen großen Volumens, die
besonders im multimedialen Bereich auftreten.
• Komplexe Datentypen, die aus mehreren Basisdatentypen bestehen
• Tabellen sind Instanzen eines Datentyps.
• Benutzerdefinierte Routinen
• Einfache Vererbungsmechanismen: Ein Typ kann von seinem Vatertyp
Eigenschaften erben.
Beispiel:
create row type person (name varchar(32));
create row type professor (department varchar (32))
under person;
create row
person;
type
student
(major
20
varchar
(100))
under
1.1 D ATENBANKEN
Der Typ Professor hat durch diese Deklaration die Datenfelder department
und name, wobei er letzteres vom Typ Person erbt. Analog hat der Typ Student
die Felder major und name.
Außer Datenfeldern werden auch die für den Vatertyp definierten Funktionen
vererbt.
Auch Mehrfachvererbung sowie das Überladen von Operationen sind erlaubt.
• Die gute Performance und die effizienten Abfragemöglichkeiten relationaler
Systeme bleiben im wesentlichen erhalten.
• Anders als bei relationalen Datenbanken kann auch ein großer Teil der
Funktionalität, die dort durch das Anwendungsprogramm implementiert wird,
direkt in den Datenbankkern verlagert werden. Dadurch ergibt sich ein nicht
unerheblicher Geschwindigkeitsgewinn.
• Durch Regel in der Form on event [...] do action [...] läßt sich
die Integrität des Datenbestandes sicherstellen. Diese Regeln spezifizieren eine
Reaktion des Systems auf bestimmte Ereignisse wie beispielsweise das
Modifizieren von Daten.
Mit diesen Eigenschaften, vor allem mit der Basisdatentypenerweiterung und der guten
Performance, eignen sich objektrelationale Datenbankmanagementsysteme besonders
für multimediale Anwendungen. Sie lassen sich aber auch in vielen Bereichen
verwenden, in denen wegen der Unzulänglichkeiten relationaler Systeme bisher
objektorientierte Datenbanken eingesetzt wurden.
1.1.3 Informix Dynamic Server
Da es sich bei der vorgestellten Implementierung um eine multimediale Anwendung
handelt, liegt es nahe, ein objektrelationales Datenbankmanagementsystem zu
verwenden.
Der Dynamic Server der Firma Informix Software, Inc. bietet neben einer nativen
Implementierung die volle Funktionalität objektrelationaler Datenbanken mit
Basisdatentypenerweiterung, komplexen Objekten, Vererbung und Regeln. Dies ist bei
allen seinen Konkurrenten nicht der Fall. So fiel nicht zuletzt wegen der Verfügbarkeit
des im Kapitel „1.3.2 Das Video Foundation-DataBlade“ vorgestellten DataBlades die
Wahl auf dieses Datenbanksystem, das im folgenden kurz vorgestellt werden soll.
21
1 S TAND DER T ECHNIK
1.1.3.1 Architektur
Der Dynamic Server ist ein hochperformantes Datenbanksystem, das mit
Multithreading arbeitet. Es läuft sowohl auf Einzelprozessormaschinen als auch auf
symmetrischen Multiprozessorsystemen. Mit sogenannten DataBlades kann es um neue
Datentypen und Operationen erweitert werden.
Kennzeichnend für die Architektur des Informix Dynamic Servers sind die folgenden
Aspekte [IDS]:
• Client/Server-Architektur: Der Dynamic Server reagiert auf ClientAnwendungen, die Daten aus der Datenbank anfordern, und stellt diese zur
Verfügung. Ein Client kann dabei das mit dem Dynamic Server ausgelieferte
Hilfsprogramm DB-Access, das interaktive SQL-Abfragen ermöglicht, oder eine
in INFORMIX-ESQL/C, C++, Java oder einer anderen Sprache geschriebene
Anwendung sein.
• Skalierbarkeit: Entsprechend den Anforderungen, die die Anwendungen an das
Datenbanksystem stellen, können die Ressourcen skaliert werden. Nach
Herstellerangaben hat diese sogenannte „Dynamic Scalable Architecture“ durch
die Bereitstellung virtueller Prozessoren, die weiter unten näher erläutert werden,
Performanzvorteile sowohl für Einzel- als auch für Mehrprozessorsysteme.
Besonders symmetrische Multiprozessorsysteme werden durch diese Architektur
gut unterstützt.
• Durch systemnahe Optimierungen läßt sich eine gute Performanz erreichen. Ein
Beispiel dafür ist Raw Disk Management, wobei das Dateisystem des
Betriebssystems nicht benutzt wird.
• Durch Replikation des gesamten Datenbanksystems auf einem zweiten Rechner
kann eine hohe Verfügbarkeit sichergestellt werden.
• Verteilte Datenbanken: Innerhalb einer Transaktion können mehrere
Datenbanken auf verschiedenen Datenbankservern abgefragt werden. Das
erlaubt eine Aufteilung des Datenmaterials nach organisatorischen
Gesichtspunkten.
Die Architektur stützt sich im wesentlichen auf mehrere Betriebssystemprozesse und –
threads, die virtuelle Prozessoren genannt werden [DBDK]. Das Datenbanksystem teilt
Aufgaben in Teilaufgaben auf, die dann jeweils einem virtuellen Prozessor zugewiesen
werden. Auf einem Mehrprozessorsystem können die virtuellen Prozessoren auf die
physikalisch vorhandenen verteilt werden. So läßt sich durch Ausnutzung der parallelen
Architektur eine gute Performanz erreichen.
22
1.1 D ATENBANKEN
Abbildung 4 veranschaulicht die Prozesse einer einfachen Installation des Dynamic
Servers.
Abbildung 4: Prozeßdiagramm des Dynamic Server
Jedes Quadrat in der Abbildung stellt einen virtuellen Prozessor dar, der als
Betriebssystemprozeß oder –thread läuft. Von den einzelnen Kategorien virtueller
Prozessoren können beliebig viele Instanzen existieren. Ihre genaue Anzahl ist abhängig
von Performanzanforderungen und Auslastung.
Der Dynamic Server kennt die folgenden Arten virtueller Prozessoren:
• Der CPU Virtual Processor stellt das Herzstück des Dynamic Servers dar. Er ist
zuständig für das Parsen einer in SQL gestellten Abfrage und für deren Planung
und Optimierung. Er unterteilt eine Anfrage in mehrere Threads, überwacht
deren Ausführung und sammelt die Ergebnisse.
• Der Extension Virtual Processor hat die gleichen Aufgaben wie ein CPUProzessor. Er lockert jedoch die bei der Entwicklung von DataBlades zu
beachtenden Vorschriften. So sind beispielsweise blockierende Systemaufrufe
wie I/O-Operationen erlaubt. Die blockierenden Operationen versetzen einen
Extension Virtual Processor in den Wartezustand, die Abarbeitung von
Abfragen durch die CPU-Prozessoren wird jedoch nicht beeinträchtigt.
23
1 S TAND DER T ECHNIK
• Ein Asynchronous I/O Virtual Processor implementiert asynchrone I/OOperationen. Wenn ein CPU-Prozessor Daten von dem Massenspeicher lesen
will, wird diese Aufgabe dem I/O-Prozessor übertragen. Der CPU-Prozessor
kann bis zum Ende der I/O-Operation weiterarbeiten. Nur falls keine Arbeit für
ihn anliegt, wird er in einen Wartezustand versetzt.
• Der Network Virtual Processor ist für die Netzwerkkommunikation mit dem
Client und mit anderen Datenbankservern zuständig.
Die virtuellen Prozessoren kommunizieren untereinander über Shared Memory. Dabei
handelt es sich um einen Speicherbereich, den alle Prozesse lesen und schreiben
können. Die Größe des Shared Memory-Bereiches kann sich während der Lebensdauer
des Datenbankservers je nach Speicheranforderungen von Abfragen verändern.
Im Shared Memory werden die folgenden Informationen abgelegt:
• Puffer beinhalten Daten aus Datenbanktabellen oder Indizes.
• Es wird eine Liste der zu Zeit laufenden Abfragen geführt.
• Die Sperren von laufenden Transaktionen werden hier registriert.
• Lokaler Speicher von Funktionen eines DataBlades wird hier allokiert.
Die Betriebssysteme, unter denen der Dynamic Server läuft, stellen sicher, daß die
Adreßräume aller virtuellen Prozessoren identisch sind. So wird beispielsweise unter
Unix jeder virtuelle Prozessor mit Hilfe des Systemaufrufs fork() erzeugt. Für die auf
diese Weise generierten Adreßräume wird kein Code reallokiert. Daher müssen keine
Adressen umgerechnet werden, wenn die Zuweisung eines Threads von einem virtuellen
Prozessor auf einen anderen wechselt.
Weiterhin unterstützt der Informix Dynamic Server multimediale Datentypen durch die
folgenden Eigenschaften:
• Es gibt den vordefinierten Datentyp external_file, der eine Referenz in das
lokale Dateisystem darstellt, was das folgende Beispiel verdeutlicht:
create table
_file);
insert into
.jpg″);
Bilder(Name
Bilder
varchar(20),
values(″Test″,
Bild
external
″~mierse/bilder/test
• Außerdem gibt es mit dem Datentyp large object lange Bytefelder zur
Aufnahme multimedialer Daten. Auf diesem Typ sind Operationen zum Im-
24
1.2 D IGITALES V IDEO
und Export aus dem Dateisystem sowie zum Byte-orientierten Zugriff auf das
Feld und zur Suche nach Bytemustern definiert.
1.1.3.2 DataBlade-Technologie
DataBlades sind Softwarebibliotheken in Form von Shared Objects. Sie dienen der
Basisdatentypenerweiterung und werden zur Laufzeit dynamisch zum Datenbankkern
dazugeladen. Daraus resultiert eine besonders gute Performanz, die nicht erreicht
werden könnte, wenn die entsprechende Funktionalität im Anwendungsprogramm und
damit in einer anderen Schicht außerhalb des Kernes implementiert würde, wie es oft
üblich ist.
DataBlades ergänzen das Datenbanksystem um spezielle Funktionalität, die für einen
spezifischen Anwendungsbereich benötigt wird. Ein Beispiel ist die Erstellung von
HTML-Seiten für das World Wide Web, die mit Datenmaterial aus der Datenbank
dynamisch generiert werden können.
DataBlades bestehen aus
• benutzerdefinierten Datentypen,
• benutzerdefinierten Operationen auf diesen Typen und
• Tabellen, die das Schema des DataBlades bilden.
Nachdem DataBlades in der Datenbank registriert wurden, wird deren Datenmodell
dynamisch in das der Datenbank integriert. Daher kann auf die Erweiterungen auf die
gleiche Weise wie auf vordefinierte Funktionalität z. B. mit SQL zugegriffen werden.
Als Beispiel wird im Kapitel „1.3.2 Das Video Foundation-DataBlade“ das Video
Foundation DataBlade vorgestellt. Außerdem existieren DataBlades beispielsweise für
Textretrieval, pixelorientierte Manipulation von Bildern wie Formatkonvertierungen
oder Skalierungen sowie ein Toolkit für die Erstellung von HTML-Seiten. Mit Hilfe des
DataBlade Developer’s Kit kann jeder Anwender auch eigene DataBlades entwickeln.
1.2 Digitales Video
Multimediale Anwendungen können in zwei Kategorien eingeteilt werden:
• Streaming-orientiert: Im Vordergrund steht die kontinuierliche Wiedergabe in
Echtzeit, beispielsweise das Playback (Wiedergabe) von Videos.
25
1 S TAND DER T ECHNIK
• Interaktiv: Hier ist ein effizienter Zugriff auf Teile des multimedialen Mediums
wichtig. Beispiele dafür sind der digitale Videoschnitt oder CBT (Computer
Based Training).
Wie die genannten Beispiele zeigen, fällt das zeitabhängige visuelle Medium Video in
beide Kategorien. Das im Verlauf dieser Arbeit vorgestellte System betont den
interaktiven Aspekt.
1.2.1 Formate für digitales Video
Digitales Video wird in der Fernsehtechnik häufig genutzt. Der Verbreitungsbereich
erstreckt sich dabei allerdings fast ausschließlich auf die Programmanbieter. Für die
deutschen Konsumenten ist digitales Fernsehen erst seit kurzem in Form des Pay-TVSenders DF1 verfügbar. Nicht zuletzt wegen der hohen monatlichen Kosten und der
benötigten digitalen Zusatzhardware zum analogen Fernsehgerät hat sich DF1 bis heute
nicht durchsetzen können.
Die Formate für digitales Video können wie folgt unterschieden werden:
• Standards ohne Komprimierung. Sie zeichnen sich durch gute Qualität und eine
hohe Übertragungsrate aus. Solche Formate werden vor allem zur
professionellen Videoproduktion bei Fernsehsendern eingesetzt. Als wichtigste
Vertreter seien hier Digital Component Video (CCIR 601), Digital Composite
Video, CIF (Common Intermediate Format) und QCIF (Quarter-CIF) sowie
HDTV (High Definition Television) genannt.
• Standards mit Komprimierung. Ihre Qualität und andere Parameter wie
Auflösung oder Farbtiefe sind den Formaten ohne Komprimierung oft
unterlegen. Dafür sind sie auch auf weniger leistungsstarken Systemen wie
üblichen PCs ohne besondere Zusatzausstattung abspielbar und finden
dementsprechend nicht nur in der Fernsehtechnik, sondern auch im
semiprofessionellen und im Heimbereich Verwendung.
1.2.2 Komprimierungsstandards
Das größte Problem bei digitaler Videotechnologie ist die Menge der anfallenden Daten.
Multimediale Daten benötigen im Vergleich zu alphanumerischem Material ein
Vielfaches an Speicherplatz. Ohne Komprimierungsverfahren sind heutige
Speichermedien und Übertragungsnetzwerke nicht in der Lage, Videos in einigermaßen
anspruchsvoller Qualität wiederzugeben. Dies wird durch Tabelle 1, Tabelle 2 und
Tabelle 3 deutlich.
26
1.2 D IGITALES V IDEO
Medienart
Volumen
Datendurchsatz
500 Seiten Text
1 MB
2 KB/Seite
500 Seiten Bilder (Telefax)
32 MB
64 KB/Seite
500 Bilder (True color)
1,6 GB
3,2 MB/Bild
5 Min. Sprache
2,4 MB
8 KB/sec
5 Min. CD-Audio
52,8 MB
176 KB/sec
5 Min. unkomprimiertes MPEG 1-Video
760 MB
2,5 MB/sec
5 Min. PAL-Video
6,6 GB
22 MB/sec
5 min. HDTV-Video
33 GB
110 MB/sec
Tabelle 1: Volumen und Datenrate verschiedener Medien
Art des Speichers
Typisches Volumen
Datendurchsatz
Hauptspeicher
64 MB
100 MB/sec
Diskette
1,5 MB
30 KB/sec
Magneto-optische Wechselplatte (eine Seite) 300 MB
620 KB/sec
CD-ROM
644 MB
2 MB/sec
Magnetplatte
5 GB
6 MB/sec
Magneto-optische Wechselplatte, Jukebox
50 GB
Magnetband-Wechsler
Bis 600 GB
Tabelle 2: Volumen und Datenrate verschiedener Speicher
27
1 S TAND DER T ECHNIK
Art des Netzwerkes
Datenrate
Telefon
Ca. 2,5 KB/sec
Schmalband-ISDN (64 Kbit-Netz)
2 x 8 KB/sec
Ethernet (praktisch, bei 1:1-Verbindung)
120 KB/sec, 1,2 MB/sec
FDDI (z. Zt. praktisch, theoretisch)
2,4 MB/sec, 12 MB/sec
Tabelle 3: Datenrate verschiedener Netzwerke
Es gibt zwei Arten von Kompressionsverfahren [MMOODB]:
• Bei verlustlosen Verfahren bleiben alle Informationen erhalten. So können bei
der Dekompression die ursprünglichen Daten wiederhergestellt werden.
• Bei verlustbehafteten Verfahren gehen Informationen unwiederbringlich
verloren, die ursprünglichen Daten können also nicht wiederhergestellt werden.
In der Praxis sind diese Systeme jedoch so konzipiert, daß der Unterschied
zwischen dem Original und der komprimierten Version für den Benutzer kaum
wahrnehmbar ist.
Mit verlustloser Kompression läßt sich bei multimedialen Daten ein
Kompressionsfaktor von etwa 2 bis 4 erreichen. Da dies, wie Tabelle 1, Tabelle 2 und
Tabelle 3 deutlich machen, viel zu gering ist, finden zumindest im Video- und
Audiobereich nur verlustbehaftete Verfahren Anwendung.
1.2.2.1 DVI
DVI (Digital Video Interactive) wurde von Intel entwickelt und definiert zwei
Videoformate: Mit PLV (Production-Level Video) können Videos in einer ungefähr
dem VHS-Standard entsprechenden Qualität dargestellt werden. Durch ein proprietäres
Komprimierungsverfahren wird eine Datenrate von etwa 1 MBit/s erreicht. Das zweite
Format nennt sich RTV (Real-Time Video) und hat eine ähnliche Datenrate, bietet
jedoch keine so gute Qualität wie PLV.
1.2.2.2 Motion-JPEG
Dieser Standard orientiert sich an JPEG, einem Komprimierungsformat für Graustufenund Farbbilder. Mit Motion-JPEG werden Videos komprimiert, wobei jedes Einzelbild
entsprechend dem JPEG-Standard komprimiert wird. Damit handelt es sich um ein
28
1.2 D IGITALES V IDEO
Intraframe-Verfahren. Motion-JPEG hat sich im Vergleich zu MPEG nicht richtig
durchgesetzt, da MPEG durch ausgefeiltere Verfahren eine höhere Kompressionsrate
erreicht.
1.2.2.3 MPEG 1
Das Komprimierungsverfahren MPEG 1 verdankt seinen Namen dem internationalen
Standardisierungsgremium „Motion Picture Expert Group“. MPEG 1 ist ein ISOStandard [MPEG1SYS] [MPEG1VID].
Das wichtigste Ziel bei der Entwicklung von MPEG 1 war eine Videokompression mit
einer Datenrate von höchstens 1,5 MBit pro Sekunde. Damit können MPEG 1-Videos
mit den damals handelsüblichen Double Speed-CD-ROM-Laufwerken abgespielt
werden.
MPEG 1 ist ein Verfahren zur Videoübertragung und –speicherung mit den folgenden
Eigenschaften:
• Verlustbehaftete Videokomprimierung
• Beschränkung der Bildgröße auf eine Auflösung von 352 X 240 Bildpunkten
• Neben den Videodaten wird der dazugehörige (Stereo-)Ton ebenfalls
komprimiert.
• Unterstützung von variablen Bitraten
Der Trick, durch den die Komprimierung erreicht wird, besteht darin, daß nicht jedes
einzelne Bild für sich gespeichert wird. Statt dessen wird nur etwa jedes achte Bild
vollständig gespeichert. Für die dazwischen liegenden Bilder werden nur die Differenzen
zu anderen Einzelbildern kodiert. MPEG 1 ist also ein Intraframe-Verfahren. Sofern
kein Schnitt oder Kameraschwenk erfolgt, ähneln sich zeitlich aufeinanderfolgende
Bilder in der Regel sehr stark; so läßt sich eine gute Kompressionsrate erreichen.
Der MPEG 1-Standard sieht drei unterschiedliche Frametypen vor (siehe Abbildung 5):
I-Frames (intrakodiert) sind unabhängig von anderen Bildern als Einzelbilder kodiert.
Damit sind sie die Anker für wahlfreien Zugriff. Im Vergleich zu den anderen beiden
Typen wird nur eine geringe Kompressionsrate erreicht. Die Kodierung von I-Frames
orientiert sich am JPEG-Standard (Joint Photographic Expert Group), der die
Kompression von Graustufen- und Farbbildern spezifiziert.
Zur Dekodierung von P-Frames (predicted) muß auf den jeweils vorherigen I-Frame
und alle darauffolgenden P-Frames zugegriffen werden.
29
1 S TAND DER T ECHNIK
B-Frames (bidirektional) enthalten Informationen über die Unterschiede sowohl zu
vorangegangenen als auch zu nachfolgenden I- und P-Frames. Sie erreichen die
höchsten Kompressionsraten.
Abbildung 5: Die drei Frametypen von MPEG 1-Videos
Die Gesetzmäßigkeit der Folge von I-, P- und B-Frames wird von der konkreten
Anwendung und deren Anforderungen bestimmt. Soll eine möglichst hohe
Komprimierung erreicht werden, muß der Anteil von B-Frames relativ hoch sein. Wenn
dagegen ein möglichst feinkörniger wahlfreier Zugriff gewünscht wird, ist ein hoher
Anteil an I-Frames erforderlich. Als sinnvolle Folge für die meisten praktischen
Anwendungen hat sich die in Abbildung 5 dargestellte Sequenz „I B B P B B P B B I B
B P B B P B B I ...“ herausgestellt. In diesem Fall hat der wahlfreie Zugriff eine
Auflösung von neun Einzelbildern, was etwa 330 ms entspricht.
Die Datenstruktur des MPEG 1-Standards [MPEG1VID] besteht aus einer Hierarchie
von verketteten Elementen (siehe Abbildung 6). So modelliert ein Element des Picture
Layers ein Einzelbild des Videos, das mit anderen Bildern zu einer Group of Pictures
zusammengefaßt wird. Ein Bild besteht aus Slices, diese wiederum aus Macro Blocks
usw. Innerhalb der einzelnen Hierarchiestufen sind die Elemente entsprechend ihrer
Reihenfolge verkettet. Sie enthalten außerdem Referenzen auf das Element in der
jeweils höheren Ebene, zu dem sie gehören, sowie auf das erste Element in der sie
konstituierenden Liste der nächstniedrigeren Stufe.
30
1.2 D IGITALES V IDEO
Abbildung 6: Die MPEG 1-Hierarchie
31
1 S TAND DER T ECHNIK
Ein Video Stream kann als reiner Videodatenstrom existieren, der z. B. von einer
Kamera geliefert wird, oder aus einem in der Abbildung 6 nicht gezeigten ISO 11172
Stream berechnet werden.
Ein Video Stream besteht aus den folgenden Layers:
• Video Sequence Layer: Ein Video Stream kann aus mehreren Video Sequence
Layers bestehen.
• Sequence Header Layer: Der Sequence Header beinhaltet globale Informationen
über die Videosequenz und existiert nur einmal pro Video Sequence Layer. Er
speichert Informationen über die Auflösung, die sogenannte Quantizer Matrix,
die Bildwiederholrate und ähnliche Parameter.
• Group Of Pictures Layer: Die Numerierung der Bilder erfolgt innerhalb ihrer
Gruppe. Es gibt keine globale Numerierung im Video Stream.
• Der Picture Layer beinhaltet Einzelbilder des Videos.
• Macro Block Layer
• Block Layer
Bei MPEG 1 handelt es sich um ein asymmetrisches Verfahren, denn die Kompression
dauert im allgemeinen deutlich länger als die Dekompression. Auch dadurch wird die
Ausrichtung auf den CD-ROM-Markt deutlich.
Weiterhin legt die MPEG 1-Spezifikation nur das Verfahren für die Dekomprimierung
fest. Daher kann das Ergebnis einer Kompression desselben Videos je nach
verwendetem Encoder unterschiedlich ausfallen und seine Qualität schwanken. Die
Qualität eines MPEG 1-Videos ist in der Regel etwas besser als die eines VHS-Videos.
MPEG 1 bietet aber nur ungefähr ein Viertel der bei VHS üblichen Auflösung.
1.1.2.4 MPEG 2
Auch MPEG 2 ist ein ISO-Standard, spezifiziert im Jahre 1994. Im Gegensatz zu
MPEG 1 wird hier Wert auf eine höhere Qualität mit höheren Übertragungsraten gelegt.
So wurde MPEG 2 nicht für das Speichermedium CD-ROM, sondern für die digitale
Übertragung von Filmen in Fernsehqualität, beispielsweise im HDTV-Format, mit
Bitraten zwischen 4 und 9 MBit/sec entworfen.
Die wesentlichen Neuerungen gegenüber MPEG 1 sind die Definition einer Syntax für
das effiziente Kodieren von interlaced Videos sowie skalierbare Erweiterungen, die die
Aufteilung eines Videosignals in zwei oder mehr kodierte Bitstreams erlauben, die das
Video in verschiedenen Auflösungen oder Bildwiederholraten repräsentieren
[MPEG2VID].
32
1.3 V IDEO UND D ATENBANKEN
1.3 Video und Datenbanken
1.3.1 Multimediale Datenbanken
Aus dem Grundgedanken, von den Vorteilen von Datenbankmanagementsystemen
auch bei der Verwaltung multimedialer Daten wie Video-, Audio- und Bildmaterial zu
profitieren, ist die Klasse der multimedialen Datenbanken entstanden.
Multimediale Datenbankmanagementsysteme lassen sich durch die folgenden
Eigenschaften charakterisieren:
• Unterstützung der multimedialen Medien durch eigene Datentypen:
-
diskret: Text, Bilder/Grafiken
-
kontinuierlich: Audio/Sound, Video/Animation
• Ein objektorientiertes Datenmodell mit (mindestens)
-
Typkonstruktoren für generische Typen wie Tupel, Mengen, Felder und
Listen
-
Kapselung von Objekten
-
Typhierarchie
• Eingebaute (!) Datentypen für beliebig lange Bytefolgen (BLOBs, Binary Large
Objects), Text, Bild, Audio, Video und Animation
• Das System ist um neue Datentypen und Operationen erweiterbar.
• Zeitabhängigkeit
• Multimediale Datenbanken sind sehr speicherintensiv. Sei verwalten ein hohes
Datenvolumen auf verschiedenen Speichergeräten.
• Die Eigenschaften von Datenbankmanagementsystemen (s. Kapitel „1.1
Datenbanken“) finden sich auch hier.
• Modellierung von räumlichen und zeitlichen Beziehungen zwischen Objekten
• Präsentation, d. h. Wiedergabe von verschiedenen Medientypen
• Eventuell Integration verschiedener multimedialer Medien
• Scripting: Beschreiben und Festlegen von Abläufen und Synchronisationen
33
1 S TAND DER T ECHNIK
• Inter- und Intra-Objekt-Synchronisation (typisches Beispiel: Synchronisation
von Bild und Ton)
• Interaktion mit dem Benutzer
• Möglichst gute Quality of Service
• Inhaltsorientierter Zugriff
• Information Retrieval: Der Benutzer wird bei der Suche von relevanter
Information zu einer gegebenen Fragestellung vom System unterstützt.
Wie bereits im Kapitel „1.1.2 Datenbankmodelle“ erwähnt, eignen sich objektrelationale
Datenbankmanagementsysteme besonders gut für multimediale Anwendungen.
1.3.2 Das Video Foundation-DataBlade
Bei dem im Kapitel „1.1.3 Informix Dynamic Server“ näher erläuterten und für die
Implementierung des in dieser Arbeit vorgestellten Systems verwendeten
Datenbanksystem handelt es sich nicht um eine multimediale, sondern um eine
objektrelationale Datenbank. Der Informix Dynamic Server läßt sich jedoch einfach
durch die im gleichen Kapitel erwähnten DataBlades um multimediale Funktionalität
erweitern. Besonders hilfreich für die Aufgabenstellung war das Video Foundation
DataBlade, das daher im folgenden kurz vorgestellt wird.
Es bietet folgende Features:
• Es dient als Grundlage („Foundation“) für alle Erweiterungen des Dynamic
Server, die in den Bereich Video fallen.
• Es definiert eine generelle Architektur für die Erweiterung des
Datenbanksystems um den Datentyp Video. Diese Architektur stützt sich auf
drei Komponenten (siehe Abbildung 7):
- Der Dynamic Server verwaltet die Metadaten und kontrolliert den Zugriff auf
den externen Speichermanager, beispielsweise einen Videoserver oder eine
Magnetbandmaschine.
- Der externe Speichermanager übernimmt die physikalische Speicherung des
Videomaterials.
- Die Anwendung benutzt SQL zur Interaktion mit dem Dynamic Server und
kann für zeitkritische Operationen direkt auf den externen Speichermanager
zugreifen. Der direkte Zugriff wird beim Dynamic Server angefordert und
von ihm kontrolliert.
34
1.3 V IDEO UND D ATENBANKEN
Abbildung 7: Architektur des Video Foundation-DataBlades
• Es definiert ein einheitliches Datenmodell für die Verwaltung von Metadaten
über Videos in der Datenbank. Dieses Datenmodell spezifiziert zwei Kategorien
von Tabellen, um die Metadaten in der Datenbank zu speichern (siehe
Abbildung 8; aus Gründen der Übersichtlichkeit wurden einige Tabellen
ausgelassen, deren Beschreibung sich in [VFDB] findet):
- Tabellen für technische und physikalische Metainformationen wie die
Bildwiederholrate oder den Videostandard (VidMDGeneral, VidMedia,
VidPVideo, VidPAudio, VidPOther)
- Tabellen für inhaltsorientierte Metainformationen über das Video wie
Beschreibungen von Szenen (VidChunkMD, VidTextDesc, VidImgDesc,
VidAudDesc, VidVidDesc, VidStrata)
35
1 S TAND DER T ECHNIK
Abbildung 8: Entity-Relationship-Diagramm der wichtigsten Tabellen des
Video Foundation-DataBlades
• Es verfügt über eine generische, d. h. vom verwendeten Speichermedium
unabhängige Schnittstelle; für die Schnittstelle ist nicht relevant, ob das Video
auf einem Magnetband, einem Videoserver oder als Datei im Dateisystem liegt.
• Abschnittsweise Verwaltung von Videos
• Schnittstelle zu Videoservern
• Verwaltung von strukturellen Metadaten in Strata. Ein Stratum ist eine
Beschreibung eines Segmentes, was die Abbildung 9 verdeutlicht: Die WhoStrata beschreiben beispielsweise die in einer Szene agierenden Personen.
36
1.3 V IDEO UND D ATENBANKEN
Abbildung 9: Strata
37
2 Anforderungsanalyse
Die Anforderungen an das zu entwickelnde System lassen sich aus den
Anwendungsfällen ableiten, für die das System konzipiert wurde. Im folgenden sollen
daher einige Benutzungsszenarios vorgestellt und ihr Bezug zum System aufgezeigt
werden. Wichtig dabei ist die Antwort auf die Frage, welche Rolle strukturelle
Metadaten spielen, da deren Bereitstellung die wesentliche Aufgabe des MPEGDataBlades ist.
2.1 Benutzungsszenarios
2.1.1 Verwaltung von MPEG-Videos
Ein Anwendungsfall ist die Verwaltung und Archivierung mehrerer Videos. In seinem
Archiv kann der Benutzer neue Filme hinzufügen, sich eine Liste der im System
gespeicherten Filme ansehen und einen Film zur weiteren Bearbeitung auswählen.
Von Bedeutung ist dabei, wieviel Funktionalität das Archivierungssystem dem Benutzer
zur Verfügung stellen soll. Bei Beschränkung auf die unbedingt notwendige
Funktionalität wäre für die Verwaltung das Dateisystem des Betriebssystems
ausreichend.
Um dem Benutzer das Auffinden eines bestimmten Filmes zu erleichtern, wäre jedoch
weitere Funktionalität wünschenswert, beispielsweise die Möglichkeit, nicht nur nach
Filmtiteln und anderen Attributen eines Filmes wie etwa Regisseur oder Drehbuchautor
zu suchen, sondern auch nach inhaltlichen Beschreibungen, etwa in Form von Stratas
(siehe Abbildung 9).
Da ein Zugriff auf strukturelle Metadaten dazu nicht benötigt wird, ist die Funktionalität
eines Videoservers, der über das Video Foundation-DataBlade angesteuert wird, für
diesen Fall ausreichend.
2.1.2 Zugriff auf Segmente eines MPEG-Videos
2.1.2.1 Digitaler Videoschnitt
Als weiteres Szenario möchte der Benutzer ein neues Video zusammenschneiden und
dazu Teile von gespeicherten Filmen kopieren.
39
2 A NFORDERUNGSANALYSE
Wenn auf Segmente von umkomprimierten Videos zugegriffen werden soll, sind
strukturelle Metadaten unwichtig, da die einzelnen Bilder auch als solche gespeichert
sind. Handelt es sich dagegen um ein komprimiertes Video, müssen strukturelle
Metadaten verfügbar sein, um eine Sequenz von Bildern extrahieren zu können.
2.1.3 Zugriff auf strukturelle Metadaten eines MPEG-Videos
Für einige Anwendungen müssen die in den MPEG-Standards [MPEG1VID] und
[MPEG2VID] definierten strukturellen Metadaten eines MPEG-Videos, beispielsweise
der picture_coding_type am Anfang des Picture Layers, abgefragt werden können. Die
Notwendigkeit des Zugriffs auf diese strukturellen Metadaten soll im folgenden anhand
einiger Beispiele verdeutlicht werden.
2.1.3.1 Erkennen von Szenenwechseln
Bei der Verwaltung von Videomaterial ist es hilfreich, die Daten in handhabbare
Einheiten zu zerlegen und sie zu indexieren. Dafür wäre eine rechnergestützte
Schnitterkennung bzw. eine Erkennung von Szenenwechseln wünschenswert. Ein
Schnitt ist dabei ein diskontinuierlicher Übergang von einer Szene in eine andere ohne
Überblendungen (Fades).
Für die Schnitterkennung existieren verschiedene Verfahren [MMOODB]. Im
wesentlichen wird ein Schnitt dann erkannt, wenn die Differenz zwischen Bereichen
zweier aufeinanderfolgender Einzelbilder eine bestimmte Schwelle überschreitet. Somit
sind Zugriffe auf Teilflächen eines Bildes bis hinunter zu einzelnen Pixeln erforderlich.
2.1.3.2 Objekterkennung
Der Zugriff auf strukturelle Metadaten ist auch bei der rechnerunterstützten
Objekterkennung wichtig. Von einer Fernsehübertragung eines Fußballspieles
beispielsweise sind vor allem die Szenen interessant, in denen ein Tor geschossen wird
oder der Ball nach einem Schuß auf das Tor dieses nur knapp verfehlt. Daher wäre es
hilfreich, automatisch genau die Einzelbilder zu erkennen, in denen die Torpfosten
sichtbar sind. Ein Objekterkennungsalgorithmus würde mit Methoden wie Kanten- und
Eckenerkennung versuchen, die Torpfosten zu finden.
2.1.3.3 Watermarking
Unter Watermarking versteht man die Überlagerung eines Bild mit einem zweiten, das
beispielsweise Informationen über den Urheber des ersten Bildes enthält. Das zweite
Bild kann dabei nach der Überlagerung sichtbar oder unsichtbar sein. So lassen sich
Copyrightinformationen im Bild selbst codieren. Bei Manipulationen am Bildmaterial
40
2.1 B ENUTZUNGSSZENARIOS
wird das Watermark mit verändert; so läßt sich die Authentizität von Bildern feststellen.
Die Abbildung 10 zeigt ein Beispiel einer sichtbaren Überlagerung, das aus [IBM]
übernommen wurde.
Abbildung 10: Sichtbare Überlagerung mit einem Watermark. Links das
Watermark, rechts die Überlagerung.
Um ein MPEG-Video mit Watermarks zu versehen, ist es sehr hilfreich, eine
Modifikation von Helligkeits- und Farbwerten durchführen zu können. Dazu muß man
auf verschiedene Codes von mehreren Layers der MPEG-Hierarchie (s. Kapitel „1.2.2
Komprimierungsstandards“) zugreifen und diese verändern.
2.1.3.4 Adaption
Als zweites Beispiel wäre eine Adaption von MPEG-Filmen hinsichtlich der Auflösung
oder der Framerate in Bilder pro Sekunde denkbar, um die Wiedergabe von Videos auch
auf weniger leistungsstarken Systemen oder in Netzwerken mit niedrigen
Durchsatzraten zu ermöglichen.
Für die Adaption multimedialer Daten gibt es allgemein zwei Strategien [Adaption]:
Entweder werden einige Präsentationseinheiten (bei Videos wären das Einzelbilder)
ausgelassen, oder das zu präsentierende Objekt ist mehrfach in unterschiedlicher
Wiedergabequalität vorhanden. Im letzteren Fall wird die Version ausgewählt, die das
wiedergebende System nicht überfordert.
Bei der Adaption von MPEG-Videos ist bei der erstgenannten Adaptionsstrategie ein
Zugriff auf strukturelle Metadaten der MPEG-Struktur nötig, vor allem auf die
Frametypen und die Header der einzelnen Layer. Die Frametypen sind wichtig, da bei
Auslassen eines P- oder sogar eines I-Frames die diese Frames referenzierenden
Einzelbilder nicht mehr dargestellt werden können. B-Frames können dagegen
problemlos ausgelassen werden.
41
2 A NFORDERUNGSANALYSE
2.1.3.5 Panoramabilder
Ein Panoramabild entsteht durch Verarbeitung einer Filmsequenz zu einem einzigen
Bild. So kann aus einem Kameraschwenk oder einer Kamerafahrt ein Bild generiert
werden, das die gesamte aufgenommene Szenerie, das „Panorama“, zeigt. Abbildung 11
und Abbildung 12 verdeutlichen die Entstehung eines Panoramabildes.
Abbildung 11: Bild 1 und 150 einer Kamerafahrt
Abbildung 12: Panoramabild
Die Abbildung 11 zeigt das erste und einhundertfünfzigste Bild einer Kamerafahrt
entlang einer Häuserzeile. Aus den Einzelbildern der Kamerafahrt wurde
rechnergestützt das Panoramabild in Abbildung 12 generiert. Wie das Beispiel zeigt,
können die Sicht behindernde oder anderweitig störende Objekte bei der Herstellung
eines Panoramabildes entfernt werden: Der Baumstamm im Vordergrund des linken
42
2.1 B ENUTZUNGSSZENARIOS
Bildes aus Abbildung 11 ist im resultierenden Panoramabild nicht mehr zu sehen. Statt
dessen können wir jetzt sehen, was hinter ihm liegt und vorher von ihm verdeckt wurde.
Im einzelnen erfolgt die Herstellung eines Panoramabildes in fünf Schritten:
1. Analyse von Kamerabewegung und Zoom
2. Verarbeitung der einzelnen Bilder unter Beachtung von Kameraposition und
Zoom in/Zoom out
3. Die Einzelbilder werden so übereinander projiziert, daß die Bildpunkte jedes
Einzelbildes mit ihrer Position in dem resultierenden Panoramabild
übereinstimmen.
4. Bei sich überlappenden Bildpunkten ist der resultierende Bildpunkt im
Panoramabild deren Median.
5. Sich bewegende Objekte werden herausgefiltert.
Als eine Anwendung von Panoramabildern sei die Analyse von Fußballspielzügen
genannt [Yow]. Abbildung 13 zeigt Einzelbilder aus der digitalisierten
Fernsehübertragung eines Fußballspiels und Abbildung 14 ein daraus generiertes
Panoramabild.
Abbildung 13: Einzelbilder aus der Fernsehübertragung eines Fußballspiels
43
2 A NFORDERUNGSANALYSE
Abbildung 14: Panoramabild
Sich bewegende Objekte wie die Spieler und der Fußball wurden herausgefiltert. Das hat
nebenbei zur Folge, daß einige Details wie die Markierung des Strafraums und des
Fünfmeterraums verloren gehen.
Da der Umriß, die Farbe und die Größe der sich bewegenden Objekte bekannt sind,
können diese erkannt und ihre Bewegungsrichtung verfolgt werden. So wurde in
Abbildung 15 der Ball, der bei der Herstellung des Panoramabildes herausgefiltert
worden ist, wieder eingefügt.
Abbildung 15: Panoramabild mit Ball
Auf die gleiche Weise werden auch die Spieler wieder in das Panoramabild eingefügt
(siehe Abbildung 16). Das resultierende Bild zeigt die Bewegungen aller Spieler und
veranschaulicht so die Taktik der beiden Mannschaften.
44
2.1 B ENUTZUNGSSZENARIOS
Abbildung 16: Panoramabild mit Ball und Spielern
Anwendung könnten solche Bilder beispielsweise bei der Analyse eines Fußballspiels im
Fernsehen im Anschluß an die Übertragung des Spiels finden.
2.1.3.6 Evaluierung von Encodern
Wenn interne Details eines MPEG-Videos bekannt sind, kann damit auf die Qualität
der Kodierung eines Videos geschlossen werden. So wäre beispielsweise für ein kurzes
Video mit 20 Bildern die Kodierungsreihenfolge „I P B B B B B B B B P B B B B B B
B B B“ wegen der höheren Komprimierung eindeutig der Reihenfolge „I I I I I I I I I I
I I I I I I I I I I“ vorzuziehen, wobei hier die Buchstaben I, P und B für die im Kapitel
„1.2.2 Komprimierungsstandards“ näher erläuterten Frametypen stehen. Dafür bietet
die letztere Reihenfolge einen feinkörnigeren wahlfreien Zugriff. Damit ist die
Grundlage für die Entwicklung von Qualitätsbenchmarks für Software-Encoder oder
für Hardwarelösungen in Form von MPEG-Erweiterungskarten geschaffen.
45
3 Entwurf
Die Realisierung erfolgte als DataBlade für den Informix Dynamic Server. Als
Videoformate werden MPEG 1 und MPEG 2 unterstützt, da es sich dabei um
weitverbreitete Standards mit guten Kompressionsraten handelt.
3.1 Entwurfsansatz
3.1.1 Prinzipien
Mit einem DataBlade-Moduls soll möglichst vielen Anwendungen Funktionalität
bereitgestellt werden. Um dieses Ziel zu erreichen, ist es ratsam, die folgenden
Entwurfsprinzipien zu beachten [DBDK]:
• Der gesamte Entwurf sollte möglichst einfach gehalten und nicht überfrachtet
werden.
• Das User Interface sollte von den abstrakten Operationen auf den definierten
Datentypen getrennt werden.
• Die Kombination aus den dem Benutzer zugänglichen Datentypen und
Funktionen ist so zu wählen, das typische SQL-Anfragen möglichst einfach
formulierbar sind. Diesem Thema widmet sich das Kapitel „3.2 Spezifikation der
SQL-Schnittstelle“.
• Bei der Entscheidung, ob eine Routine im DataBlade, d. h. auf dem
Datenbankserver implementiert wird, oder ob ihre Realisierung der Anwendung
überlassen bleibt, können die folgenden Gesichtspunkte als Grundlage dienen:
-
Ein DataBlade sollte nur Routinen enthalten, die von vielen Anwendungen
benötigt werden. (Dies bietet nebenbei eine elegante Möglichkeit zum Code
Sharing.) Spezielle Funktionen, die nur für eine bestimmte Anwendung
benötigt werden, werden in der Anwendung selbst implementiert.
-
Wenn durch die Realisierung auf dem Datenbankserver ein geringeres
Datenvolumen über das Netzwerk zum Client geschickt werden kann, indem
z. B. nur das Ergebnis einer Berechnung und nicht alle zur Berechnung
benötigten Daten übertragen werden, ist die Funktion im DataBlade zu
implementieren.
47
3 E NTWURF
• Wenn ein Datentyp seiner Natur nach unteilbar ist oder seine Implementierung
dem Benutzer nicht zugänglich sein soll, ist es angebracht, ihn als opaquen Typ
zu definieren.
• Für die üblichen Operationen zum Zugriff auf opaque Typen sind vom
DataBlade entsprechende Funktionen zur Verfügung zu stellen.
3.1.2 Grundsätzliche Überlegungen
Beim Versuch, einen top down-Entwurf durchzuführen, ist der erste Schritt die Suche
nach den die API konstituierenden Funktionen, d. h. nach deren Signatur; gefragt sind
also ein neuer Datentyp und auf ihm definierte Operatoren. Schon bei der Definition
der üblichen Operatoren wie Vergleichsoperatoren stellen sich Fragen nach deren
Semantik: Wann ist beispielsweise ein Video größer als ein anderes?
Auch bei dem Versuch, eine Signatur von Operatoren zu definieren, die den im Kapitel
„2.1 Benutzungsszenarios“ dargestellten Anforderungen genügen, ergeben sich
Probleme. Wenn z. B. Bilder mit Watermarks versehen werden sollen, läßt sich ein
Operator mit der Signatur Bild r Bild Ü Bild definieren, der ein Bild mit einem zweiten
Bild, dem Watermark, überlagert. Bei (MPEG-)Videos gibt es keine eindeutige
Vorgehensweise, sondern viele unterschiedliche Verfahren zum Watermarking, so daß
die Definition eines oder auch mehrerer Operatoren zu restriktiv wäre.
Statt dessen ist für die Unterstützung der verschiedenen Watermarking-Verfahren wie
auch für andere Anwendungsbereiche der Zugriff auf strukturelle Metadaten eines
MPEG-Videos nötig, was im Kapitel „2.1.3 Zugriff auf strukturelle Metadaten eines
MPEG-Videos“ näher begründet wird. Zentrale Aufgabe des MPEG-DataBlades muß
es daher sein, den Zugriff auf die MPEG-Datenstruktur ermöglichen. Es ist also ein
„low-level“-DataBlade, das z. B. das eigentliche Watermarking nicht durchführt,
sondern nur die Voraussetzungen dazu schafft. Für die verschiedenen Methoden zum
Watermarking könnte ein eigenes DataBlade entwickelt werden, das auf dem MPEGDataBlade aufbaut, genauso wie das MPEG-DataBlade seinerseits auf dem Video
Foundation-DataBlade aufbaut (siehe Kapitel „4.1 Bereits existierende Module“).
3.2 Spezifikation der SQL-Schnittstelle
Ein DataBlade besteht aus Datentypen sowie darauf aufbauenden Tabellen und
Funktionen. Diese bilden die Schnittstelle des DataBlades nach außen. Wie für
Datenbanktabellen üblich, ist die Sprache dieser Schnittstelle SQL. Objektrelationales
SQL bietet als Abfragesprache für objektrelationale Datenbanken auch die Möglichkeit,
benutzerdefinierte Funktionen aufzurufen.
48
3.2 S PEZIFIKATION DER SQL-S CHNITTSTELLE
Um die im Kapitel „2.1 Benutzungsszenarios“ aufgestellten Anforderungen zu erfüllen,
soll das MPEG-DataBlade den Zugriff auf strukturelle Metadaten wie Frametypen,
Bewegungsvektoren, Bitraten oder die Auflösung bieten. Im folgenden sollen zwei
Entwurfsalternativen einer Schnittstelle unter Verwendung von objektrelationalem SQL
vorgestellt werden.
3.2.1 Erste Alternative: Abbildung der MPEG-Hierarchie
Der MPEG-Standard modelliert Videos mit einer Hierarchie untereinander verketteter
Layer (siehe Kapitel „1.2.2 Komprimierungsstandards“, besonders Abbildung 6).
Für den Entwurf einer SQL-API liegt es daher nahe, diese Hierarchie durch das
Datenbankschema abzubilden. Dann gäbe es für jede Hierarchiestufe einen
entsprechenden Tabellentyp in der Datenbank.
3.2.1.1 Datentypen und Tabellen
Der Datentyp MPEGLibrary dient zur Verwaltung der verschiedenen Videos:
create row type MPEG1_Library
(
id
int not null primary key,
top_layer
ref(MPEG1_Layer),
title
text,
description
text
);
Dabei ist id ein eindeutiger Bezeichner und top_layer eine Referenz auf die höchste
Hierarchiestufe. title ist der Titel des Videos, und description beinhaltet
benutzerdefinierbare Informationen über das Video wie eine kurze Beschreibung des
Inhalts.
Der Datentyp MPEG_Layer wird zur Definition von Daten einer Hierarchiestufe
benötigt. MPEG_Layer ist ein abstrakter Typ, von dem es keine Tabellen gibt. Alle
Typen, die die verschiedenen Layers modellieren, erben von diesem Typ.
create row type MPEG_Layer
(
id
int not null primary key,
higher_layer
ref(MPEG_Layer),
lower_layer
ref(MPEG_Layer),
previous_element
ref(MPEG_Layer),
next_element
ref(MPEG_Layer),
data
large_object not null unique
);
49
3 E NTWURF
Auch hier ist id ein eindeutiger Bezeichner. higher_layer ist eine Referenz auf die
nächsthöhere und lower_layer auf die nächstniedrigere Hierarchiestufe.
previous_element und next_element sind Verweise, die zur Verkettung
innerhalb des jeweiligen Layers dienen. data beinhaltet die binären Daten wie
Headerinformationen, die für den Layer definiert sind.
Für alle weiteren Layer gibt es nun einen Datentyp, der von MPEG_Layer erbt und
damit dieselben Datenfelder besitzt. Als Beispiel sei hier die Definition des Picture
Layers aufgeführt:
create row type MPEG_PictureLayer under MPEG_Layer;
Von diesen Typen werden Tabellen angelegt. Stellvertretend für alle Layer dient wieder
der Picture Layer als Beispiel:
create table MPEG_Pictures of type MPEG1_PictureLayer under
MPEG1_Layer_Table;
3.2.1.2 Funktionen
Die Prozedur WriteStreamToDb liest den Stream, der durch den als ersten Parameter
übergebenen Dateinamen definiert wird, und erzeugt die interne Repräsentation des
Streams in der Datenbank. Außerdem wird ein entsprechender Eintrag in der Tabelle
MPEG1_Library erzeugt. Die Datenfelder title und description dieses
Eintrages werden durch den zweiten bzw. dritten Parameter spezifiziert:
WriteStreamToDb(text, text, text)
Um auf die Daten des Stream zugreifen zu können, werden Funktionen zur Navigation
in der Hierarchie zur Verfügung gestellt. Diese sind für alle Layer gleich.
So gibt die Funktion getHigherLayerEntry einen Zeiger auf das erste Element der
nächsthöheren Hierarchiestufe relativ zu der Stufe zurück, zu der das als Parameter
übergebene Element gehört.
getHigherLayerEntry(pointer) returns pointer
Analog wird getLowerLayerEntry definiert. Innerhalb einer Hierarchiestufe kann
mit getNextEntry und getPreviousEntry navigiert werden. Beide Funktionen
besitzen dieselbe Signatur wie getHigherLayerEntry:
getNextEntry(pointer) returns pointer
50
3.2 S PEZIFIKATION DER SQL-S CHNITTSTELLE
Für den Zugriff auf die binären Daten des jeweiligen Elementes gibt es die Funktion
getStream. Diese liefert nicht nur die Daten des als Parameter übergebenen
Elementes, sondern auch die Daten aller in der Hierarchie darunter liegender Elemente:
getStream(pointer) returns pointer
Damit läßt sich das Video in Ausschnitten oder auch vollständig rekonstruieren.
Um nicht auf die binären Daten als Large Object, sondern auch auf die einzelnen
Metadaten eines MPEG-Videos zugreifen zu können, werden für jeden Layer
spezifische Funktionen definiert, die die entsprechenden Daten liefern. Für den Picture
Layer beispielsweise sind das die folgenden (vgl. [MPEG1VID]):
getFullPelForwardVector
getForwardFCode
getFullPelBackwardVector
getBackwardFCode
getExtraInformationPicture
getPictureExtensionData
getUserData
getTemporalReference
getPictureCodingType
getVbvDelay
(pointer)
(pointer)
(pointer)
(pointer)
(pointer)
(pointer)
(pointer)
(pointer)
(pointer)
(pointer)
returns
returns
returns
returns
returns
returns
returns
returns
returns
returns
boolean
int1
boolean
int1
pointer
pointer
pointer
integer
int1
integer
Diese Funktionen parsen den jeweils relevanten Teil des MPEG-Streams und suchen
die gewünschten Informationen heraus.
3.2.1.3 Bewertung
Die Abbildung der MPEG-Hierarchie durch das Datenbankschema modelliert die
MPEG-Datenstruktur und ist somit naheliegend. Die im Kapitel „2.1
Benutzungsszenarios“ dargestellten Anforderungen sind erfüllt. Wegen der Menge der
anfallenden Daten ist dieser Ansatz jedoch kaum praktikabel: Ein MPEG-Video in
Spielfilmlänge belegt einige hundert MB an Speicherplatz; der Speicherbedarf für die die
MPEG-Struktur abbildenden Tabellen kommt noch dazu. Auch, wenn auf das
Datenfeld data in der Tabelle MPEG_Layer verzichtet wird und statt dessen ein
Videoserver die Daten liefert, fällt noch eine immense Menge an Metadaten an.
Der Ansatz könnte verbessert werden, indem nur die Ebenen der MPEG-Hierarchie
gespeichert werden, die für die jeweilige Anwendung relevant sind. Die Tiefe der
Modellierung wäre dann konfigurierbar und könnte generisch angepaßt werden. Auch
das Anlegen von Indizes kann je nach Bedarf stattfinden oder nicht. Das
51
3 E NTWURF
Speicherplatzproblem würde durch diese Überlegungen allerdings nur wenig verringert;
grundsätzlich befindet sich der Speicherplatzbedarf noch in derselben Größenordnung.
Für diesen Ansatz sind noch weitere Modifikationen denkbar. So könnten aus
Performanzgründen manche Informationen in entsprechenden Feldern von
Datenbanktabellen persistent gespeichert werden und müßten dann nicht mehr aus dem
Large Object berechnet werden. Der Speicherplatzbedarf würde dadurch jedoch weiter
anwachsen.
Als weiterer Nachteil ist bei diesem Ansatz oft der Aufruf von Navigationsfunktionen
wie getNextEntry erforderlich, die überhaupt keine Nutzdaten liefern. Daraus
resultiert eine schlechte Performanz, da jeder Aufruf einer Funktion aus einem
DataBlade verglichen mit einem normalen Prozeduraufruf relativ lange dauert.
Eine Verallgemeinerung der obigen Überlegungen zur Konfigurierbarkeit soll im
folgenden vorgestellt werden.
3.2.2 Zweite Alternative: Funktionale Sicht
Führt man die Überlegungen zur Konfigurierbarkeit fort, stellt sich die Frage, warum
überhaupt ein starres Datenbankschema vordefiniert werden soll. Als Alternative dazu
könnte die Schnittstelle so entworfen werden, daß der Benutzer seine Tabellen selbst
definiert. Das würde auch die Rolle des MPEG-DataBlades als low level-Blade
unterstreichen.
3.2.2.1 Tabellen
Aus dem Grundgedanken, kein Datenbankschema vorzugeben, ergibt sich, daß die
Granularität der Modellierung mit Tabellen ein ganzes Video ist. Es wird also eine
Tabelle benötigt, die die einzelnen Videos repräsentiert:
create table media(
title
author
description
value
parsetree_filename
);
varchar(50),
varchar(50),
varchar(250),
MedLoc not NULL,
varchar(250)
Die ersten drei Datenfelder speichern eine textuelle Beschreibung des Videos. Das Feld
value ist eine Referenz auf den Speicherort eines Videos, beispielsweise auf einem
Videoserver. Zusammen mit dem folgenden Datenfeld parsetree_filename wird
es im Kapitel „4 Realisierung“ näher beschrieben.
52
3.2 S PEZIFIKATION DER SQL-S CHNITTSTELLE
3.2.2.2 Funktionen
Zur besseren Unterscheidung beginnen alle Funktionen des MPEG-DataBlades mit
dem Präfix MPEG.
Ein neues Video muß in der Tabelle media registriert werden. Das wäre mit einem
insert-Statement möglich. Um den Benutzer der SQL-API nicht mit internen
Verwaltungsdaten zu konfrontieren, stellt das MPEG-DataBlade hierfür eine spezielle
Funktion zur Verfügung:
MPEGcreateVideo(lvarchar, lvarchar, lvarchar, lvarchar)
Als die ersten drei Parameter werden der Titel, der Autor und eine kurze Beschreibung
des Videos erwartet (vgl. die ersten drei Datenfelder der Tabelle media). Das vierte
Argument spezifiziert einen Dateinamen eines MPEG-Videos im Unix-Dateisystem.
Ein Beispielaufruf wäre:
execute procedure MPEGcreateVideo(
'Random', 'Alan Smith', 'Dices flying around',
'/home/mierse/mpg/random.mpg'
);
Weitere Details zu dieser Funktion und ihre Implementierung finden sich im Kapitel „4
Realisierung“.
Die weiteren Funktionen dienen dem Zugriff auf die strukturellen Metadaten eines
MPEG-Videos. Der erste Parameter aller Funktionen ist eine Referenz auf den
Speicherort eines Videos, gibt damit das vom Benutzer gewünschte Video an und
entspricht dem vierten Datenfeld der Tabelle media. Viele Funktionen haben Indizes
als weitere Argumente, beispielsweise eine Bildnummer. Als Funktionsergebnis liefern
sie die jeweils gewünschte Information.
Anhand der Rückgabewerte lassen sich die Funktionen in zwei Kategorien einteilen: Sie
liefern entweder nur einen Wert, der eine Information über ein Element der MPEGDatenstruktur, z. B. über ein Bild, darstellt, oder geben mehrere Werte, beispielsweise
von mehreren Bildern, zurück.
Als Beispiel seien hier drei Funktionen aufgeführt. Der Code der Implementierung
einiger ausgewählter Funktionen wird in Anhang B: Implementierung der DataBladeFunktionen aufgeführt. Eine vollständige Auflistung aller Funktionen findet sich in
Anhang C: Funktionen des MPEG-DataBlades.
MPEGgetStreamMode (MedLoc)
MPEGgetPictCodType (MedLoc, integer)
MPEGgetFrameorder (MedLoc)
53
returns lvarchar
returns integer
returns lvarchar
3 E NTWURF
Die Funktion MPEGgetPictCodType erwartet als zweites Argument die Nummer des
Bildes, dessen Frametypen sie zurückgibt. Die anderen beiden Funktionen benötigen
außer der Referenz auf das Video keine weiteren Parameter. Im Gegensatz zu den
beiden ersten Funktionen liefert MPEGgetFrameorder nicht nur einen Wert, sondern
alle Frametypen des gesamten Videos.
Die drei vorgestellten Funktionen können in der folgenden Weise aufgerufen werden:
select MPEGgetStreamMode
where title='Random';
select MPEGgetPictCodType
where title='Random';
select MPEGgetFrameorder
where title='Random';
(value)
from media
(value, 5)
from media
(value)
from media
Der Benutzer des DataBlades kann sich nun eigene Tabellen definieren und diese mit
den Daten füllen, die das MPEG-DataBlade durch seine Funktionen zur Verfügung
stellt. Um die obigen Beispiele fortzuführen, sei für einen Anwendungsfall eine Tabelle
nützlich, die von allen Videos den Stream Mode enthält, etwa um einen Überblick zu
erhalten, welche Videos eine Tonspur haben und welche nicht. Diese kann wie folgt
deklariert werden:
create table myVideos(
value
MedLoc,
streamMode
lvarchar
);
Die Tabelle myVideos kann mit dem folgenden Statement gefüllt werden:
insert into myVideos
select value, MPEGgetStreamMode(value) from media;
Analog lassen sich je nach Anwendungsfall weitere Tabellen definieren und mit Daten
füllen.
3.2.2.3 Bewertung
Auch die zweite Alternative genügt allen Anforderungen, die im Kapitel „2.1
Benutzungsszenarios“ dargestellt wurden. Ihre Schnittstelle ist jedoch wesentlich
einfacher, klarer, übersichtlicher und damit leichter verständlich als die erste Alternative.
Das Datenbankschema kommt mit deutlich weniger Tabellen, nämlich nur einer aus.
Zusätzliche Funktionen, die nicht direkt Metadaten eines MPEG-Videos liefern wie die
Navigationsfunktionen des ersten Ansatzes, gibt es nicht mehr. Das
Speicherplatzproblem ist optimal gelöst: Liegen die Videos auf einem Videoserver,
speichert die Datenbank nur noch genau die Daten in Tabellen, die der Benutzer
definiert; der Verwaltungs-Overhead ist mit der Tabelle media, die genau einen Eintrag
54
3.2 S PEZIFIKATION DER SQL-S CHNITTSTELLE
pro Video enthält, verschwindend gering. Damit hat der zweite Ansatz keinen der
Nachteile des ersten. Weiterhin genügt die zweite Alternative auch den im Kapitel „3.1.1
Prinzipien“ vorgestellten Entwurfsrichtlinien.
Falls doch eine Modellierung der MPEG-Hierarchie durch das Datenbankschema
gewünscht wird, ist dies weiterhin möglich, indem der Benutzer wie im ersten Ansatz
jeweils eine Tabelle für jede Hierarchiestufe anlegt.
Die zweite Alternative ist gegenüber der ersten also in jedem Falle vorzuziehen.
55
4 Realisierung
Aufgrund seiner Vorteile wurde der im Kapitel „3.2.2 Zweite Alternative: Funktionale
Sicht“ dargestellte Ansatz zur Realisierung ausgewählt. In diesem Kapitel soll nun seine
Implementierung vorgestellt werden.
4.1 Bereits existierende Module
Das MPEG-DataBlade setzt neben dem Informix Dynamic Server auf drei unabhängig
von ihm entwickelte Module auf. Dabei handelt es sich um eine MPEG-Library, das
Video Foundation-DataBlade sowie einen Videoserver.
4.1.1 MPEG-Library
Die MPEG-Library ist eine in C++ geschriebene Klassenbibliothek. Sie bietet einen
Zugriff auf verschiedene Metadaten von MPEG 1- und MPEG 2-Videos.
Grundsätzlich ist die MPEG-Library ein eigenständiges Modul, das nicht an ein
Datenbanksystem oder einen Videoserver gebunden ist. Sie ist mit einem kurzen
zusätzlichem Hauptprogramm alleine lauffähig und erwartet die einzulesenden Videos
dann als Dateien im Dateisystem. Für das MPEG-DataBlade wurde sie so modifiziert,
daß sie die Videos über die generische Schnittstelle des Video Foundation DataBlade
von einem Videoserver liest (siehe Kapitel „4.4 Integration der bereits existierenden
Module“).
Die wesentliche Funktionalität der MPEG-Library besteht darin, ein MPEG-Video
einzulesen, entsprechend der Spezifikation [MPEG1VID] [MPEG2VID] zu parsen und
dabei einen Parse Tree aufzubauen, in dem die Metadaten gespeichert werden. Für den
Zugriff auf die Metadaten werden entsprechende Funktionen angeboten. Um von einem
bestimmten Element der MPEG-Hierarchie, etwa einem Bild, Informationen
abzufragen, muß in der Regel vor dem Aufruf der Funktion in der Datenstruktur des
Parse Trees erst zu dem Element navigiert werden.
Damit nicht bei jedem Zugriff auf Metadaten der Parse Tree neu aufgebaut werden
muß, bietet die Library die Möglichkeit, ihn nach dem Aufbau persistent zu speichern
und zu einem späteren Zeitpunkt neu einzulesen. Diese Möglichkeit erhöht die
Performanz beträchtlich, da der Aufbau des Parse Tree bereits bei relativ kurzen Videos
einige Zeit in Anspruch nimmt.
57
4 R EALISIERUNG
Weiterhin unterstützt die MPEG-Library über einen Index den wahlfreien Zugriff auf
Einzelbilder, was bei der MPEG-Datenstruktur mit ihren Vorwärts- und
Rückwärtsverkettungen durchaus nicht trivial ist. Damit ist die Library geradezu
prädestiniert für digitalen Videoschnitt.
Außerdem können einzelne Bilder eines Videos dekodiert und als Bilddatei in den
Formaten YUV, SIF, TGA und PPM gespeichert werden. Auch dieses Feature ist nicht
trivial zu implementieren, besonders dann, wenn es sich bei dem zu dekodierenden Bild
nicht um einen I-Frame handelt.
Die Abbildung 17 zeigt die wesentlichen Klassen des Parse Trees: Über einen Index in
der Klasse VideoStream wird der wahlfreie Zugriff auf Einzelbilder realisiert. Die
MPEG-Hierarchie (siehe Abbildung 6) wird durch die Klassen VideoStream,
VideoSequence, GOP (für Group Of Pictures), Picture und Slice modelliert.
Die Navigation im Parse Tree erfolgt durch das Traversieren der Listen dieser Klassen,
die Referenzen auf die zugehörigen Elemente der jeweils nächstniedrigeren
Hierarchiestufe enthalten. Zu jeder Instanz der Klassen VideoSequence, GOP und
Picture existieren Instanzen von Extensions-Klassen, die weitere Metadaten
speichern.
58
4.1 B EREITS EXISTIERENDE M ODULE
Abbildung 17: Der Parse Tree
In Abbildung 18 sind weitere wichtige Klassen sowie deren Beziehungen untereinander
dargestellt. Eine einfache Umrandung stellt dabei eine abstrakte Klasse dar.
59
4 R EALISIERUNG
Abbildung 18: Auszug aus dem Klassendiagramm der MPEG-Library
Die
Klasse
UnixFile implementiert die von den abstrakten Klassen
RandomAccessIO sowie BasicIO geerbten Operationen read(), write(),
seek() und tell() und wird von der Klasse BitStream zum Einlesen eines Videos
verwendet. In den Klassen VideoTree und VideoStream finden sich wesentliche
Bestandteile des Parsers. Die Klasse BinaryIOStream wird von VideoStream zum
Schreiben und späteren Einlesen des persistenten Parse Tree benutzt.
Ein Nachteil der MPEG-Library ist das Fehlen von Macroblock und Block Layer; die
MPEG-Hierarchie wird also nicht vollständig abgebildet. Außerdem bietet die Library
nicht alle Informationen der verschiedenen Header in der MPEG-Datenstruktur.
4.1.2 Video Foundation-Datablade
Wie im Kapitel „1.1.3 Informix Dynamic Server“ begründet, wurde als
Datenbankmanagementsystem der objektrelationale Informix Dynamic Server
verwendet. Mit Hilfe des im Kapitel „1.3.2 Das Video Foundation-DataBlade“
beschriebenen DataBlades wurde dieser um Funktionalitäten zur Verwaltung von
Videos sowie zum Zugriff auf einem Videoserver erweitert. Vor allem die generische,
vom verwendeten Speichermedium unabhängige Schnittstelle ist dabei von Nutzen.
4.1.3 Videoserver
Das Videomaterial liegt auf dem kommerziellen Videoserver WebFORCE MediaBase,
der von der Firma Silicon Graphics Inc. angeboten wird.
60
4.2 A RCHITEKTUR
Da der Zugriff auf die Videos über die generische Schnittstelle des Video FoundationDataBlades erfolgt, wäre ebensogut die Verwendung eines anderen Videoservers oder
das Ablegen der Videos im Unix-Dateisystem möglich.
4.2 Architektur
An die Architektur des MPEG-DataBlades gibt es die folgenden Anforderungen:
• Die im Kapitel „3 Entwurf“ beschriebene SQL-Schnittstelle soll realisiert
werden.
• Die MPEG-Library soll Bestandteil des Systems sein.
• Ebenso sind das Video Foundation DataBlade und
• ein Videoserver zu integrieren.
• Natürlich müssen auch alle Vorschriften beim Design eines DataBlades beachtet
werden.
Die in der Abbildung 19 dargestellte Architektur trägt allen diesen Anforderungen
Rechnung.
Abbildung 19: Die Architektur des MPEG-DataBlades
61
4 R EALISIERUNG
Kernstück der Architektur ist der Universal Server. Dieser wird zunächst mit dem Video
Foundation-DataBlade erweitert. Das MPEG-DataBlade baut dann auf dem Video
Foundation-DataBlade auf. Es kommuniziert in drei Richtungen:
• Wie jedes DataBlade mit dem Universal Server.
• Mit dem Video Foundation-DataBlade. Über dessen generische Schnittstelle
wird der Videoserver angesprochen.
• Es liest Dateien im Unix-Dateisystem, die ein MPEG-Video beinhalten.
Im folgenden soll diese Architektur anhand von zwei Beispielen verdeutlicht werden.
Abbildung 20 zeigt den Ablauf bei Einlesen eines neuen Videos durch den Aufruf der
Funktion MPEGcreateVideo.
Abbildung 20: Einfügen und Parsen eines Videos
Der Parser der in das MPEG-DataBlade integrierten MPEG-Library liest über die
generische Schnittstelle des Video Foundation-DataBlade, die Funktionen für den
Zugriff auf den Videoserver bereitstellt, das Video ein. Anschließend erzeugt er den
Parse Tree und speichert ihn persistent.
62
4.3 S PEICHERKONZEPTE
Abbildung 21 stellt den Ablauf beim Aufruf einer Funktion des MPEG-DataBlades dar.
Abbildung 21: Aufruf einer Funktion des MPEG-DataBlades
Über (objektrelationales) SQL wird die DataBlade-Funktion aufgerufen. Handelt es sich
dabei um eine Funktion wie beispielsweise MPEGgetStreamMode, die ihre Daten nicht
aus dem Parse Tree bezieht, kann direkt vom Videoserver gelesen werden. In der Regel
ist es jedoch nötig, vorher den beim Einfügen des Videos geschriebenen Parse Tree
wiederherzustellen.
Danach wird die gewünschte Information aus dem Parse Tree extrahiert und als
Funktionsergebnis zurückgegeben.
4.3 Speicherkonzepte
Ähnlich wie beim Design der Schnittstelle des MPEG-DataBlades (siehe Kapitel „3.2
Spezifikation der SQL-Schnittstelle“) gibt es auch für die Speicherung des anfallenden
Datenmaterials verschiedene Möglichkeiten, die im folgenden betrachtet werden sollen.
63
4 R EALISIERUNG
4.3.1 Generelle Überlegungen
Prinzipiell existieren für die Speicherung von Metadaten über Videos die folgenden
Alternativen:
• Als primitivster Ansatz kann das gesamte Video als ein Large Object gespeichert
werden. Alle gewünschten Metainformationen müssen dann während des
Aufrufs einer DataBlade-Funktion zur Laufzeit aus dem Large Object berechnet
werden. Entsprechend lange würde ein Funktionsaufruf dauern; damit ergibt
sich als Nachteil eine schlechte Performanz. Vorteilhaft ist der geringe
Speicherplatzbedarf, denn außer dem Video selbst fallen keine Daten an.
• Als Weiterentwicklung des vorigen Ansatzes können die Videos nicht als Large
Object in der Datenbank, sondern auf einem Videoserver liegen. Die schlechte
Performanz bleibt jedoch erhalten.
• Eine weiterer Ansatz entspricht den im Kapitel „3.2.1 Erste Alternative:
Abbildung der MPEG-Hierarchie“ angestellten Überlegungen: Die MPEGHierarchie wird durch Tabellen abgebildet. Ein Parser liest die Videos ein und
füllt dabei die Tabellen. Alle Metadaten werden als Tabellenfelder gespeichert.
Diese Alternative hat die im Kapitel „3.2.1 Erste Alternative: Abbildung der
MPEG-Hierarchie“ genannten Nachteile.
• Die beste und deshalb zur Realisierung ausgewählte Alternative bleibt der im
Kapitel „3.2.2 Zweite Alternative: Funktionale Sicht“ dargestellte Ansatz.
4.3.2 Primary Access Method
Eine andere Möglichkeit ist die Implementierung einer Primary Access Method [VTI]
für den Informix Dynamic Server. Dabei handelt es sich um eine Schnittstelle, mit der
auf Daten in einem beliebigen Format, z. B. als Datei im Dateisystem, in einer
Datenbank eines Konkurrenzherstellers oder im Hauptspeicher genauso wie auf eine
Tabelle im IDS zugegriffen werden kann; die Schnittstelle stellt also im Prinzip virtuelle
Tabellen bereit.
Im Gegensatz zur Speicherung einer Referenz auf eine externe Datei durch
beispielsweise den Dateinamen versetzt die Implementierung einer Primary Access
Method den IDS immerhin in die Lage, mit externen Daten umzugehen. Durch diese
Realisierungsvariante bliebe jedoch ein Großteil der Funktionalität, nämlich das gesamte
Storage Management des DBMS (s. Kapitel „1.1.1 Grundlegende Technologien“)
ungenutzt bzw. würde reimplementiert. Weiterhin ähnelt diese Realisierungsvariante bei
unstrukturierter Speicherung einer Datei im Dateisystem der ersten Alternative im
vorigen Kapitel „4.3.1 Generelle Überlegungen“ mit denselben Vor- und Nachteilen
und dem zusätzlichen Aufwand für die Schnittstelle. Auch bei strukturierter
64
4.3 S PEICHERKONZEPTE
Speicherung bietet diese Methode keine Vorteile gegenüber der Definition der
Datenstrukturen im IDS; virtuelle Tabellen lassen sich dann auch durch einen View
realisieren.
Die Implementierung von Primary Access Methods kann auch durchaus vorteilhaft sein.
Wenn beispielsweise ein Hersteller einen Videoserver anbietet, der MPEG-Videos
strukturiert entsprechend dem MPEG-Standard speichert und den Zugriff auf
technische Metadaten des Filmes anbietet, sind Primary Access Methods angebracht.
Dem IDS bleibt dann die Metadatenverwaltung und die Bereitstellung einer
einheitlichen Schnittstelle überlassen; beides wird z. B. vom Video Foundation Blade
(siehe Kapitel „1.3.2 Das Video Foundation-DataBlade“) angeboten.
Generell sind Primary Access Methods gegenüber einer Verwendung von Tabellen
jedoch eher als Extrem zu sehen. Sie könnten allerdings bei schwierigen Anwendungen
die letzte Rettung sein, wenn alle anderen Speicherkonzepte nicht praktikabel sind.
4.3.3 Secondary Access Method
Eine Secondary Access Method bietet die Möglichkeit, eine Indexstruktur für einen
benutzerdefinierten Datentyp eines objektrelationalen Datenbankmanagementsystems
zu definieren. Nötig wird dies bei Datentypen, die sich nicht mit binären Bäumen
indexieren lassen wie beispielsweise mehrdimensionale Daten. Genauere Erläuterungen
dazu finden sich in [VII] sowie in [Stonebraker], Kapitel 10.
Für das MPEG-DataBlade ist die Definition einer Secondary Access Method nicht
erforderlich, da es sich bei den relevanten Datentypen der Metadaten um
alphanumerisches Datenmaterial wie Integers und Strings handelt. Somit sind B-Bäume
und vorhandene Vergleichsoperatoren ausreichend.
4.3.4 Parse Tree
Für die Behandlung des Parse Tree der MPEG-Library sind mehrere Ansätze denkbar:
• Auf Persistenz des Parse Tree wird verzichtet. Das wäre die einfachste Lösung.
Bei jedem Aufruf einer Funktion des MPEG-DataBlades müßte der Parse Tree
dann jedoch neu aufgebaut werden, was bereits bei relativ kurzen Videos einige
Zeit in Anspruch nimmt. Wegen der daraus resultierenden suboptimalen
Performanz ist dieser Ansatz indiskutabel.
• Die MPEG-Library bietet die Möglichkeit, den Parse Tree als Datei im UnixDateisystem zu speichern bzw. wieder einzulesen. Dazu stellt die Klasse
VideoStream die Funktionen write und read zur Verfügung. Dieser Ansatz
wurde realisiert.
65
4 R EALISIERUNG
• Am konsequentesten wäre eine Speicherung des Parse Tree in der Datenbank.
Dafür kann eine neue Klasse PersistParseTree definiert werden, die von
BasicIO erbt. PersistParseTree wird dann von der Klasse
BinaryIOStream zum Lesen und Schreiben des Parse Tree benutzt. Die
Abbildung 22 zeigt diesen Sachverhalt (auch hier steht eine einfache Umrandung
für eine abstrakte Klasse). Dieser Ansatz wäre als zukünftige Erweiterung des
MPEG-DataBlades denkbar (s. a. Kapitel 6 Ausblick).
Abbildung 22: Die Klasse PersistParseTree
4.4 Integration der bereits existierenden Module
4.4.1 MPEG-Library
Der Parser der MPEG-Library liest ein Video aus einer Datei im Unix-Filesystem. Das
MPEG-DataBlade soll seine Daten dagegen über die generische Schnittstelle des Video
Foundation-DataBlades von einem Videoserver beziehen. Die dadurch erforderliche
Anpassung der MPEG-Library wird im folgenden beschrieben.
Durch das VSI (Virtual Storage Interface) stellt das Video Foundation DataBlade
Zugriffsfunktionen auf Videos wie open, close, read, write, seek und
tell zur Verfügung. Mit diesen Funktionen können Anwendungen auf das
66
4.4 I NTEGRATION DER BEREITS EXISTIERENDEN
M ODULE
Datenmaterial zugreifen, das von externen Speichermanagern wie Videoservern
bereitgestellt wird.
In der MPEG-Library werden Videos von der Klasse BitStream eingelesen. Bisher
wurden dazu entsprechende Methoden der Klasse UnixFile aufgerufen, die Zugriff
auf Dateien im Unix-Filesystem bieten. Anstatt UnixFile wird dazu jetzt die neue
Klasse IDSaccess verwendet (siehe Abbildung 23; auch hier steht eine einfache
Umrandung für eine abstrakte Klasse). Sie ist analog zu UnixFile aufgebaut, da sie
ebenfalls von RandomAccessIO erbt, und stellt durch Aufruf von
mi_routine_get() die oben erwähnten Funktionen des Video Foundation
DataBlades zur Verfügung.
Die Header-Datei der Klasse IDSaccess findet sich in Anhang A:
IDSaccess.
Die Klasse
Abbildung 23: Die Klasse IDSaccess
4.4.2 Video Foundation-DataBlade
Zur Konfigurierung des Video Foundation DataBlade muß zunächst das verwendete
Speichermedium angemeldet werden [VFDB]. Dies geschieht durch einen Eintrag in der
Tabelle MedVSIRegister:
insert into Medvsiregister values (MedStorage('VSI_FILE',
67
4 R EALISIERUNG
3,NULL,NULL,NULL,'/var/tmp/ius_mierse/videoserver/',
NULL, NULL));
Um die Beispiele einfach zu halten, wird die Integration des Video FoundationDataBlades anhand von im Unix-Filesystem gespeicherten Dateien vorgeführt. Dazu ist
noch ein Eintrag in der Tabelle MedVSI_File erforderlich:
insert into MedVSI_File
values('/var/tmp/ius_mierse/videoserver/',0);
Nach Erstellen der im Kapitel „3.2.2 Zweite Alternative: Funktionale Sicht“
vorgestellten Tabelle media können mit der Funktion Copy Videos vom Dateisystem
des Datenbankclients auf das angemeldete Speichermedium kopiert werden:
insert into media values ('Random', 'Alan Smith', 'Dices
flying around', Copy('VSI_CLIENT:/home/mierse/mpg/
random.mpg',Storage('VSI_FILE#3:')), NULL);
Um den Benutzer von diesen internen Verwaltungsdetails abzuschirmen und um
sicherzustellen, daß auch ein persistenter Parse Tree geschrieben wird, stellt das MPEGDataBlade die Funktion MPEGcreateVideo zur Verfügung (siehe auch die Kapitel
„3.2.2 Zweite Alternative: Funktionale Sicht“ und „4.5.3 MPEGcreateVideo“).
Ein auf dem Speichermedium liegendes Video kann auch wieder zurück in das
Dateisystem des Clients kopiert werden:
select Copy(value,Storage('VSI_CLIENT:/home/mierse/mpg/
out.mpg')) from media where title='Random';
Mit Hilfe der im vorigen Kapitel vorgestellten Klasse IDSaccess kann die MPEGLibrary ihre Daten jetzt über das Video Foundation-DataBlade beziehen.
Die Verbindung zum Datenbankschema des Video Foundation-DataBlades (siehe
Abbildung 8) wird über die Tabelle media hergestellt: Ihr Datenfeld value entspricht
dem Datenfeld Location der Tabelle VidPVideo.
4.4.3 Videoserver
Da vom Video Foundation-DataBlade eine generische Schnittstelle zu verschiedenen
Speichermedien bereitgestellt wird, sind für die Integration eines Videoservers keine
besonderen Maßnahmen nötig.
68
4.5 I MPLEMENTIERUNG DER D ATA B LADE F UNKTIONEN
4.5 Implementierung der DataBlade-Funktionen
4.5.1 Generelles Schema der DataBlade-Funktionen
Mit Ausnahme der Funktion MPEGcreateVideo, deren Implementierung im Kapitel
„4.5.3 MPEGcreateVideo“ vorgestellt wird, weist der Ablauf aller DataBladeFunktionen eine Reihe von Gemeinsamkeiten für alle Funktionen auf, die im folgenden
aufgezeigt werden.
Zunächst sind einige Initialisierungen nötig:
• Erzeugen einer Instanz der Klasse IUSaccess durch Aufruf ihres Konstruktors
mit einem Parameter vom Typ mi_bitvarying*. Daher haben alle Funktionen
des MPEG-DataBlades ein Argument diesen Typs.
• Erzeugen einer Instanz der Klasse BitStream durch Aufruf ihres Konstruktors
mit der Referenz auf die im vorigen Schritt erzeugte Klasse IUSaccess als
Parameter
• Erzeugen einer Instanz der Klasse VideoStream durch Aufruf ihres Konstruktors
mit der Referenz auf die im vorigen Schritt erzeugte Klasse BitStream als
Parameter
Danach muß die Methode parse() der Klasse VideoStream aufgerufen werden,
damit die MPEG-Library die gewünschten Daten liefern kann. Alternativ kann durch
Aufruf der Methode read() der Klasse VideoStream auch der Parse Tree geladen
werden.
Anschließend kann entweder direkt eine Funktion der MPEG-Library aufgerufen
werden, die die verlangten Daten liefert, oder es ist vorher eine Navigation im Parse
Tree nötig. Ein Beispiel einer solchen Navigation findet sich im Anhang B:
Implementierung der DataBlade-Funktionen.
Falls dies für das aktuelle Video noch nicht geschehen ist, kann noch der Parse Tree
durch Aufruf der Methode write() der Klasse VideoStream geschrieben werden.
Zuletzt müssen noch die erzeugten Instanzen der drei Klassen VideoStream,
BitStream und IUSaccess vernichtet werden. Insgesamt ergibt sich damit der
folgende Code, der sich in allen Funktionen des MPEG-DataBlades wiederfindet (dabei
ist loc ein Argument der Funktion vom Typ mi_bitvarying*):
{
IUSaccess *ius;
BitStream *bits;
69
4 R EALISIERUNG
VideoStream *vs;
int verbose_level=1; //SEQUENCE_LAYER
// open file
ius=new IUSaccess(loc, MED_READ | MED_WRITE | MED_SEEK);
// create BitStream and VideoStream
bits=new BitStream(ius);
vs=new VideoStream(bits, verbose_level);
// build parse-tree
vs->parse();
// get data
// ...
// clean up
delete vs;
delete bits;
delete ius;
}
4.5.2 Deklaration in SQL
Die in C/C++ geschriebenen DataBlade-Funktionen müssen einzeln durch ein SQLStatement deklariert werden. Als Beispiel dient wieder die Funktion
MPEGgetStreamMode:
create function MPEGgetStreamMode(MedLoc)
returning lvarchar
with (class="mpeg")
external name "/home/mierse/MPEGLibSTL/MPEGvideo/lib/
libMPEGvideo.so(MPEGgetStreamMode)"
language C
end function;
Die fertige DataBlade-Funktion kann mit (objektrelationalem) SQL aufgerufen werden:
select MPEGgetStreamMode(value) from media where
title='CTHead';
4.5.3 MPEGcreateVideo
Um ein neues Video für die Bearbeitung mit dem MPEG-DataBlade vorzubereiten, sind
die folgenden Schritte notwendig:
• Kopieren des Videos auf das Speichermedium, das über die Schnittstelle des
Video Foundation-DataBlades zur Verfügung gestellt wird (siehe Kapitel „4.4
Integration der bereits existierenden Module“)
70
4.5 I MPLEMENTIERUNG DER D ATA B LADE F UNKTIONEN
• Erzeugen eines Eintrags in der Tabelle media (siehe Kapitel „4.4 Integration
der bereits existierenden Module“)
• Erzeugen und Schreiben des persistenten Parse Trees (siehe Kapitel „4.5.1
Generelles Schema der DataBlade-Funktionen“). Dabei wird auch das Datenfeld
parsetree_filename der Tabelle media geschrieben.
Die Funktion MPEGcreateVideo, deren Signatur im Kapitel „3.2.2 Zweite
Alternative: Funktionale Sicht“ vorgestellt wird, führt diese Schritte durch.
71
5 Evaluierung
Um einen ersten Eindruck von einer Softwarekomponente wie einer API oder einem
DataBlade zu vermitteln und die Einarbeitung zu erleichtern, sind Beispielanwendungen
äußerst hilfreich. Gleichzeitig können solche Anwendungen der Evaluierung dienen. So
wurde auch für das MPEG-DataBlade eine Demonstrationsanwendung entwickelt.
Um dabei die Plattformunabhängigkeit zu wahren und der immer weiter wachsenden
Bedeutung des Internet Rechnung zu tragen, wurde die Demonstrationsanwendung
Web-basiert entworfen. Dabei war die Verfügbarkeit des Web-DataBlade von
besonderem Vorteil, das deswegen im folgenden kurz vorgestellt werden soll.
5.1 Das Web-DataBlade
Das Web-DataBlade für den Informix Dynamic Server dient der dynamischen
Generierung von HTML-Seite aufbauend aus Datenmaterial aus der Datenbank. Daten,
die von Funktionen eines DataBlades geliefert werden, lassen sich ebenfalls mit dem
Web-DataBlade darstellen. Somit ist es eine ideale Basis für die
Demonstrationsanwendung eines DataBlade.
Für die dynamische Generierung werden spezielle HTML-Tags definiert, die die direkte
Einbettung von SQL-Kommandos in den HTML-Code erlauben. Wie Abbildung 24
verdeutlicht, werden diese SQL-Kommandos durch eine spezielle Komponente, den
WebDriver, behandelt. Das von dem Datenbanksystem gelieferte Ergebnis der SQLAnfrage wird durch die WebExplode-Funktion des Web-DataBlades in den HTMLCode integriert, indem der spezielle Tag textuell ersetzt wird. Die daraus resultierende
dynamisch generierte HTML-Seite wird dann zur Darstellung an den Webserver
weitergereicht.
73
5 E VALUIERUNG
WWW-Server
Web.conf
Anfrage mit
CGI-Umgebung
WebDriver
SQL-Anweisung
(adressiert Dokument)
HTML-Dokument mit
dynamischem Inhalt
Dynamic Server Datenbank
Dokumente mit
eingebetteten
SQL-Anweisungen
Web DataBlade
WebExplode-Funktion
Abbildung 24: Die Architektur des Web-DataBlades
5.2 Die Demonstrationsanwendung
Die Demonstrationsanwendung ist zum Zeitpunkt der Erstellung dieser Arbeit unter
der
URL
http://www.darmstadt.gmd.de/~mierse/mpeg/webdriver?MIval=start
erreichbar. Hinweise zu ihrer Installation finden sich im „Anhang D: Installation“.
74
5.2 D IE D EMONSTRATIONSANWENDUNG
5.2.1 Ablauf der Demonstration
Nach Aufruf der oben genannten URL mit einem Browser Ihrer Wahl erscheint
zunächst der in der Abbildung 25 dargestellte Startbildschirm.
Abbildung 25: Startbildschirm der Demonstrationsanwendung zum MPEGDataBlade
Nach dem Lesen einiger einleitender Bemerkungen kann der Benutzer eines der im
System verfügbaren Videos aus der dargebotenen Liste auswählen. Auf diese Videos
wird vom Dynamic Server aus über das Video Foundation-DataBlade zugegriffen.
Nach einem Mausklick auf den OK-Button erscheint der Bildschirm aus Abbildung 26.
75
5 E VALUIERUNG
Abbildung 26: Der zweite Bildschirm der Demonstrationsanwendung zum
MPEG-DataBlade
Der zweite Bildschirm zeigt nähere Informationen über das zuvor ausgewählte Video
wie den Titel und eine kurze textuelle Beschreibung. Im oberen Bereich beinhaltet der
zweite Bildschirm auch alle Elemente des Startbildschirmes. So kann der Benutzer auch
erneut ein anderes Video auswählen.
Durch Anklicken des Buttons „Display Information“ gelangt der Benutzer zum dritten
Bildschirm, den die Abbildung 27 zeigt.
76
5.2 D IE D EMONSTRATIONSANWENDUNG
Abbildung 27: Der dritte Bildschirm der Demonstrationsanwendung zum
MPEG-DataBlade
Dieser dritte Bildschirm zeigt strukturelle Metadaten wie die Anzahl der Einzelbilder
und die Frameorder des ausgewählten MPEG-Videos, die durch den Aufruf von
Funktionen des MPEG-DataBlades gewonnen wurden.
Mit einem Klick auf den Button „Select video“ gelangt der Benutzer zum
Startbildschirm zurück, wo er ein anderes Video auswählen kann.
77
6 Ausblick
Für die Zukunft sind noch einige Erweiterungen und Ergänzungen des MPEGDataBlades denkbar.
Zur Zeit werden als Komprimierungsstandards nur MPEG 1 und MPEG 2 unterstützt.
Wünschenswert wäre eine Erweiterung der MPEG-Library auf MPEG 4 und 7 sowie
auf weitere Standards.
Wie im Kapitel „3.1 Entwurfsansatz“ erwähnt, ist das MPEG-DataBlade ein low levelDataBlade. Für digitalen Videoschnitt, Adaption, Watermarking usw. können eigene
DataBlades entwickelt werden, die auf dem MPEG-DataBlade aufbauen.
Auch die Fähigkeit der MPEG-Library, Einzelbilder zu dekodieren und zu speichern,
wird bis jetzt nicht ausgenutzt.
Schließlich könnte noch die im Kapitel „4.3.4 Parse Tree“ erwähnte Klasse
PersistParseTree implementiert werden.
79
Anhang A: Die Klasse IDSaccess
/*
IDSaccess.h
Unbuffered IO, needed by BitStream,
derived from RandomAccessIO
Provides the access functions from the storage interface
of the Video Foundation DataBlade
*/
#ifndef IDS_ACCESS
#define IDS_ACCESS
#include <mi.h>
#include <exceptions.h>
#include <RandomAccessIO.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
class IDSaccess : public RandomAccessIO
{
public:
void *operator new(size_t s);
void operator delete(void *p, size_t s);
// constructor
IDSaccess(mi_bitvarying *medloc, mi_integer flags)
throw (IOerror);
// destructor
virtual ~IDSaccess() throw (IOerror);
// implement inherited Interface:
virtual int read(void* buffer, int size)
throw (IOerror);
virtual int write(void* buffer, int size)
throw (IOerror);
virtual int seek(int offset, int whence)
throw (IOerror);
// whence ={ POS_SET, POS_CUR, POS_END }
// returns the new position
virtual int getpos() throw (IOerror);
81
A NHANG A: D IE K LASSE IDS ACCESS
// returns the current position
private:
int filedes;
// our descriptor
MI_CONNECTION* conn;
// function descriptors from the Video Foundation
// DataBlade
MI_FUNC_DESC* f_open;
MI_FUNC_DESC* f_close;
MI_FUNC_DESC* f_read;
MI_FUNC_DESC* f_write;
MI_FUNC_DESC* f_seek;
MI_FUNC_DESC* f_tell;
MI_DATUM medLocFd;
}; // end
#endif
82
Anhang B: Implementierung der
DataBlade-Funktionen
Stellvertretend für alle Funktionen wird hier der Code der Implementierung
ausgewählter Beispielfunktionen vorgestellt. Die Beispiele schließen an die im Kapitel
„3.2.2 Zweite Alternative: Funktionale Sicht“ aufgeführten Funktionen an; die Funktion
MPEGgetStreamMode wurde hier durch MPEGgetNumOfFrames ersetzt. Eine
vollständige Auflistung aller Funktionen findet sich in „Anhang C: “.
Die Funktion MPEGgetNumOfFrames stellt ein einfaches Beispiel dar (vgl. auch das
Codebeispiel im Kapitel „4.5.1 Generelles Schema der DataBlade-Funktionen“):
/**********************
* MPEGgetNumOfFrames *
**********************/
extern "C" mi_integer MPEGgetNumOfFrames(mi_bitvarying*
loc, MI_FPARAM *fp)
{
IDSaccess *ids;
BitStream *bits;
VideoStream *vs;
int verbose_level=1; //SEQUENCE_LAYER
int iresult;
// open file
ids=new IDSaccess(loc, MED_READ | MED_WRITE | MED_SEEK);
// create BitStream and VideoStream
bits=new BitStream(ids);
vs=new VideoStream(bits, verbose_level);
// build parse-tree
vs->parse();
// get data
iresult=vs->getNumOfFrames();
// clean up
delete vs;
delete bits;
delete ids;
return iresult;
} // end MPEGgetNumOfFrames
83
A NHANG B: I MPLEMENTIERUNG DER D ATA B LADE F UNKTIONEN
Die
folgende
Routine MPEGgetPictCodType
unterscheidet sich von
MPEGgetNumOfFrames dadurch, daß sie ein zusätzliches Argument erwartet und
dieses weiterreicht:
/**********************
* MPEGgetPictCodType *
**********************/
extern "C" mi_integer MPEGgetPictCodType(mi_bitvarying*
loc, mi_integer framenumber, MI_FPARAM *fp)
{
/* picture coding types:
#define I_TYPE 1
#define P_TYPE 2
#define B_TYPE 3
#define D_TYPE 4 */
IDSaccess *ids;
BitStream *bits;
VideoStream *vs;
int verbose_level=1; //SEQUENCE_LAYER
int iresult;
// open file
ids=new IDSaccess(loc, MED_READ | MED_WRITE | MED_SEEK);
// create BitStream and VideoStream
bits=new BitStream(ids);
vs=new VideoStream(bits, verbose_level);
// build parse-tree
vs->parse();
// get data
iresult=vs->getPictureCodingType(framenumber);
// clean up
delete vs;
delete bits;
delete ids;
return iresult;
} // end MPEGgetPictCodType
MPEGgetFrameorder steht stellvertretend für diejenigen Funktionen, die ein
Navigieren im Parse Tree erfordern:
/*********************
* MPEGgetFrameorder *
*********************/
extern "C" mi_lvarchar* MPEGgetFrameorder(mi_bitvarying*
loc, MI_FPARAM *fp)
84
A NHANG B: I MPLEMENTIERUNG DER
D ATA B LADE -F UNKTIONEN
{
IDSaccess *ids;
BitStream *bits;
VideoStream *vs;
int verbose_level=1; //SEQUENCE_LAYER
char *result=(char *) mi_alloc(sizeof(char)*50);
mi_lvarchar *miresult;
// open file
ids=new IDSaccess(loc, MED_READ | MED_WRITE | MED_SEEK);
// create BitStream and VideoStream
bits=new BitStream(ids);
vs=new VideoStream(bits, verbose_level);
// build parse-tree
vs->parse();
// get data
strcpy(result, mi_lvarchar_to_string(print_frameorder
(vs)));
// clean up
delete vs;
delete bits;
delete ids;
miresult=mi_string_to_lvarchar(result);
mi_free(result);
return miresult;
} // end MPEGgetFrameorder
Von
MPEGgetFrameorder werden direkt oder
print_frameorder und print_pict aufgerufen:
indirekt
die
Funktionen
/********************
* print_frameorder *
********************/
mi_lvarchar *print_frameorder(VideoStream* vs)
{
PictureNode *pict;
int index;
char *result=(char *) mi_alloc(sizeof(char)*50000);
mi_lvarchar *miresult;
// for all pictures
for(index = 0; index < vs ->frameIndex.size() ; index++ )
{
pict = vs ->frameIndex[index];
if(index==0)
85
A NHANG B: I MPLEMENTIERUNG DER D ATA B LADE F UNKTIONEN
strcpy(result, mi_lvarchar_to_string(
print_pict(index, pict)));
else
strcat(result, mi_lvarchar_to_string(
print_pict(index, pict)));
} // end for
miresult=mi_string_to_lvarchar(result);
mi_free(result);
return miresult;
} // end print_frameorder
/**************
* print_pict *
**************
mi_lvarchar *print_pict(int index, PictureNode *pict)
{
char *result=(char *) mi_alloc(sizeof(char)*50000);
char *resulttemp=(char *) mi_alloc(sizeof(char)*1024);
mi_lvarchar *miresult;
if (pict ==NULL) return(mi_string_to_lvarchar("error"));
switch(pict -> picture_coding_type) {
case I_TYPE:
strcpy(result, "I ");
break;
case P_TYPE:
strcpy(result, "P ");
break;
case B_TYPE:
strcpy(result, "B ");
break;
case D_TYPE:
strcpy(result, "D ");
break;
default:
printf(": ERROR unknown coding type \n" );
return(mi_string_to_lvarchar("error"));
} // end switch type
miresult=mi_string_to_lvarchar(result);
mi_free(result);
mi_free(resulttemp);
return miresult;
}
86
Anhang C: Funktionen des MPEGDataBlades
In diesem Anhang werden alle Funktionen des MPEG-DataBlades aufgeführt. Zur
Erklärung der einzelnen Werte siehe [MPEG1VID] und [MPEG2VID].
MPEGcreateVideo dient zum Einlesen eines neuen Videos:
MPEGcreateVideo(lvarchar, lvarchar, lvarchar, lvarchar)
Die folgenden Funktionen liefern die Daten aus den Stream- und Nodes-Klassen der
MPEG-Library:
MPEGgetStreamMode (MedLoc)
returns lvarchar
MPEGgetNumOfFrames (MedLoc)
returns lvarchar
MPEGgetPictCodType (MedLoc, integer)
returns integer
-- Argument außer MedLoc: framenumber
MPEGgetFrameorder (MedLoc)
returns lvarchar
MPEGextraBitInfo
(MedLoc)
returns integer
MPEGFrameHeight
(MedLoc)
returns integer
MPEGFrameWidth
(MedLoc)
returns integer
MPEGBitRate
(MedLoc)
returns double
MPEGFrameRate
(MedLoc)
returns double
MPEGisMPEG2
(MedLoc)
returns integer
MPEGChromaFormat
(MedLoc)
returns integer
MPEGPictStructure (MedLoc, integer)
returns integer
-- Argument außer MedLoc: framenumber
MPEGMacroblockType (MedLoc, integer, integer, integer)
returns integer
-- Argumente außer MedLoc: picture_coding_type,
-- scalable_mode, pict_scal
MPEGMotionCode
(MedLoc)
returns integer
MPEGDmvector
(MedLoc)
returns integer
MPEGCodedBlockPatt (MedLoc)
returns integer
MPEGMcblockAddrInc (MedLoc)
returns integer
MPEGLumaDCDctDif
(MedLoc)
returns integer
MPEGChromaDCDctDif (MedLoc)
returns integer
MPEGBitsFrameNo
(MedLoc, integer)
returns integer
-- Argument außer MedLoc: framenumber
MPEGSequencFrameNo (MedLoc, integer)
returns integer
-- Argument außer MedLoc: framenumber
Die folgenden Funktionen liefern die Daten aus den Extensions-Klassen der MPEGLibrary:
87
A NHANG C: F UNKTIONEN DES MPEGD ATA B LADES
-- non-normative variables derived from normative elements
MPEGChromaWidth
(MedLoc)
returns integer
MPEGChromaHeight
(MedLoc)
returns integer
MPEGBlockCount
(MedLoc)
returns integer
MPEGSecondField
(MedLoc)
returns integer
MPEGprofile
(MedLoc)
returns integer
MPEGlevel
(MedLoc)
returns integer
-- normative derived variables (as per ISO/IEC 13818-2)
MPEGMBWidth
(MedLoc)
returns integer
MPEGMBHeight
(MedLoc)
returns integer
-- headers
-- ISO/IEC 13818-2 section 6.2.2.1: sequence_header
-- Argument außer MedLoc: sequencenumber
MPEGAspectRatioInf (MedLoc, integer)
returns integer
MPEGFrameRateCode (MedLoc, integer)
returns integer
MPEGBitRateValue
(MedLoc, integer)
returns integer
-- ISO/IEC 13818-2 section 6.2.2.3: sequence_extension
-- Argument außer MedLoc: sequencenumber
MPEGProfLevelIndic (MedLoc, integer)
returns integer
MPEGProgressiveSeq (MedLoc, integer)
returns integer
MPEGLowDelay
(MedLoc, integer)
returns integer
MPEGFrameRateExt
(MedLoc, integer)
returns integer
MPEGFrameRateExtD (MedLoc, integer)
returns integer
-- ISO/IEC 13818-2 section 6.2.2.4: sequence_display
-- _extension
-- Argument außer MedLoc: sequencenumber
MPEGMatrixCoeffics (MedLoc, integer)
returns integer
-- ISO/IEC 13818-2 section 6.2.3: picture_header
-- Argument außer MedLoc: framenumber
MPEGTempReference (MedLoc, integer)
returns integer
MPEGFullPelFwdVec (MedLoc, integer)
returns integer
MPEGForwardFCode
(MedLoc, integer)
returns integer
MPEGFullPelBwdVec (MedLoc, integer)
returns integer
MPEGBackwardFCode (MedLoc, integer)
returns integer
-- ISO/IEC 13818-2 section 6.2.3.1: picture_coding
-- _extension header
-- Argument außer MedLoc: framenumber
MPEGFCode1
(MedLoc, integer)
returns integer
MPEGFCode2
(MedLoc, integer)
returns integer
MPEGIntraDCPrecis (MedLoc, integer)
returns integer
MPEGTopFieldFirst (MedLoc, integer)
returns integer
MPEGFramePredDCT
(MedLoc, integer)
returns integer
MPEGConcMotionVec (MedLoc, integer)
returns integer
MPEGIntraVLCFormat (MedLoc, integer)
returns integer
MPEGProgressFrame (MedLoc, integer)
returns integer
88
A NHANG C: F UNKTIONEN DES MPEGD ATA B LADES
-- ISO/IEC 13818-2 section 6.2.2.5: sequence_scalable
-- _extension header
-- Argument außer MedLoc: sequencenumber
MPEGLayerID
(MedLoc, integer)
returns integer
MPEGLowLayPHorSize (MedLoc, integer)
returns integer
MPEGLowLayPVerSize (MedLoc, integer)
returns integer
MPEGHorSubsFactorM (MedLoc, integer)
returns integer
MPEGHorSubsFactorN (MedLoc, integer)
returns integer
MPEGVerSubsFactorM (MedLoc, integer)
returns integer
MPEGVerSubsFactorN (MedLoc, integer)
returns integer
-- ISO/IEC 13818-2 section 6.2.3.5: picture_spatial
-- _scalable_extension header
-- Argument außer MedLoc: framenumber
MPEGLowLayTempRef (MedLoc, integer)
returns integer
MPEGLowLayHorOffs (MedLoc, integer)
returns integer
MPEGLowLayVerOffs (MedLoc, integer)
returns integer
MPEGSpatTempWCTInd (MedLoc, integer)
returns integer
MPEGLowLayProgFram (MedLoc, integer)
returns integer
MPEGLowLayDFldSel (MedLoc, integer)
returns integer
-- layer specific variables (needed for SNR and
-- scalability)
-- sequence header and quant_matrix_extension
-- Argument außer MedLoc: sequencenumber
MPEGIntQntMatr
(MedLoc, integer)
returns
MPEGNIntQntMatr
(MedLoc, integer)
returns
MPEGCIntQntMatr
(MedLoc, integer)
returns
MPEGCNIntQntMatr
(MedLoc, integer)
returns
integer
integer
integer
integer
MPEGLdIntQntMatr
(MedLoc,
MPEGLdNIntQntMatr (MedLoc,
MPEGLdCIntQntMatr (MedLoc,
MPEGLdCNIntQntMatr (MedLoc,
integer
integer
integer
integer
integer)
integer)
integer)
integer)
returns
returns
returns
returns
DP
-- sequence scalable extension
-- Argument außer MedLoc: sequencenumber
MPEGScalableMode
(MedLoc, integer)
returns integer
-- picture coding
-- Argument außer
MPEGQScaleType
MPEGAlternateScan
extension
MedLoc: framenumber
(MedLoc, integer)
(MedLoc, integer)
returns integer
returns integer
-- picture spatial scalable extension
-- Argument außer MedLoc: framenumber
MPEGPictScal (MedLoc, integer)
returns integer
-- slice/macroblock
-- Argumente außer MedLoc: framenumber, slicenumber
MPEGQuantizerScale (MedLoc, integer, integer)
returns integer
89
A NHANG C: F UNKTIONEN DES MPEGD ATA B LADES
MPEGIntraSlice
(MedLoc, integer, integer)
returns integer
90
Anhang D: Installation
Installation des MPEG-DataBlades
Die Installation des MPEG-DataBlades setzt einen vollständig eingerichteten Informix
Dynamic Server der Version 9.14 unter Unix mit einem virtuellen Prozessor, dessen
Klasse "mpeg" benannt ist, voraus. Anschließend ist das Video Foundation-DataBlade
in einer Datenbank zu registrieren. Die Datei libMPEGvideo.so, das kompilierte
MPEG-DataBlade, wird an eine geeignete Stelle im Unix-Dateisystem kopiert.
Anschließend muß unter Unix mit dem Tool DB-Access, das mit dem Dynamic Server
mitgeliefert wird, das folgende SQL-Skript MPEGDataBlade.sql ausgeführt werden;
die Pfadnamen sind anzupassen:
-- VSI_FILE eintragen
-- Videoserver konfigurieren
insert into Medvsiregister values
(MedStorage('VSI_FILE',3,NULL,NULL,NULL,'/var/tmp /ius
_mierse/videoserver/',NULL,NULL));
insert into medvsi_file values('/var/tmp/ius_mierse
/videoserver/',0);
-- Tabelle für Medien
create table media(title varchar(50), author varchar(50),
description varchar(250), value MedLoc not NULL, parsetree
_filename varchar(250));
-- von Client auf Videoserver kopieren
-- nur mit DBACCESS (wegen Client-Dateisystem)
insert into media values ('Birdwalk', 'nonfamous', 'A
funny bird walking around', Copy('VSI_CLIENT:/home/mierse
/mpg/birdwalk.mpg',Storage('VSI_FILE#3:')));
insert into media values ('CTHead', 'Unk N. Own', 'An
animated view inside a human being´s head', Copy('VSI
_CLIENT:/home/mierse/mpg/CTHead55.mpg',Storage('VSI_FILE#3:
')));
insert into media values ('Random', 'Alan Smith', 'Dices
flying around', Copy('VSI_CLIENT:/home/mierse/mpg/random
.mpg',Storage('VSI_FILE#3:')));
-- Funktionen
create function bladedemoVF(MedLoc) returning lvarchar
91
A NHANG D: I NSTALLATION
with (class="mpeg")
external name
"/home/mierse/MPEGLibSTL/MPEGvideo/lib/libMPEGvideo.so(blad
edemoVF)"
language C
end function;
create function MPEGgetPictCodType(MedLoc, integer)
returning integer
with (class="mpeg")
external name
"/home/mierse/MPEGLibSTL/MPEGvideo/lib/libMPEGvideo.so(MPEG
getPictCodType)"
language C
end function;
create function MPEGgetStreamMode(MedLoc) returning
lvarchar
with (class="mpeg")
external name
"/home/mierse/MPEGLibSTL/MPEGvideo/lib/libMPEGvideo.so(MPEG
getStreamMode)"
language C
end function;
create function MPEGgetNumOfFrames(MedLoc) returning
integer
with (class="mpeg")
external name
"/home/mierse/MPEGLibSTL/MPEGvideo/lib/libMPEGvideo.so(MPEG
getNumOfFrames)"
language C
end function;
create function MPEGgetFrameorder(MedLoc) returning
lvarchar
with (class="mpeg")
external name
"/home/mierse/MPEGLibSTL/MPEGvideo/lib/libMPEGvideo.so(MPEG
getFrameorder)"
language C
end function;
[usw.]
Aus Platzgründen wird das Skript nur bis zu dieser Stelle wiedergegeben; die SQLDeklarationen für alle weiteren Funktionen (siehe „Anhang C: Funktionen des MPEGDataBlades“) sind analog aufgebaut.
92
A NHANG D: I NSTALLATION
Installation der Demonstrationsanwendung
Für die Installation der Demonstrationsanwendung muß das MPEG-DataBlade
installiert sein. Zusätzlich zu den Anforderungen des MPEG-DataBlades muß noch das
Web-DataBlade registriert werden. Es empfiehlt sich, dabei den Application Page
Builder mit zu installieren.
Im Application Page Builder wird dann ein neues Projekt mit Owner default angelegt.
Die beiden Dateien start.html und display_info.html können danach über
einen beliebigen Editor mit Copy and Paste über den Application Page Builder in die
Datenbank geschrieben werden.
Die Demonstrationsanwendung kann anschließend mit einem Browser wie im Kapitel
„5.2 Die Demonstrationsanwendung“ beschrieben aufgerufen werden.
93
Anhang E: Glossar
BLOB
Binary Large Object: Ein Datentyp in der Datenbank, der binäre Daten
mit hohem Speicherbedarf beinhaltet, z. B. Bilder
HTML
Hypertext Markup Language: Eine Seitenbeschreibungssprache für
Hypertext Dokumente. HTML ist die Sprache des World Wide Web.
IDS
Informix Dynamic Server: Ein objektrelationales DBMS
ISO
International Standardization Organisation: Organisation zum Schaffen
von internationalen Standards
MPEG
Motion Picture Expert Group: Eine Reihe von ↑ISO-Standards für
digitales Video
SQL
Structured Query Language: Die Abfragesprache für relationale
Datenbanksysteme
VII
Virtual Index Interface: Sekundärzugriff
VTI
Virtual Table Interface: Primärzugriff
95
Anhang F: Abbildungsverzeichnis
Abbildung 1: Mehrere Anwendungen arbeiten auf dem selben Datenbestand ................13
Abbildung 2: Mehrere Anwendungen greifen auf eine Datenbank zu...............................15
Abbildung 3: Die Klassifizierung von Datenbankanwendungen nach [Stonebraker] .....19
Abbildung 4: Prozeßdiagramm des Dynamic Server............................................................23
Abbildung 5: Die drei Frametypen von MPEG 1-Videos...................................................30
Abbildung 6: Die MPEG 1-Hierarchie...................................................................................31
Abbildung 7: Architektur des Video Foundation-DataBlades ............................................35
Abbildung 8: Entity-Relationship-Diagramm der wichtigsten Tabellen des Video
Foundation-DataBlades ....................................................................................36
Abbildung 9: Stratas...................................................................................................................37
Abbildung 10: Sichtbare Überlagerung mit einem Watermark. Links das Watermark,
rechts die Überlagerung. ...................................................................................41
Abbildung 11: Bild 1 und 150 einer Kamerafahrt.................................................................42
Abbildung 12: Panoramabild....................................................................................................42
Abbildung 13: Einzelbilder aus der Fernsehübertragung eines Fußballspiels...................43
Abbildung 14: Panoramabild....................................................................................................44
Abbildung 15: Panoramabild mit Ball.....................................................................................44
Abbildung 16: Panoramabild mit Ball und Spielern..............................................................45
Abbildung 17: Der Parse Tree .................................................................................................59
Abbildung 18: Auszug aus dem Klassendiagramm der MPEG-Library............................60
Abbildung 19: Die Architektur des MPEG-DataBlades ......................................................61
Abbildung 20: Einfügen und Parsen eines Videos................................................................62
Abbildung 21: Aufruf einer Funktion des MPEG-DataBlades...........................................63
Abbildung 22: Die Klasse PersistParseTree...........................................................................66
Abbildung 23: Die Klasse IDSaccess......................................................................................67
Abbildung 24: Die Architektur des Web-DataBlades...........................................................74
Abbildung 25: Startbildschirm der Demonstrationsanwendung zum MPEG-DataBlade
..............................................................................................................................75
Abbildung 26: Der zweite Bildschirm der Demonstrationsanwendung zum MPEGDataBlade............................................................................................................76
Abbildung 27: Der dritte Bildschirm der Demonstrationsanwendung zum MPEGDataBlade............................................................................................................77
97
Anhang G: Tabellenverzeichnis
Tabelle 1: Volumen und Datenrate verschiedener Medien .................................................27
Tabelle 2: Volumen und Datenrate verschiedener Speicher................................................27
Tabelle 3: Datenrate verschiedener Netzwerke .....................................................................28
99
Anhang H: Literatur
[Adaption]
Silvia Hollfelder, Achim Kraiss, Thomas C. Rakow: A ClientControlled Adaption Framework for Multimedia Database Systems;
1997, European Workshop on Interactive Distributed Multimedia
Systems and Telecommunication Services (IDMS’97), Darmstadt
[CMS]
Silvia Hollfelder, Florian Schmidt, Matthias Hemmje, Karl Aberer,
Arnd Steinmetz: Transparent Integration of Continuous Media Support
into a Multimedia DBMS; 1997, Arbeitspapiere der GMD, Sankt
Augustin
[Codd]
E. F. Codd: A Relational Model for Large Shared Data Banks; 1970,
Communications of the ACM, Vol. 13, No. 6, S. 377-387
[DB1]
Alejandro Buchmann: Datenbanksysteme 1; Skript zur gleichnamigen
Vorlesung an der Technischen Hochschule Darmstadt
[DBDK]
DataBlade Developer's Kit, User’s Guide; 1997, Informix Press, Menlo
Park, Kalifornien
[Färber]
Frank Färber: Digitales Video, Formate und Standards; 1997,
Seminarausarbeitung, http://www.darmstadt.gmd.de/mobile/courses
/digitalvideo/ss97/seminar/reports/frank.färber/index.htm
[IBM]
http://www.research.ibm.com/image_apps/wmsample.html
[ICE]
Matthias Malsy, Andreas Stenger: Konzeption eines MesseInformationssystems für die Messe Frankfurt GmbH; 1996,
Diplomarbeit, Fachhochschule Darmstadt
[IDS]
Getting Started with Informix-Universal Server; 1997, Informix Press,
Menlo Park, Kalifornien
[Lee]
Silvia Hollfelder, Hyo-Jun Lee: Data Abstractions for Multimedia
Database Systems; 1997, Arbeitspapiere der GMD, Sankt Augustin
[Malsy]
Matthias Malsy, Silvia Hollfelder, Arnd Steinmetz, Karl Aberer:
Unterstützung des strukturierten Zugriffs auf MPEG Videos in einem
101
A NHANG H: L ITERATUR
Multimedia-Datenbankmanagementsystem;
1998,
GMD
Forschungszentrum Informationstechnik GmbH, Darmstadt
–
[Manifesto]
Malcolm Atkinson, François Bancilhon, David de Witt, Klaus Dittrich,
Davbid Maier, Stanley Zdonik: The Object-Oriented Database System
Manifesto; 1989, Proc. OOD, Kyoto
[Melton]
Jim Melton: Object Technology and SQL: Adding Objects to a
Relational Language, in: Bulletin of the Technical Committee on Data
Engineering; 1994, Vol. 17 No. 4, IEEE Computer Society
[MMOODB]
K. H. Aberer: Multimediale und objektorientierte Datenbanken; Skript
zur gleichnamigen Vorlesung an der Technischen Universität
Darmstadt
[MPEG1SYS]
Information technology – Coding of moving pictures and associated
audio for digital storage media at up to about 1,5 Mbit/s – Part 1:
Systems; 1993, ISO/IEC 11172-1
[MPEG1VID] Information technology – Coding of moving pictures and associated
audio for digital storage media at up to about 1,5 Mbit/s – Part 2:
Video; 1993, ISO/IEC 11172-2
[MPEG2VID] Generic Coding of Moving Pictures and Associated Audio Information
– Part 2: Video (MPEG-2); 1994, ISO/IEC 13818-2
[Risse]
Thomas Risse: Entwurf und Implementierung einer VRML-Bibliothek
für ein objektrelationales Datenbanksystem auf Basis des VRML-2.0Standards; 1997, Diplomarbeit, Technische Universität Darmstadt
[Schmidt]
Florian Schmidt: Integration kontinuierlicher Daten in ein
objektrelationales Datenbankmanagementsystem; 1997, Diplomarbeit,
Technische Universität Darmstadt
[Stonebraker]
Michael Stonebraker: Object-relational DBMSs: the next great wave;
1996, Morgan Kaufmann Publishers, Inc., San Francisco
[Subrahmanian] V. S. Subrahmanian: Principles of Multimedia Database Systems; 1997,
Morgan Kaufmann Publishers, Inc., San Francisco
[Uli]
Ulrich Müller: Entwurf und Implementierung eines generischen
Mechanismus zur dynamischen Einbettung von multimedialen Daten
in VRML-Szenen auf der Basis eines objektrelationalen DBMS; 1998,
Diplomarbeit, Technische Universität Darmstadt
102
A NHANG H: L ITERATUR
[VFDB]
Video Foundation DataBlade Module, User’s Guide; 1997, Informix
Press, Menlo Park, Kalifornien
[VII]
Informix
Developer
Network
unter
der
URL
http://www.informix.com/idn-secure/DataBlade/WebPages
/dbdevframe.htm: Secondary Access Methods: An overview of
secondary access methods that introduces operator classes and VII.
[VTI]
Informix
Developer
Network
unter
der
URL
http://www.informix.com/idn-secure/DataBlade/WebPages/
dbdevframe.htm: Demystifying VTI: An overview of primary access
methods using the Virtual Table Interface (VTI)
[Yow]
D. Yow, B.L. Yeo, M. M. Yeung, B. Liu: Analysis and Presentation of
Soccer Highlights from Digital Video; 1995, Proceedings of the Second
Asian Conference on Computer Vision (ACCV '95)
103
Herunterladen