Paper

Transcription

Paper
T ECHNISCHEU NIVERSITÄTI LMENAU
Fakultät für Informatik und Automatisierung
Institut für Praktische Informatik
Fachgebiet Telematik
DIPLOMARBEIT ZUR ERLANGUNG DES
AKADEMISCHEN GRADES DIPLOMINFORMATIKER
Thema:
Kodierverfahren für die verteilte Übertragung QOSsensitiver Datenströme über hochdynamische Netzwerke
Verfasser:
Holger Kärst
geboren am:
01.07.1976
Studiengang:
Informatik
Schwerpunkt:
Telematik
verantwortlicher Hochschullehrer:
Prof. Dr.-Ing. Dietrich Reschke
betreuender wiss. Mitarbeiter:
Dipl.-Inf. Thorsten Strufe
Beginn der Arbeit:
03.05.2004
Abgabe der Arbeit:
03.11.2004
Inv.Nr:
2004-11-03/096/IN99/2253
Kurzfassung
Die Erweiterung des Informationsaustauschs mit multimedialen Elementen wird bei
aktuellen und zukünftigen Kommunikationsprozessen immer bedeutungsvoller. Durch
Fortschritte in der Video- und Audiokodierung sind Multimediaübertragungen in
verschiedenen Netzwerken möglich. Eine große Vielfalt existierender, kompakter, mobiler
Endgeräte ermöglicht die Realisierung einer überall verfügbaren, mobilen, multimedialen
Kommunikation. Die aktuellen mobilen Netzwerktechniken stellen Kapazitäten zur
Verfügung, die für die drahtlose Übertragung multimedialer Inhalte ausreichend sind.
Zukünftige mobile Kommunikationssysteme haben die Aufgabe, multimediale
Informationen einfach und effizient zwischen verschiedenen mobilen Endgeräten
austauschen zu können.
Das Ziel dieser Arbeit ist die Entwicklung eines Konzepts, das einen neuen Ansatz für die
Verteilung multimedialer Daten in hochdynamischen Netzwerken beschreibt. Über diesen
Ansatz soll ein effizientes multimediales Dienstangebot für heterogene Endgeräte
bereitgestellt und gleichzeitig eine kooperative Lastverteilung bei der Dienstbereitstellung
zwischen den Teilnehmern des Netzwerks ermöglicht werden. Ein ausgewähltes
Kodierverfahren liefert dabei die Grundlage für das Konzept.
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Inhaltsverzeichnis
1.
Einleitung ................................................................................................................. 1
1.1.
Ziel dieser Arbeit ....................................................................................................... 2
1.2.
Aufbau dieser Arbeit ................................................................................................. 2
2.
Vorbetrachtungen.................................................................................................... 3
2.1.
Netzwerktechnik........................................................................................................ 3
2.1.1.
AdHoc-Netzwerk................................................................................................... 3
2.1.2.
Vorteile von dynamischen Netzen gegenüber Netzen mit Infrastruktur ............... 5
2.2.
Multimediale Daten ................................................................................................... 5
2.2.1.
Digitalisierung analoger Signale ........................................................................... 5
2.2.2.
Eigenschaften digitalisierter Videosignale ............................................................ 6
2.2.3.
Eigenschaften digitalisierter Audiosignale............................................................ 8
2.2.4.
Notwendigkeit einer Komprimierung digitalisierter multimedialer Elemente...... 8
2.2.5.
Grundlagen der Komprimierung von Video- und Audiodaten.............................. 9
2.2.6.
Grundlagen für eine skalierbare Kodierung multimedialer Daten ...................... 15
3.
Anforderungsanalyse ............................................................................................ 16
3.1.
Analyse der speziellen Eigenschaften der Teilgebiete ............................................ 16
3.1.1.
Netzwerk.............................................................................................................. 16
3.1.2.
Multimediadaten.................................................................................................. 17
3.1.3.
Endgeräte............................................................................................................. 18
3.2.
Konkrete Anforderungen der Teilgebiete an das System........................................ 18
3.2.1.
Netzwerk.............................................................................................................. 18
3.2.2.
Multimediadaten.................................................................................................. 19
3.2.3.
Endgeräte............................................................................................................. 20
4.
Entwurf................................................................................................................... 21
4.1.
Netzwerkstruktur ..................................................................................................... 21
4.2.
Netzwerkknoten....................................................................................................... 21
4.3.
Verteilung ................................................................................................................ 21
5.
Spezifikation........................................................................................................... 23
5.1.
Hauptquelle.............................................................................................................. 23
5.1.1.
Aufnahmegeräte................................................................................................... 24
5.1.2.
Encoder................................................................................................................ 24
5.1.3.
Transformator ...................................................................................................... 24
5.1.4.
Absicherung vor Übertragungsfehlern ................................................................ 25
5.1.5.
Server................................................................................................................... 25
5.1.6.
Schnittstellen ....................................................................................................... 26
5.2.
Verteilerquelle ......................................................................................................... 27
Verfasser: Holger Kärst
i
Diplomarbeit
5.2.1.
5.2.2.
5.2.3.
5.2.4.
5.2.5.
5.2.6.
Inv.Nr.: 2004-11-03/096/IN99/2253
Wiedergabeeinheit ............................................................................................... 28
Client ................................................................................................................... 28
Bereitstellungspuffer ........................................................................................... 29
Puffermanager ..................................................................................................... 30
Server................................................................................................................... 31
Schnittstellen ....................................................................................................... 32
5.3.
Datenstruktur ........................................................................................................... 33
6.
Auswahl der Komponenten für die Implementierung ....................................... 34
6.1.
Untersuchung aktueller Standards zur Kodierung multimedialer Informationen ... 34
6.1.1.
H.261 ................................................................................................................... 34
6.1.2.
H.263 ................................................................................................................... 35
6.1.3.
Verifikation des MPEG1-Standards .................................................................... 35
6.1.4.
Verifikation des MPEG2-Standards .................................................................... 40
6.1.5.
Verifikation des MPEG4-Standards .................................................................... 57
6.2.
Untersuchung von Protokollen der Anwendungsschicht ........................................ 86
6.2.1.
Real Time Streaming Protokoll (RTSP).............................................................. 86
6.2.2.
Session Description Protocol (SDP).................................................................... 88
6.3.
Untersuchung von Protokollen der Transportschicht .............................................. 91
6.3.1.
Transport Control Protocol (TCP)....................................................................... 91
6.3.2.
User Datagram Protocol (UDP)........................................................................... 91
6.3.3.
Realtime Transmission Protocol (RTP)............................................................... 92
6.3.4.
Realtime Transmission Control Protocol (RTCP)............................................... 95
6.4.
Analyse einer Auswahl verfügbarer Encoder / Stream-Server................................ 98
6.4.1.
Microsoft Windows Media Server ...................................................................... 98
6.4.2.
Real Networks Helix Server ................................................................................ 99
6.4.3.
Apple Darwin Server ........................................................................................... 99
6.4.4.
DivX .................................................................................................................. 100
6.4.5.
XviD .................................................................................................................. 100
6.4.6.
Fraunhofer IIS MPEG4 Encoder / Stream-Server............................................. 101
6.4.7.
MPEGable Broadcaster ..................................................................................... 101
6.4.8.
MPEG4IP-MP4Live .......................................................................................... 102
6.4.9.
Fazit ................................................................................................................... 103
6.5.
Analyse einer Auswahl verfügbarer Decoder / Wiedergabeeinheiten................... 105
6.6.
Plattform für die Implementierung des Multisource-Streaming-Ansatzes............ 106
6.6.1.
Netzwerkstruktur ............................................................................................... 106
6.6.2.
Netzwerkknoten................................................................................................. 106
6.6.3.
Protokolle .......................................................................................................... 109
6.6.4.
Entwicklungsumgebung .................................................................................... 110
7.
Implementierung ................................................................................................. 111
7.1.
Hauptquelle............................................................................................................ 111
7.1.1.
MultisourceHq ................................................................................................... 111
7.1.2.
ClientHauptquelle.............................................................................................. 113
7.1.3.
ServerHauptquelle ............................................................................................. 114
Verfasser: Holger Kärst
ii
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
7.2.
Verteilerquelle ....................................................................................................... 118
7.2.1.
Multisource........................................................................................................ 118
7.2.2.
Client ................................................................................................................. 120
7.2.3.
Server................................................................................................................. 126
7.3.
Kernsystem ............................................................................................................ 126
7.3.1.
BufferManager................................................................................................... 126
7.3.2.
Buffer................................................................................................................. 128
7.3.3.
CircularQueue.................................................................................................... 128
7.3.4.
Streaming........................................................................................................... 132
7.3.5.
StreamRequest ................................................................................................... 136
7.3.6.
LinkmanagerClient ............................................................................................ 138
7.3.7.
LinkManagerServer ........................................................................................... 139
7.3.8.
RTPPacket ......................................................................................................... 139
7.3.9.
StreamManager.................................................................................................. 140
8.
Ergebnisse ............................................................................................................ 141
8.1.
Test der Ressourcenauslastung (single Source Streaming) ................................... 142
8.2.
Entfernungstest im drahtlosen Adhoc-Netzwerk (single Source Streaming)........ 144
8.3.
Entfernungstest mit multiplen Anfragen (single Source Streaming)..................... 146
8.4.
Entfernungstest im 3-stufigen Verteilersystem (single Source Streaming).......... 149
8.5.
Entfernungstest im 3-stufigen Verteilersystem (multi Source Streaming)............ 151
9.
Zusammenfassung ............................................................................................... 154
10.
Ausblick ................................................................................................................ 156
11.
Schlussbemerkung ............................................................................................... 157
12.
Anhang.................................................................................................................. 158
13.
Literaturverzeichnis ............................................................................................ 173
14.
Abkürzungen........................................................................................................ 175
Verfasser: Holger Kärst
iii
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Abbildungsverzeichnis
Abb. 1)
Adhoc-Netzwerk mit 7 Netzwerkknoten ............................................................ 3
Abb. 2)
Beispiel Adhoc Netzwerk im Endnutzerbereich ................................................ 4
Abb. 3)
Y/CR/CB Abtastschemata .................................................................................. 7
Abb. 4)
Grundlagen der Komprimierung von Videodaten (Referenz: [12]) ................... 9
Abb. 5)
Übliche Bildsequenz einer MPEG-GOP .......................................................... 11
Abb. 6)
MPEG1 Audio Enkodier- und Dekodierprozess (Ref: [17] S.490).................. 11
Abb. 7)
MPEG2 AAC-Coder (Ref: [17] S.492) ............................................................ 13
Abb. 8)
Reflektionen in drahtlosen Netzen ................................................................... 17
Abb. 9)
Entwurf des Verteilernetzwerks des Multisource-Streaming-Ansatzes ........... 22
Abb. 10) Architektur der entworfenen Hauptquelle ........................................................ 23
Abb. 11) Architektur der spezifizierten Verteilerquelle ................................................. 27
Abb. 12) Struktur des MPEG1-Videostroms (Ref: [13] S. 136 Figure 8.1) .................... 36
Abb. 13) Slicestruktur eines MPEG1-Frames ................................................................. 37
Abb. 14) Blocknummerierung im MPEG1 Chromaformat 4:2:0 .................................... 37
Abb. 15) Struktur des MPEG1-Systemstroms ................................................................. 38
Abb. 16) MPEG1-System Pack-Header .......................................................................... 38
Abb. 17) MPEG1-System-Header ................................................................................... 39
Abb. 18) MPEG1-Packetheader ...................................................................................... 39
Abb. 19) Kompatibilität zw. MPEG1 und MPEG2 Video (Referenz: [14] S.183) ......... 41
Abb. 20) Struktur einer MPEG2-Videosequenz (Referenz: [14] S.183) ......................... 42
Abb. 21) Dekodierung einer SNR-skalierbar codierten MPEG2-Videosequenz (Ref:
[16] S.107) ........................................................................................................ 44
Abb. 22) Picture temporal scalable extension.................................................................. 45
Abb. 23) Temporal Scalability......................................................................................... 46
Abb. 24) Data Partitioning (Ref: [16]S. 119) .................................................................. 46
Abb. 25) Struktur eines zu MPEG1 kompatiblen MPEG2 Audioframes ........................ 48
Abb. 26) Struktur des MPEG2 Packetized Elementary Stream (Referenz: [14] S. 223) 49
Abb. 27) MPEG2 PES-Pack (Ref: [14] S. 224)............................................................... 50
Abb. 28) MPEG2-Transportstrom (Ref: [14] S. 225)...................................................... 51
Verfasser: Holger Kärst
v
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Abb. 29) MPEG2-Transportstrompaket Header-Struktur (Ref: [14] S. 225) .................. 51
Abb. 30) Multisource-Streaming eines skaliertbar codierten MPEG2-Mediastroms...... 55
Abb. 31) Multisource-Streaming von nummerierten PES-Paketen................................. 56
Abb. 32) Objekt- und Szenenbeschreibung einer MPEG4-Sequenz (Ref: [17] S.85)..... 59
Abb. 33) MPEG4-Deskriptoren-Framework ................................................................... 60
Abb. 34) OCI-Metadaten für ein MPEG4-Objekt (Bsp: Zeitdefinition für das
Erscheinen eines Objektes in einer Szene) (Ref: [17] S.99)............................. 61
Abb. 35) OCI Events (Ref: [17]) ..................................................................................... 62
Abb. 36) Zusammenarbeit zwischen MPEG4-System und DMIF (Ref: [17] S. 230)..... 66
Abb. 37) Hierarchische Struktur des MPEG4-Videostroms (Ref: [17] S.298) ............... 67
Abb. 38) Visual Object Sequence / Visual Object........................................................... 68
Abb. 39) MPEG4-GOV-Header ...................................................................................... 68
Abb. 40) MPEG4 Makroblockarten................................................................................. 69
Abb. 41) Gray Level Shape Coding (Ref: [17] S.324) .................................................... 71
Abb. 42) Skalierung der Basisschichtinformationen auf das Sampling Grid des
Erweiterungslayers (Ref: [17] S.334) ............................................................... 72
Abb. 43) räumlich skalierbare Kodierung in MPEG4 (Ref: [17] S.333)......................... 73
Abb. 44) zeitlich skalierbare Kodierung in MPEG4 (Ref: [17] S.337) ........................... 74
Abb. 45) SNR Fine Granularity Scalability (FGS) (Ref: [17] S.341) ............................. 75
Abb. 46) Selektion eines Elementarstroms eines Objekts bestimmter Qualität (Ref:
[17] S.76) .......................................................................................................... 77
Abb. 47) Aufbau eines MPEG4 Videopakets.................................................................. 78
Abb. 48) Beispiel Paketbasierte Resynchronisation ........................................................ 78
Abb. 49) Videopaket im Data Partitioning Modus für DCT-Werte von I-VOP’s.......... 79
Abb. 50) Videopaket im Data Partitioning Modus für Bewegungsvektoren und
Texturdaten von P-VOP’s ................................................................................ 79
Abb. 51) Datenwiederherstellung mit RVLC .................................................................. 80
Abb. 52) Aufbau eines MPEG4-Videopakets mit HEC .................................................. 80
Abb. 53) Blockdiagram - Error-Protection-Tool [17] S.479 .......................................... 83
Abb. 54) RTP-Header (Referenz: [1] S.13) ..................................................................... 92
Abb. 55) RTCP-Paket-Header (Referenz: [1]) ................................................................ 95
Abb. 56) Payload des Sendereport-Pakets (Referenz: [1]) .............................................. 96
Verfasser: Holger Kärst
vi
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Abb. 57) Payload eines RR-Pakets (Referenz: [1]) ......................................................... 96
Abb. 58) MPEGable Broadcaster (Referenz: [27])........................................................ 102
Abb. 59) Architektur der implementierten Hauptquelle ................................................ 107
Abb. 60) Architektur der implementierten Verteilerquelle............................................ 109
Abb. 61) Grundgerüst der Implementierung des Verteilerservers „MultisourceHq“ .... 112
Abb. 62) Initialisierung von Threads für jede eintreffende Clientanfrage..................... 114
Abb. 63) Zeitablaufdiagramm für einen Service-Request ............................................. 115
Abb. 64) Kommunikationsprozess zur Abschätzung der Verbindungsqualität............. 116
Abb. 65) Anforderung der Konfigurationsinformationen.............................................. 117
Abb. 66) Anforderung der Elementarströme ................................................................. 118
Abb. 67) Grundgerüst der Implementierung der Verteilerquelle „Multisource“........... 119
Abb. 68) Auslesen der Datei „serverlist“ und Anlegen des ServerType-Feldes ........... 120
Abb. 69) Definition eines „ServerType“-Objektes........................................................ 121
Abb. 70) Definition eines „StreamType“-Objektes ....................................................... 121
Abb. 71) Beispiel einer „serviceList“ ............................................................................ 121
Abb. 72) Auswahl der Diensterbringer.......................................................................... 123
Abb. 73) Ermittlung eines gemeinsamen Startzeitpunkts für den Anforderungsprozess
der Elementarströme....................................................................................... 124
Abb. 74) Puffer- Asynchronität erster Fall .................................................................... 125
Abb. 75) Puffer - Asynchronität zweiter Fall ................................................................ 125
Abb. 76) Ringpuffer....................................................................................................... 128
Abb. 77) Korrekt gefüllter Ringpuffer........................................................................... 130
Abb. 78) Ringpuffer teilweise überschrieben, mit „Fehlerlücke“ durch Transportverlust
der Elemente 18-21......................................................................................... 130
Abb. 79) Ringpuffer mit Lesezeiger für Streaming zu einem entfernten Client ........... 133
Abb. 80) Ringpuffer mit Lesezeiger für lokales Streaming........................................... 133
Abb. 81) Geschwindigkeitskorrektur im Auslesevorgang............................................. 134
Abb. 82) Netzwerktopologie im Versuchsaufbau 1: Multiple Anfragen....................... 142
Abb. 83) Messergebnis Versuch 1 ................................................................................. 143
Abb. 84) Netwerktopologie im Versuchsaufbau 2: Entfernungstest ............................. 144
Abb. 85) Netzwerktopologie im Versuchsaufbau 3:
Entfernungstest/Kapazitätsauslastung ............................................................ 146
Verfasser: Holger Kärst
vii
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Abb. 86) Messergebniss Ressourcenauslastung VQ1 Versuch 3 .................................. 147
Abb. 87) Netzwerktopologie Versuch 4: erweiterter Entfernungstest........................... 149
Abb. 88) Messergebnis Ressourcenauslastung VQ1 Versuch4..................................... 150
Abb. 89) Netzwerktopologie Versuch5: multi Source Streaming ................................. 151
Abb. 90) Messergebnis Ressourcenauslastung VQ1 Versuch5..................................... 153
Tabellenverzeichnis
Tabelle 1:
Eigenschaften der MPEG1-Audio-Layer .................................................... 12
Tabelle 2:
Übersicht über geforderte visuelle Auflösungen (in Pixel) ......................... 20
Tabelle 3:
SNR-Skalierbarkeit durch Chroma Simulcast Referenz: [16] S.109 .......... 44
Tabelle 4:
Referenzen für zeitlich skalierte P-Frames des MPEG2-Standards
Referenz: [16] S. 113.................................................................................. 45
Tabelle 5:
Referenzen für zeitlich skalierte B-Frames des MPEG2-Standards
Referenz: [16] S. 114.................................................................................. 45
Tabelle 6:
Möglichkeiten der hybriden Skalierbarkeit in MPEG2............................... 47
Tabelle 7:
Zuordnungsbeispiel EP-Klasse <-> ESC..................................................... 84
Tabelle 8:
Fehlersicherungsmaßnahmen für EP-Klassen............................................. 84
Tabelle 9:
Messergebniss Entfernungstest (single Source) ........................................ 145
Tabelle 10:
Messergebnis Entfernungstest mit multiplen Anfragen (single Source)... 146
Tabelle 11:
Messergebnis 3-stufiger Entfernungstest (single Source) ......................... 149
Tabelle 12:
Messergebnis 3-stufiger Entfernungstest (multi Source) .......................... 152
Verfasser: Holger Kärst
viii
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
1. Einleitung
Der multimediale Informationsaustausch spielt bei aktuellen und zukünftigen
Kommunikationsprozessen eine immer größere Rolle. Fortschritte in der Video- und
Audiokodierung machen Multimediaübertragungen über einen großen Bereich
verschiedener Netzwerke möglich. Eine enorme Varianz bereits heute existierender,
kompakter, mobiler Endgeräte und ein ergiebiger Forschungsaufwand in der drahtlosen
Netzwerktechnik, lassen die Vision der überall verfügbaren, mobilen, multimedialen
Kommunikation immer greifbarer werden.
Die zu vermittelnden Datenmengen steigen jedoch mit dem Wunsch der Nutzer, nach
neuen multimedialen, mobilen Diensten, wie z.B. Videokonferenzen, Live Streaming oder
Video on Demand immer weiter an.
Mit den aktuellen mobilen Netzwerktechniken WLAN und UMTS stehen
Übertragungskanäle mit Kapazitäten zur Verfügung, die für die drahtlose Übertragung
multimedialer Inhalte ausreichend sind.
Die Probleme für die Verteilung von Multimediadaten verschieben sich deshalb immer
weiter von den Netzwerkkapazitäten, auf die Serversysteme der Diensterbringer und die
Heterogenität der Endgeräte.
Die Anforderungen an zukünftige mobile Kommunikationssysteme bestehen darin,
multimediale Informationen einfach und effizient zwischen verschiedenen mobilen
Endgeräten austauschen zu können.
Die Nutzung der Kommunikationsdienste ist nicht vorhersehbar. Die benötigten
Kapazitäten können deshalb kaum abgeschätzt werden. Durch eine Überdimensionierung
der
dienstanbietenden
Serversysteme
entstehen
überhöhte
Kosten.
Die
Unterdimensionierung der Systeme führt zu fehlenden Kapazitäten für die
Diensterbringung. Deshalb sollte kein zentraler Diensterbringer mit festgelegten
Kapazitäten eingesetzt werden. Ebenso ist das Angebot von Informationen in
verschiedenen Qualitätsstufen keine effiziente Lösung, um alle Endgerätetypen versorgen
zu können.
Es muss eine bessere Form der Dienstbereitstellung, der Informationsstruktur und der
Informationsverteilung entwickelt werden.
Verfasser: Holger Kärst
1
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
1.1. Ziel dieser Arbeit
Es soll ein Konzept entstehen, das einen neuen Ansatz für die Verteilung multimedialer
Daten in hochdynamischen Netzwerken beschreibt.
Die Grundidee der Arbeit besteht darin, ein Kodierverfahren zu verwenden, das eine
Multimediasequenz bereits im Kodierprozess so skalierbar strukturieren kann, sodass sie
flexibel an alle Endgerätetypen anpassbar ist und aus mehreren unabhängig verteilbaren
Datenströmen besteht. Der Dienstnutzer kann die verteilten Datenströme von mehreren,
verschiedenen Quellen anfordern und zu einer darstellbaren Multimediasequenz
zusammenführen. Die Datenströme sind derart aufgebaut, dass eine erhöhte
Fehlerrobustheit für eine Übertragung über verlustbehaftete Kanäle gewährleistet werden
kann.
Mit diesem „Multisource-Streaming-Ansatz“ soll ein Lösungsvorschlag entstehen, durch
den ein effizientes multimediales Dienstangebot für heterogene Endgeräte bereitgestellt
werden kann und gleichzeitig eine kooperative Lastverteilung bei der Dienstbereitstellung
zwischen den Teilnehmern des Netzwerks erfolgt.
Dieses Konzept wird nach dem Entwurf, der Spezifikation und der Überprüfung auf
Realisierbarkeit prototypisch implementiert.
1.2. Aufbau dieser Arbeit
Im Verlauf dieser Arbeit werden die Grundlagen der heutigen dynamischen Netzwerke
dargestellt. Es werden kurze Ausführungen über die Eigenschaften multimedialer
Informationen gemacht. Nach diesen Vorbetrachtungen folgt die Anforderungsanalyse für
den neuen, zu entwickelnden Multimedia-Streaming-Mechanismus. Diese Analyse bildet
die Grundlage für den Entwurf und die Spezifikation des Systems. Der Kern der Arbeit
beschäftigt sich mit der Untersuchung aktueller, verfügbarer Kodierverfahren. Es folgt eine
Analyse einsetzbarer Netzwerkprotokolle und Komponenten für das zu entwickelnde
System. Nach der Auswahl der geeigneten Plattform wird eine prototypische
Implementierung des neuen Multimedia-Streaming-Mechanismus vorgenommen.
Verfasser: Holger Kärst
2
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
2. Vorbetrachtungen
In diesem Kapitel werden Techniken beschrieben, die die Grundlage dieser Arbeit bilden.
Hier soll dem Leser ein Grundverständis für die Problematik und über die verwendeten
Verfahren der Netzwerktechnik vermittelt werden. Weiterhin erläutert dieses Kapitel die
grundlegenden Eigenschaften multimedialer Daten.
2.1. Netzwerktechnik
In der Netzwerktechnik werden zwei grundlegende Netzwerktypen unterschieden, die
Infrastruktur-Netzwerke und die dynamischen Netzwerke.
Infrastruktur-Netzwerke besitzen eine fest definierte Architektur. Dem Aufbau eines
Infrastruktur-Netzwerkes geht immer eine umfassende Planungsphase voraus. In dieser
Phase wird die Struktur des Netzwerkes festgelegt. Nach dem Aufbau des InfrastrukturNetzwerkes sind Änderungen an der Grundstruktur sehr aufwendig und kostenintensiv.
Dynamische Netzwerke hingegen besitzen keine feste Struktur.
Die Architektur eines solchen Netzwerkes passt sich kontinuierlich an die
Umgebungssituation an. Eine Planungsphase für diesen Netzwerktyp existiert nicht. Diese
Arbeit beschäftigt sich mit einer spezialisierten Art dieses dynamischen Netzwerktyps, den
Adhoc-Netzwerken. Im folgenden Abschnitt wird ein Überblick über diese
Vernetzungstechnik gegeben.
2.1.1. AdHoc-Netzwerk
Adhoc-Netzwerke sind sich über die Zeit verändernde, spontane Zusammenschlüsse von
meist heterogenen Netzwerkknoten, ohne zugrundeliegende Infrastruktur und zentralisierte
Administration.
Abb. 1) Adhoc-Netzwerk mit 7 Netzwerkknoten
Verfasser: Holger Kärst
3
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Die Abb. 1) stellt beispielhaft die Architektur eines Adhoc-Netzwerkes dar. Die
Kommunikation zwischen den Netzwerkknoten basiert auf drahtlosen Standards, wie zum
Beispiel WLAN oder Bluetooth. Jeder Netzwerkknoten kann spontan einem AdhocNetzwerk beitreten und kann dieses auch genauso spontan wieder verlassen. Jeder
Netzwerkknoten bietet allen anderen Netzwerkknoten des Adhoc-Netzwerkes seine lokal
verfügbaren Dienste an. Das zentralisierte, starre Client-Server-Prinzip wird somit durch
ein flexibles, verteiltes Dienstangebot ersetzt.
Adhoc-Netzwerke werden dann eingesetzt, wenn keine Kommunikationsinfrastruktur
verfügbar ist und sehr schnell eine Kommunikation zwischen heterogenen Netzwerkknoten
ermöglicht werden soll. In Gebieten, in denen durch Naturkatastrophen die gesamte
Infrastruktur zerstört wurde, ist die Möglichkeit, innerhalb eines Adhoc-Netzwerkes über
Audio- und Video-Livestreams kommunizieren zu können, sehr interessant und überaus
wichtig. Auch das Militär ist natürlich an den Diensten interessiert, die sehr einfach und
schnell über Adhoc-Netze angeboten werden können.
In der Wirtschaft finden Adhoc-Netzwerke bei Konferenzen, Meetings, Vorlesungen und
Präsentationen Anwendung.
Im Endnutzerbereich können z.B. einzelne Multimediageräte über ein Adhoc-Netzwerk zu
einem intelligenten Multimediacenter zusammengeschlossen werden, wie die folgende
Abbildung zeigt.
Abb. 2) Beispiel Adhoc Netzwerk im Endnutzerbereich
Es gibt also die unterschiedlichsten Einsatzbereiche für Adhoc-Netzwerke.
Verfasser: Holger Kärst
4
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
2.1.2. Vorteile von dynamischen Netzen gegenüber Netzen mit Infrastruktur
Die Mobilität während des Informationsaustausches ist eine zentrale Anforderung in
aktuellen Kommunikationsprozessen. Der Aufbau einer Infrastruktur erzeugt enorme
Kosten und kann häufig nicht geographisch lückenlos alle Gebiete abdecken.
Eine einmal aufgebaute Infrastruktur ist mit neuen Techniken und Ideen nicht flexibel
erweiterbar. Die Kosten der Entwicklung und der Installation müssen sich erst
amortisieren, bevor neue Techniken in Form einer neu entwickelten Infrastruktur
eingesetzt werden. Infrastrukturen hemmen dadurch die Entwicklung.
Dynamische AdHoc-Netzwerke sind sehr flexibel auch in schwierigen geographischen
Gebieten einsetzbar. Die verfügbaren Ressourcen können besser genutzt werden. Neue
Dienste sind leicht durch neue Netzwerkknoten in das dynamische Netzwerk integrierbar.
Die Gefahr eines Totalausfalls aller Dienstangebote wird auf ein Minimum beschränkt.
Eine echte Aufgabenverteilung und Parallelisierung führt zu einer schnelleren und
effizienteren Problemlösung. Verteilte Informationen sind wieder verwendbar und werden
nicht nach einem Kommunikationsprozess wertlos.
Um alle diese Vorteile nutzbar zu machen, ist ein erhöhter Entwicklungs- und
Forschungsaufwand auf dem Gebiet der dynamischen Netzwerke erforderlich.
2.2. Multimediale Daten
Multimediale Daten bestehen aus visuellen und auditiven Elementen. Die Speicherung und
die Verteilung dieser Elemente erfolgt heute hauptsächlich digital. Um den Verteilungsund Speicherungsprozess effizient zu gestalten, sind mehrere Verarbeitungsschritte mit den
multimedialen Elementen erforderlich. Dieser Abschnitt gibt einen Überblick über die
Eigenschaften dieser Elemente und die notwendigen Verarbeitungsschritte.
2.2.1. Digitalisierung analoger Signale
Kontinuierliche Signale, wie z.B. analoge Audio- und Videosequenzen müssen für die
digitale Speicherung bzw. Übertragung zunächst digitalisiert werden. Hierzu werden die
analogen Signalströme zeit- und wertquantisiert. Damit das Originalsignal aus den
Abtastwerten rekonstruiert werden kann, wird an die Zeitquantisierung die Anforderung
des Shannon Theorems gestellt. Das Abtasttheorem von Shannon besagt, dass bei der
Abtastung eines analogen Signals für eine spätere vollständige Rekonstruktion des Signals,
die Abtastfrequenz (d. h. die Anzahl der Abtastungen / Zeiteinheit) mindestens doppelt so
hoch sein muss, wie die höchste im Originalsignal enthaltene Frequenz. Auch die
Wertquantisierung ist nicht beliebig wählbar. Je grober die „Auflösung“, d.h. je weniger
Quantisierungstufen benutzt werden, umso größer ist der Quantisierungsfehler und umso
ungenauer wird die Rekonstruktion der Amplitudenwerte des analogen Originalsignals. Je
Verfasser: Holger Kärst
5
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
schlechter die Rekonstruktion des Originalsignales gelingt, und umso geringer wird der
Abstand zwischen Rauschsignal und Nutzsignal (SNR).
2.2.2. Eigenschaften digitalisierter Videosignale
Man unterscheidet folgende Arten von analogen Videosignalen:
•
Primärvalenzen: z.B. RGB
•
Luminanz mit Farbdifferenzkomponenten z.B. Y/Cr/Cb
•
Luminanz mit geträgertem Chrominanzsignal z.B Y/C
•
Zusammengesetztes Videosignal z.B FBAS
Die Eigenschaften dieser Videosignaltypen werden in den folgenden Abschnitten kurz
vorgestellt.
2.2.2.1. RGB
Die Erzeugung eines RGB-Signals wird durch drei Photosensoren (Rot, Grün, Blau)
erreicht. Mit Hilfe dieser drei Farben lassen sich durch Mischen alle anderen Farben eines
definierten, standardisierten Farbraumes erzeugen. Diese drei Farbsignale werden räumlich
getrennt als RGB-Signal übertragen.
2.2.2.2. Y/Cr/Cb
Das RGB-Signal wird in ein Helligkeitssignal (Luminanz
Farbdifferenzsignale Cr (R-Y) und Cb (B-Y) umgewandelt.
Y)
und
in
die
Das Helligkeitssignal besteht dabei aus definierten Anteilen der RGB-Grundfarben:
Y=0,3*R+0.59G+0.11B.
Diese Trennung der Helligkeitsinformation von der Farbinformation wurde vorgenommen,
um zum früher am meisten verbreiteten Schwarz/Weiss-Fernsehen kompatibel zu sein.
Durch Untersuchungen wurde herausgefunden, dass das Helligkeitssignal für den
Menschen die meisten Informationen liefert, während die Farbdifferenzsignale eine
untergeordnete Rolle spielen. Somit ist eine Unterabtastung der Farbdifferenzsignale in
gewissen Grenzen möglich, ohne dass für den Menschen sichtbare Qualitätsverluste
entstehen. Das ist für eine erste Komprimierungsmöglichkeit nutzbar.
In aktuellen Standards werden unterschiedliche Abtastraten der Farbdifferenzsignale
definiert. Eine Darstellung der gebräuchlichsten Abtastschemata kann man der Abb. 3)
entnehmen.
Verfasser: Holger Kärst
6
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Abb. 3) Y/CR/CB Abtastschemata
Die Abtastrate für die Digitalisierung der drei Informationskomponenten für PAL wurde
folgendermaßen standardisiert:
•
Cr: 3/2 * 625 * (576/4)*1/s = 3,375 MHz
•
Cb: 3/2 * 625 * (576/4)*1/s = 3,375 MHz
•
Luminanz: 4 * 3.375 MHz = 13,5 MHz
Bei einer Wertequantisierung von 8 bit werden folgende Datenraten zur Übertragung von
digitalisierten unkomprimierten Y/Cr/Cb Signalen des PAL-Standards notwendig:
•
4:4:4 => 13.5*1000000/s*8bit*3 = 324 Mbit/s
•
4:2:2 => (13.5 + 2*2*3.375)*1000000/s*8bit = 216 Mbit/s
•
4:1:1 => (13.5 + 2*3.375)*1000000/s*8bit = 162 Mbit/s
•
4:2:0 => (13.5 + 2*3.375)*1000000/s*8bit = 162 Mbit/s
2.2.2.3. FBAS
Mit dem FBAS-Signal werden Luminanz und Chrominanz (Farbdifferenzsignale) additiv
im Frequenzmultiplex auf einem Übertragungsmedium gemeinsam übertragen.
Die Farbdifferenzsignale werden auf einen Farbhilfsträger aufmoduliert. Die Frequenz für
den Farbhilfsträger wurde auf 4,433 MHz festgelegt.
Für die Digitalisierung eines analogen FBAS-Signales ist die Abtastfrequenz das Vierfache
der Farbhilfsträgerfrequenz, somit 17,734475 MHz.
Bei einer Wertquantisierung von 8 bit ist für die Übertragung eines digitalen
unkomprimierten FBAS-Signals eine Übertragungsrate von >141,88 Mbit/s erforderlich.
Verfasser: Holger Kärst
7
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
2.2.2.4. HDTV
Die Auflösung von 625:576 ist für heutige Anforderungen an die Qualität einer visuellen
Darstellung nicht mehr ausreichend. Je größer die Auflösung, umso schärfer ist das Bild.
Der HDTV Standard fordert im 1080i – Modus zum Beispiel eine Auflösung von
1920:1080. Um einen unkomprimierten Videostrom dieser Auflösung zu übertragen, ist bei
einer Bildwiederholrate von 25 Halbbildern/s eine Übertragungsrate von >1,2 Gbit/s
erforderlich.
2.2.3. Eigenschaften digitalisierter Audiosignale
Für die Digitalisierung von analogen Audiosignalen werden hauptsächlich drei Verfahren
eingesetzt. Bei der Pulse Code Modulation (PCM) wird jeder Abtastwert quantisiert und
als Integer dargestellt. Durch die übliche Abtastrate von 44,1 kHz und die Quantisierung
von 16 bit ist eine Übertragungsrate von 705,6 kBit/s für einen Audiokanal erforderlich.
Um die große Datenmenge zu verringern, wurde ein weiteres Verfahren, die Differential
Pulse Code Modulation (DPCM), entwickelt. Bei DPCM werden nur die Differenzen
aufeinander folgender Abtastwerte Pulse Code moduliert, sodass bei gleicher Qualität eine
bedeutend geringere Datenmenge gegenüber der PCM entsteht. Die Adaptive Differential
Pulse Code Modulation (ADPCM) bezieht zusätzlich die Signalcharakteristik in die Pulse
Code Modulation mit ein, wodurch bei gleich bleibender Datenmenge eine
Qualitätssteigerung erreicht werden kann.
2.2.4. Notwendigkeit einer Komprimierung digitalisierter multimedialer Elemente
Die große Datenmenge, die durch unkomprimierte Mediaströme (Audio und Video)
entsteht, stellt enorme Anforderungen an die Speicherkapazität der Endgeräte und die
Transportkapazität der Netzwerke.
Spätestens am Beispiel von HDTV und PCM ist ersichtlich, dass die Daten von Video- und
Audioströmen komprimiert werden müssen, um eine effiziente Speicherung oder
Übertragung dieser Mediasequenzen gewährleisten zu können.
Verfasser: Holger Kärst
8
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
2.2.5. Grundlagen der Komprimierung von Video- und Audiodaten
Die prinzipiellen Grundlagen der Videokodierung sind bei den meisten Verfahren sehr
ähnlich. Sie basieren auf der Diskreten Cosinus Transformation (DCT). Die folgende
Grafik stellt den Ablauf des DCT-Kodiervorganges für visuelle Daten dar.
Abb. 4) Grundlagen der Komprimierung von Videodaten (Referenz: [12])
Jedes Eingangsbild der Videosequenz wird in Blöcke von 8 x 8 Bildpunkten unterteilt.
Wenn man von einer 8-bit Wertquantisierung ausgeht, dann enthält jeder dieser Blöcke
eine Datenmenge von 512 bit. Alle Blöcke werden im zweiten Schritt mittels DCT von der
Bildebene in die Frequenzebene transformiert. Als Ergebnis entsteht jeweils wieder ein 8 x
8-Block, der durch 64 Koeffizienten definiert ist. Der Wert des linken oberen Elements der
Matrix ist der Gleichanteil (DC-Wert) - der mittlere Helligkeits- oder Farbanteil - des
Bildausschnittes. Die anderen, von Null verschiedenen AC-Koeffizienten, konzentrieren
sich um den Gleichanteil und stellen die Ortsfrequenzen in horizontaler und vertikaler
Richtung dar. Diese Transformation führt zu einer Dekorrelation des Eingangssignales. Im
dritten Schritt werden die einzelnen Koeffizienten, entsprechend einer definierten
Quantisierungsmatrix, quantisiert. Je nach der Stärke der Quantisierung erhalten weitere
AC-Koeffizienten den Wert Null. Durch die Quantisierung gehen Bildinformationen
verloren, was sich vor allem bei feinen Details im Bild bemerkbar macht. Da jeder Block
getrennt kodiert wird, kann es bei hohen Quantisierungsfaktoren zu sichtbaren
Blockartefakten kommen. Nach der Quantisierung werden die Koeffizienten in einer
bestimmten Reihenfolge (Zig-Zag-Scanning) aus dem Block ausgelesen und somit
serialisiert. Der Scannprozess erfolgt deshalb in diesem Zick-Zack-Muster, um die häufig
vorkommenden niederfrequenten Anteile des Bildes zuerst kodieren zu können. Das
Codewort EOB (End of Block) kennzeichnet, dass alle Koeffizienten, die einen Wert
ungleich Null enthalten, ausgelesen wurden. Damit erspart man sich die Kodierung und
Verfasser: Holger Kärst
9
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Übertragung der nachfolgenden Nullen. Der resultierende Datenstrom wird durch eine
variable Längenkodierung entropiekodiert. Häufig vorkommenden Werten werden kurze
Codeworte zugeordnet und selten auftretende Werte werden auf lange Codeworte
abgebildet. Im statistischen Mittel findet somit eine Reduktion der Datenrate statt. Die
Datenmenge des Blockes aus Abb. 4) konnte insgesamt von 512 bit auf 26 bit reduziert
werden.
Die Effizienz der Videokodierung kann gesteigert werden, indem man die in aufeinander
folgenden Bildern auftretenden Redundanzen verringert. Das wird erreicht, indem das
gesendete Bild zunächst in einen Bildspeicher geschrieben wird. Für das nachfolgende Bild
werden dann damit die Differenzen aller Bildpunkte ermittelt und nur diese übertragen. Bei
Videosequenzen treten auch starke Veränderungen zwischen aufeinander folgenden
Bildern auf. Diese Veränderungen führen bei einer Differenzbildung zu hohen Datenraten.
Daher wird eine Bewegungsabschätzung durchgeführt, bei der jedem Block ein
Bewegungsvektor zugeordnet wird. Im Bild erfolgt danach eine Bewegungskompensation.
Dabei werden alle Blöcke, um die im Vektor angegebene Größe, verschoben. Man erhält
somit ein abgespeichertes Bild, das besser an das neue, zu übertragende Bild angepasst ist.
Bei der Differenzbildung dieser Bilder entstehen weniger Daten. Zusätzlich zu den
Differenzdaten müssen aber auch die Bewegungsvektoren zum Empfänger übertragen
werden.
Von der „Moving Picture Expert Group“ wurden unterschiedliche Arten der zeitlichen
Prädiktion definiert:
Intraframe Picture (I-Frame)
Ein intrakodiertes „Intraframe Picture“ wird ohne Bewegungskompensation kodiert. Für
die Komprimierung werden nur Informationen, die innerhalb (intra-) des Bildes liegen,
benutzt. Dieser Bildtyp kann unabhängig dekodiert werden. Es sind keine Referenzen auf
vorangehende oder nachfolgende Bilder vorhanden.
Predictive Picture (P-Frame)
In interkodierten „Predictive Picture“ sind nur die Differenzen zwischen (inter-) dem
aktuellen Bild und einem zeitlich zurückliegenden Bild enthalten. Das muss nicht das
zeitlich benachbarte Bild sein, sondern kann auch weiter zurückliegen. Die Menge der zu
kodierenden Daten wird enorm gesenkt.
Bidirektional Predictive Picture (B-Frame)
Interkodierte „Bidirektional Predictive Picture“ besitzen nicht nur Referenzen auf ein
zeitlich zurückliegendes Bild, sondern auch auf ein zukünftiges Bild. Nur Bildinhalte die
zwischen diesen drei Bildern unterschiedlich sind werden kodiert. B-Frames beinhalten
somit noch weniger Daten als P-Frames. Zwei Bewegungsvektoren werden für jeden
Makroblock eines B-Frames generiert. Ein Bewegungsvektor verweist auf einen passenden
Verfasser: Holger Kärst
10
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Bildausschnitt des vorherigen Bildes (Forward Vector), ein zweiter referenziert einen
passenden Bildausschnitt des nächsten Bildes (Backward Vector) der Videosequenz.
Ein MPEG-Videodatenstrom besteht immer aus einer Sequenz dieser drei verschiedenen
Bildtypen, die in Gruppen zusammengefasst werden („Group of Picture“).
Eine solche Bildfolge ist wie in Abb. 5) dargestellt aufgebaut.
Abb. 5) Übliche Bildsequenz einer MPEG-GOP
I- und P- Bilder sind Stützbilder, da sie als Referenz für eine Bewegungskompensation /
Bewegungsschätzung genutzt werden können. B-Bilder können nicht zur Prädiktion
weiterer Bilder verwendet werden.
Für die Komprimierung und Kodierung von Audiosignalen werden weit verbreitet die
MPEG-Standards eingesetzt. Im MPEG-Audiostandard sind die zwei grundlegenden
Kodierverfahren MPEG und MPEG-AAC unterscheidbar.
Das ältere MPEG-Kodierverfahren unterstützt drei „Layer“ (MPEG Layer1, MPEG
Layer2, MPEG Layer3). Die Komplexität der Encoder und Decoder, die zusätzliche
Verzögerung durch den Kodier- und Dekodierprozess und die Kodiereffizienz steigen vom
Layer1 zum Layer3 an.
Der in der folgenden Abbildung dargestellte Kodier- und Dekodierprozess ist für alle
Layer gleich.
Abb. 6) MPEG1 Audio Enkodier- und Dekodierprozess (Ref: [17] S.490)
Verfasser: Holger Kärst
11
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Der Kompressionsalgorithmus basiert auf der Aufteilung des Audiofrequenzbereichs in 32
Spektralkomponenten (Subbänder). Dazu werden so genannte Subband-Filterbänke
eingesetzt. In jedem Subband werden 12 Frequenzabtastwerte aufgenommen. Die
Abtastwerte werden mit einer Rate von 44kHz oder 48kHz vom analogen Originalsignal
erzeugt. Anschließend werden die Frequenzbereiche dezimiert und die Abtastwerte
quantisiert. Die Dezimierung und Quantisierung erfolgt über ein psychoakustisches
Modell. Diesem Modell liegen die Eigenschaften des menschlichen Gehörs zugrunde.
Frequenzen die vom menschlichen Gehör nicht wahrgenommen werden können, sollten im
komprimierten Audiosignal nicht mehr vorhanden sein. Die so bearbeiteten Signale
werden als Bitstrom zum Decoder übertragen bzw. in definierten Dateiformaten
gespeichert.
Der MPEG-Layer2 erreicht eine bessere Komprimierung, indem die Quantisierung der
Abtastwerte der einzelnen Frequenzen jedes Subbandes besser an die Eigenschaften des
menschlichen Gehörs angepasst ist. Signalredundanzen werden besser herausgefiltert.
MPEG-Layer3 ist das bekannteste und am weitesten verbreitete Kompressionsverfahren
für Audiosignale. Es verwendet eine hybride Subband- und Transformationskodierung. Bei
dieser hybriden Kodierung werden die Signale in den Frequenzbereich transformiert (z.B.
DCT, FFT). Danach erfolgt eine Frequenzbandaufteilung durch definierte Filterbänke. Die
Frequenzauflösung kann den verschiedenen Frequenzbändern flexibel zugewiesen werden.
Zusätzlich finden im MPEG-Layer3 eine Analyse der Audiosignale durch Synthese, eine
verbesserte Pre-Echo-Kontrolle und eine Quantisierung mit Entropiekodierung statt. Somit
konnte die Kodiereffizienz bei gleich bleibender Qualität der Audiosignale gegenüber dem
Layer 2 nochmals gesteigert werden.
Die folgende Tabelle zeigt die Charakteristiken der einzelnen Layer auf:
MPEG
Audiokodierung
Layer1
Layer2
Layer3
Ungefähre Bitrate
pro Kanal
192 kbit/s
128 kbit/s
64 kbit/s
Kompressionsfaktor
4
8
12
Realistische
Verzögerung
<50 ms
10 ms
150 ms
Minimale
Verzögerung
19 ms
35 ms
58 ms
Tabelle 1: Eigenschaften der MPEG1-Audio-Layer
Die neue Kodier-Technik „MPEG Advanced Audio Coding“ (MPEG-AAC) wurde
hauptsächlich für mehrkanalige Audiowiedergabe entwickelt.
MPEG-AAC unterstützt 48 Hauptaudiokanäle, 16 Audiokanäle für niedrige Frequenzen,
16 Kanäle für multilinguale Audiotracks und 16 Datenkanäle. Für jeden Kanal wurde eine
maximale Datenrate von 64Kbit/s definiert. Im AAC-Standard werden die Profile Main
Profile, Low Complexity Profile und Scalable Sampling Rate Profile abgegrenzt. Das Main
Profile ist optimal nutzbar, wenn keine Grenzen an Rechen- und Speicherkapazität für
Kodierung, Transport, Dekodierung und Speicherung von Audiodaten gesetzt werden.
Verfasser: Holger Kärst
12
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Das LC-Profile ist in Umgebungen mit geringen Rechenleistungen und geringen
Speicherkapazitäten einsetzbar. Das Scalable Sampling Rate Profile unterstützt skalierbare
Decoder. Die skalierbaren Decoder sind grundlegend dafür gedacht, die Komplexität des
Dekodiervorganges einzugrenzen.
Der AAC-Standard wurde zwar für MPEG2 entwickelt, jedoch sind in den heutigen
MPEG2-Datenströmen selten AAC-kodierte Audioströme enthalten. Erst im MPEG4Standard kommt AAC eine größere Bedeutung zu.
AAC-Coder
Der MPEG2-AAC-Encoder besteht, wie in Abb.
Funktionsmodulen, so genannten Coding Tools.
7) dargestellt, aus mehreren
Abb. 7) MPEG2 AAC-Coder (Ref: [17] S.492)
Das Gain Control Modul wird nur im SSR-Profil genutzt. Hier wird die Dynamik des
eingehenden Audiosignals über Gain-Detektoren und Gain-Modifizierer komprimiert. Der
Frequenzbereich wird in vier Frequenzbänder gleicher Bandbreite zerlegt. Die
Verfasser: Holger Kärst
13
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Frequenzbänder enthalten Abtastwerte, die mit Abtastraten von 8kHz bis 96kHz vom
analogen Originalsignal gesampelt wurden. Aus den vorverarbeiteten Signalen werden für
jedes Frequenzband, durch eine MDCT-Filterbank, 256 spektrale Koeffizienten erzeugt,
sodass insgesamt 1024 Koeffizienten für jeden Audioframe entstehen. Das Temporal Noise
Shaping -Tool wird nur im LC-Profile eingesetzt und ersetzt in diesem Fall die
Funktionalität des Gain Control Moduls. Es erlaubt, dass Informationen früherer
Audioframes als Vorhersagewerte für den aktuell zu kodierenden Audioframe genutzt
werden können. Nach der Transformation der Audiosignale werden die resultierenden,
spektralen Koeffizienten quantisiert. Skalierungsfaktoren definieren dabei eine variable
Quantisierungsauflösung.
Die
Skalierungsfaktoren
sind
entsprechend
dem
psychoakustischen Modell an die Eigenschaften des menschlichen Gehörs angepasst.
Somit soll Quantisierungsrauschen für alle Frequenzen unter die Wahrnehmungsschwelle
gedrückt werden. Dieser Vorgang wird Noise-Shaping genannt. Nach der Quantisierung
der spektralen Koeffizienten werden die Werte mit Huffman-Code-Tabellen
entropiekodiert und in den Audiobitstrom gemultiplext.
Für die Kodierung von Stereo- oder Multikanal-Audio bei kleinen Bitraten, werden im
MPEG2-AAC-Standard Joint Coding Techniken eingesetzt. Anstatt alle Kanäle einzeln zu
kodieren, werden sie gemeinsam kodiert und zu einem Bitstrom zusammengefasst.
MPEG2-AAC unterscheidet die zwei Techniken: M/S-Stereo-Coding und Intensity-StereoCoding.
Bei M/S-Stereo-Coding werden nicht die Signale des rechten und des linken Kanals
unabhängig kodiert, sondern die Summen- (Middle) und Differenzsignale (Side) der
Kanäle.
Intensity-Stereo-Coding basiert auf dem Prinzip, in dem Spektralwerte mehrerer Kanäle
gemeinsam benutzt werden können. Zusätzlich sind nur noch Positionsinformationen
notwendig, die angeben, zu welcher Zeit die Spektralwerte im jeweiligen Kanal gültig
sind. Somit werden im linken Kanal Spektralwerte übertragen und im rechten Kanal
Positionswerte.
Im Unterschied zu den älteren MPEG-Audio-Standards unterscheidet MPEG2-AAC
zwischen einer Transport- und einer Kompressionsschicht. Die Transportschicht
unterstützt Funktionen für die Synchronisation, Signalisierung und Paketierung von den
Daten der Kompressionsschicht. Resynchronisationspunkte im Strom ermöglichen dem
Decoder im Fehlerfall eine schnelle Resynchronisation auf den Datenstrom. Die feste
Struktur aufeinander folgender Header früherer Standards, wurde durch eine Struktur
ersetzt, in der variable Distanzen, in Abhängigkeit zur aktuellen Bitrate, zwischen den
Headern existieren. Der AAC-Bitstrom ist modular aufgebaut. Definierte syntaktische
Elemente beschreiben einzelne Subbitströme die aus dem Gesamtbitstrom extrahiert und
unabhängig dekodiert werden können.
Verfasser: Holger Kärst
14
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
2.2.6. Grundlagen für eine skalierbare Kodierung multimedialer Daten
Die Skalierbarkeit von Multimediaströmen ist für die Verteilung in hochdynamischen
Netzen und für heterogene Endgeräte mit unterschiedlichen Anforderungen unerlässlich.
Für die Bereitstellung einer Multimediasequenz in verschiedenen Anforderungsstufen
existieren drei verschiedene Technologien.
Bei der ersten Möglichkeit werden viele unterschiedlich kodierte Multimediaproduktionen
mit verschiedenen Anforderungen an Endgeräte und Netzwerke bereitgestellt. Diese
Technologie ist sehr ineffizient und fordert eine enorme senderseitige Speicherkapazität.
Der zweite Ansatz definiert einen Transcoder, der einen Multimediastrom umkodiert,
sodass der Strom an die verfügbaren Ressourcen angepasst wird. Hierbei wird zwar
Speicherkapazität eingespart, die Kosten werden jedoch auf hohe Anforderungen an die
Rechenleistung verlagert.
Die effiziente Alternative ist die skalierbare Kodierung. Die Realisierung der skalierbaren
Kodierung wird durch die Aufteilung kodierter Informationen in verschiedene Schichten
ermöglicht. Grundsätzlich wird nun zwischen einem Basisdatenstrom und einem oder
mehreren Erweiterungsdatenströmen unterschieden. Der Basisdatenstrom stellt die
Sequenz in einer definierten minimalen Qualitätsstufe dar. Die Erweiterungsdatenströme
erhöhen die Qualität der Sequenz schrittweise, in dem sie erweiterte Daten zu den
Basisdaten liefern. Somit entsteht eine Qualitäts-Hierarchie für die Sequenz. Aus dieser
Hierarchie kann sich der Decoder des Endgeräts die Datenströme der Qualitätsstufe
herauslösen, sodass die Sequenz mit den verfügbaren Ressourcen dargestellt werden kann.
Verfasser: Holger Kärst
15
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
3. Anforderungsanalyse
In diesem Kapitel werden die Anforderungen an das zu entwickelnde System analysiert.
Dabei wird die Problematik in die drei Teilgebiete Netzwerk, Multimediadaten und
Endgeräte untergliedert. Die Teilgebiete werden getrennt analysiert. Für jedes der Gebiete
werden die grundlegenden Anforderungen herausgearbeitet, die letztendlich
zusammengefasst die Gesamtanforderungen an das System ergeben.
3.1. Analyse der speziellen Eigenschaften der Teilgebiete
Bevor konkrete Anforderungen der Teilgebiete an das Gesamtsystem ermittelt werden
können, müssen die grundlegenden Eigenschaften des Netzwerks, der Multimediadaten
und der Endgeräte analysiert werden.
3.1.1. Netzwerk
Ein Adhoc-Netzwerk besitzt eine enorme Dynamik bezüglich der Anzahl, der
Erreichbarkeit und der Lokalität der Teilnehmer. Die verfügbaren Ressourcen können
somit nicht als feste und kalkulierbare Größe betrachtet werden. Es existiert keine zentrale
Instanz, die Administrationsaufgaben, Ressourcenverwaltung oder eine zentralisierte
Ressourcenbereitstellung übernimmt. Das bedeutet, dass alle Funktionalitäten und
Ressourcen im gesamten Netzwerk auf verschiedenen Netzwerkknoten verteilt sind. Die
Verfügbarkeit von Diensten und Ressourcen muss im Netzwerk durch spezielle
Mechanismen bekannt gemacht werden.
Die Transportkanäle, über die der Informations- und Datenaustausch erfolgt, sind aufgrund
des Transportmediums „Luft“ stark verlustbehaftet. Nicht nur durch das störanfällige
Übertragungsmedium, sondern auch durch die Mobilität der Endgeräte treten
Schwankungen und Asymmetrien bei der Verbindungsqualität zwischen Uplink- und
Downlink-Strecke auf. Die Übertragungskapazitäten und Übertragungsverzögerungen
können zwischen den Teilnehmern stark differieren und sich stochastisch verändern. Die
Ursachen für die Unsicherheit der drahtlosen Übertragung sind unter anderem Reflektion,
Abschattung und Überlagerung von Sendesignalen. Ein Beispiel für eine Reflektion von
Sendesignalen wird in der Abb. 8) gezeigt.
Verfasser: Holger Kärst
16
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Abb. 8) Reflektionen in drahtlosen Netzen
Die grundlegenden Fehler während der Übertragung sind deshalb Informationsverlust,
Informationsverdopplung, Verlust der Informationsordnung und Jitter.
Das Netzwerk unterstützt nur direkte Punkt-zu-Punkt-Verbindungen, ohne „Multihop“bzw. Routingfunktionalitäten. Die Reichweite für die Verteilung der Informationen wäre
ohne die Realisierung einer Wiederverwendbarkeit von Daten stark eingeschränkt.
3.1.2. Multimediadaten
Die zu übertragenden multimedialen Daten besitzen eine fest definierte Struktur und sind
sehr zeitkritisch. Die Elemente einer kodierten Multimediasequenz müssen zu definierten
Zeitpunkten am Decoder vorliegen. Nur so ist eine synchrone Dekodierung und
Wiedergabe abhängiger Elemente realisierbar.
Es können zwei verschiedene Arten der Abhängigkeit zwischen multimedialen Elementen
unterschieden werden. Eine Multimediasequenz besteht meist aus einer Kombination von
Video- und Audioströmen, die synchron wiedergegeben werden müssen und somit eine
Abhängigkeit zueinander besitzen. Aufgrund der Struktur und der Definition können
multimediale Elemente auch innerhalb eines Mediastromes voneinander abhängig sein. In
den meisten Komprimierungsverfahren werden z.B. Informationen bereits dekodierter
Elemente für den Dekodierprozess eines aktuellen Elements verwendet.
Durch diese Abhängigkeiten haben Fehler während des Verteilungsprozesses nicht nur
Auswirkungen auf die direkt betroffenen Elemente, sondern auch auf nachfolgende,
abhängige Elemente.
Verfasser: Holger Kärst
17
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
3.1.3. Endgeräte
Es existieren heute verschiedene Arten mobiler Endgeräte, die multimediale Informationen
verarbeiten können. Sie besitzen unterschiedliche Speicherkapazitäten, heterogene
Rechenleistungen und Netzanbindungen mit begrenzten Geschwindigkeiten bzw.
Übertragungskapazitäten, verschiedene Darstellungsmöglichkeiten und auch eng begrenzte
Energiereserven. Die wichtigsten Endgeräteklassen sind Handy, Smart Phone, Pocket PC,
PDA, Tablett PC, Subnotebook, Laptop und mobile Multimediaplayer. Damit die
verfügbaren Ressourcen überhaupt eingeschätzt werden können ist eine umfassende
Recherche über die Eigenschaften dieser Endgeräteklassen erforderlich.
Die im Anhang A angegebene Tabelle gibt einen Eindruck über die Varianz der
Geräteeigenschaften aller genannten Arten von Endgeräteklassen. Im Besonderen werden
die Prozessorleistungen, die Displayeigenschaften, die Speicherkapazitäten und die
Multimediafähigkeiten der Klassen verglichen.
3.2. Konkrete Anforderungen der Teilgebiete an das System
Nach der Analyse der Teilgebiete können konkrete Anforderungen des Netzwerks, der
Multimediadaten und der Endgeräte an das zu entwerfende Gesamtsystem gestellt werden.
3.2.1. Netzwerk
Aufgrund der Dynamik des Netzwerkes ist es für jeden Netzwerkknoten notwendig,
kontinuierlich die Ressourcenverfügbarkeit und Übertragungskanalgüte zu den bekannten
Nachbarn zu überprüfen. Neue verfügbare Ressourcen müssen vom Teilnehmer
klassifiziert und im Netzwerk bekannt gegeben werden.
Für die Einschätzung der dynamischen Verbindungseigenschaften werden fortlaufend
Informationen benötigt. Ein geeignetes Steuer- und Transportkontrollprotokoll ist
erforderlich, dass die Netzwerkknoten mit diesen notwendigen Parameterwerten versorgt.
Neben der Übermittlung der Multimediaelemente müssen auch die Zeitinformationen aller
Elemente den Decoder erreichen. Hier muss also ein geeignetes Transportprotokoll
gefunden werden, das Daten und ihre Zeitrelevanzen miteinander verknüpft und
gemeinsam zum Empfänger überträgt.
Es muss für einen zeitkorrekten Versand aller Multimediaelemente gesorgt werden, sodass
diese den Empfänger rechtzeitig erreichen. Rechtzeitig bedeutet in diesem Fall, dass die
kodierten Daten bereits vor ihrem Dekodierzeitpunkt beim Empfänger vorliegen.
Um den Verteilungsradius zu erhöhen sollen die Netzwerkknoten in der Lage sein,
empfangene Multimediainformationen darzustellen und gleichzeitig weiteren Endgeräten
Verfasser: Holger Kärst
18
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
zur Verfügung zu stellen. Jeder Netzwerkknoten tritt somit als Client und gleichzeitig als
Server auf (entsprechend dem P2P-Ansatz). Die notwendigen Funktionen müssen in jedem
Knoten realisiert werden.
Die Weitervermittlung der Multimediadaten darf keinen Einfluss auf den Empfang von
Daten haben. Somit muss auch kontinuierlich die Kapazität des Uplinks, in Relation zur
geforderten Bandbreite des Downlinks, überprüft werden.
Fehlererkennungs- und Fehlerbehandlungsmechanismen sollen den Schaden minimieren,
der aufgrund erwarteter Verluste auf dem Übertragungsweg entsteht. Hier ist es wichtig,
ein ausgewogenes Verhältnis zwischen Fehlerkorrektur durch redundante
Datenübertragung und Fehlerverschleierung zu finden.
Auftretende zeitliche Störung, wie z.B. Jitter und Übertragungsverzögerungen, können zu
zeitlichen Verschiebungen zwischen abhängigen Elementen und somit zum
Synchronisationsverlust führen. Die zeitlichen Störungen müssen also mit geeigneten
Mechanismen ausgeglichen werden.
Da auch die Ordnung der Daten während des Übertragungsprozesses gestört werden kann,
sollten die eintreffenden Daten anhand ausgewählter eindeutiger Parameter sortiert werden.
3.2.2. Multimediadaten
Die Verifikation bestehender Kodierungsstandards für multimediale Inhalte, in Bezug auf
die spezielle Problematik, ist eine der wichtigsten Grundlagen für die Entwicklung des
Systems.
Es muss ein Kodierverfahren gewählt werden, dass eine Multimediasequenz in unabhängig
verteilbare Datenströme zerlegen kann.
Die Multimediasequenz muss leicht an die Übertragungskapazität, und an die speziellen
Eigenschaften jedes Endgeräts angepasst werden können.
Die heute geläufigste Lösung für die Anpassung der Datenströme an die Güte des
Übertragungskanals bzw. die Endgeräteeigenschaften, ist die Transkodierung der
multimedialen Informationen an Verteilerknoten. Diese Lösung ist für Netze ohne
Infrastruktur und ohne leistungsstarke Verteilerknoten nicht realisierbar, da die
Netzwerkknoten nicht über die notwendigen Rechenkapazitäten verfügen.
Der Kodier-/Dekodiervorgang kann für die Daten deshalb genau einmal durchgeführt
werden. Eine der wichtigsten Anforderungen an das Kodierverfahren ist somit die
Möglichkeit der zeitlichen, räumlichen und SNR-skalierbaren Kodierung.
Der kodierte Datenstrom muss aufgrund der unsicheren Transportkanäle sehr fehlertolerant
und fehlerrobust sein. Der Datenstrom muss eine definierte Struktur besitzen, sodass
Fehler leicht erkannt werden können.
Verfasser: Holger Kärst
19
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
In einer Transportdateneinheit dürfen nur vollständig kodierbare, multimediale Elemente
enthalten sein. Somit existieren keine Abhängigkeiten zwischen Informationen
aufeinanderfolgender Transportdateneinheiten.
Die Kodierung von Multimediamaterial bleibt leistungsstarken Netzwerkknoten (z.B.
Laptop) vorbehalten.
Der Dekodiervorgang darf nur eine geringe Rechenkapazität fordern.
Bei der Auswahl eines geeigneten Kodierverfahrens muss darauf geachtet werden, dass das
Verfahren standardisiert ist, da nur so eine weit reichende Akzeptanz für das zu
entwickelnde System zu erwarten ist.
3.2.3. Endgeräte
Aufgrund der enormen Varianz der Eigenschaften der Endgeräteklassen, nehmen die
Endgeräte einen großen Einfluss auf die Wahl eines geeigneten Kodierverfahrens.
Um den Darstellungsmöglichkeiten aller Endgeräte gerecht zu werden, müssen folgende
standardisierte Videoauflösungen bereitgestellt werden:
Parameter
Horizontale
Auflösung
Vertikale Auflösung
Sub-QCIF
QCIF
CIF
4CIF
16CIF
128
96
176
144
352
288
704
576
1408
1152
Tabelle 2: Übersicht über geforderte visuelle Auflösungen (in Pixel)
Die wichtigste Anforderung der Endgräte an eine kodierte Multimediasequenz ist deshalb
die räumliche Skalierbarkeit.
Zusätzlich ist darauf zu achten, dass die Rechenkapazitäten der Endgeräte beim
Dekodiervorgang ausreichend sind.
Die Darstellung auditiver Informationen ist durch die Endgeräte einkanalig (mono),
zweikanalig (stereo) oder mehrkanalig (z.B. 5.1) möglich. Für die Entwicklung des
Systems soll jedoch die 2-kanalige Wiedergabe ausreichend sein.
Die Speicherkapazitäten der Endgeräte definieren eine feste Schranke für die Speicherung
multimedialer Inhalte. Diese Schranke hat damit eine direkte Auswirkung auf die
Bereitstellungsmöglichkeit von Multimediasequenzanteilen eines Netzwerkknotens für
nachfolgende Teilnehmer. Die Schranke muss so definiert werden, dass keine
Beeinträchtigungen für das bereitstellende Endgerät auftreten.
Verfasser: Holger Kärst
20
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
4. Entwurf
Der Entwurf beschreibt die grundlegende Netzwerkstruktur des Systems, die Aufgaben der
Netzwerkknoten und den Verteilungsprozess der multimedialen Daten.
Voraussetzung für den Entwurf ist ein Kodierverfahren, das skalierbar kodierte
Datenströme einer Multimediasequenz erzeugen kann.
4.1. Netzwerkstruktur
Als Grundlage dient ein WLAN-Netzwerk im Adhoc-Modus. Damit steht ein dynamischer
Netzwerktyp mit den beschriebenen Anforderungen zur Verfügung. Über den eingesetzten
WLAN-Standard soll keine spezielle Aussage getroffen werden. Der Systementwurf wird
allgemeingültig für alle aktuellen und zukünftigen WLAN-Standards, die den AdhocModus unterstützen konzipiert.
Eine Erweiterung des Konzepts auf andere dynamische Netzwerktypen (z.B. Bluetooth)
sollte einfach realisierbar sein.
4.2. Netzwerkknoten
Grundlegend werden zwei Typen von Netzwerkknoten unterschieden.
Eine
Hauptquelle
stellt
als
Ursprungsknoten
neue,
skalierbar
kodierte
Multimediainformationen im Netzwerk bereit. Die Multimediainformationen werden als
Livestream neu erzeugt, oder sie werden von einem Speicher zur Verfügung gestellt.
Der zweite Netzwerkknotentyp enthält keine Funktionalitäten, um neue Medien zu
erstellen. Netzwerkknoten dieser Art nutzen einerseits bereitgestellte, multimediale Inhalte,
und sie stellen diese Daten andererseits nachfolgenden Netzwerkknoten zur Verfügung.
Sie können somit gleichzeitig als Dienstnutzer und als Diensterbringer auftreten. Diese
Knoten werden als Verteilerquellen bezeichnet.
Netzwerkknoten können als Hauptquelle und/oder als Verteilerquelle auftreten.
4.3. Verteilung
Die Verteilung der Informationen wird in zwei Abschnitte gegliedert.
Im ersten Abschnitt werden die Multimediadaten von der Hauptquelle erzeugt und zu den
ersten, empfangenden Netzwerkknoten (Verteilerquelle der ersten Stufe) transportiert.
Diese Verteilung erfolgt mit den klassischen Single-Source-Streaming-Mechanismen.
Verfasser: Holger Kärst
21
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Verteilerquellen nutzen die Informationen für eine lokale Darstellung und geben sie im
zweiten Verteilungsabschnitt an nachfolgende Verteilerquellen weiter. Da die
Multimediainformationen skalierbar kodiert wurden, bestehen sie aus mehreren,
unabhängig transportierbaren Datenströmen. Einzelne Datenströme können von
Verteilerquellen der zweiten Verteilungsstufe bei mehreren unterschiedlichen
Verteilerquellen des ersten Verteilungsabschnitts angefordert werden. Im zweiten
Verteilungsabschnitt wird der klassische Single-Source-Streaming-Mechanismus zu einem
neuen Multisource-Streaming-Ansatz erweitert. Diese Art der Verteilung ermöglicht
vollkommen neue Strategien für Fehlerkorrekturmechanismen und eine bedeutend
effizientere Ausnutzung der verfügbaren Kanalkapazitäten. Erst mit diesem Mechanismus
können die im Abschnitt 3 gestellten Anforderungen an den Verteilungsdienst für
Multimediainformationen erfüllt werden.
Die folgende Skizze stellt den Verteilungsverlauf grafisch dar:
Abb. 9) Entwurf des Verteilernetzwerks des Multisource-Streaming-Ansatzes
Verfasser: Holger Kärst
22
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
5. Spezifikation
In diesem Kapitel werden die Architekturen und die Komponenten der Hauptquelle und
der Verteilerquelle näher dargestellt. Für den Verteilungsvorgang werden die Aufgaben der
einzusetzenden Kommunikations- und Transportprotokolle spezifiziert.
5.1. Hauptquelle
Wie bereits im Entwurf beschrieben, hat die Hauptquelle die Aufgabe, skalierbar kodierte
Multimediasequenzen
im
Netzwerk
als
Ursprungsknoten
bereitzustellen.
Multimediasequenzen werden von der Hauptquelle entweder in Form eines Livestreams
neu erzeugt oder von einem Speichermedium zur Verfügung gestellt. Die Bereitstellung
der Multimediadaten am Stream-Server muss somit über zwei Wege gewährleistet werden.
Für die Bereitstellung der multimedialen Daten über einen Livestream werden die
Komponenten Aufnahmegerät(e), Encoder und Stream-Server benötigt.
Sollen die Daten vom lokalen Speicher der Hauptquelle verfügbar gemacht werden, so
muss zusätzlich zum lokalen Speicher ein Transformator eingesetzt werden.
Da die Verteilung der multimedialen Informationen über ein hochdynamisches, drahtloses
Netzwerk erfolgt, sind Fehlerschutzmechanismen bzw. Zufügen von Redundanz
erforderlich.
Abb. 10) Architektur der entworfenen Hauptquelle
Der Server ist letztendlich für die Verteilung der Multimediadaten verantwortlich.
Verfasser: Holger Kärst
23
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Die Abb. 10) stellt die grundlegende Architektur und die Komponenten der Hauptquelle
dar.
5.1.1. Aufnahmegeräte
Für die Erzeugung eines Livestreams wird mindestens ein Aufnahmegerät benötigt, das die
realen, audiovisuellen Objekte auf digitale, zunächst unkomprimierte Signale abbildet.
Aufnahmegeräte sind meistens digitale Kameras und Mikrofone. Es können natürlich auch
analoge Aufnahmegeräte verwendet werden. Der Einsatz analoger Technik erfordert
jedoch zusätzlich einen nachgeschalteten Analog-Digital-Wandler.
5.1.2. Encoder
Die Übertragung unkomprimierter Daten erfordert Ressourcen, die durch ein AdhocNetzwerk heute nicht bereitgestellt werden können. Deshalb ist es notwendig die
multimedialen Informationen zu komprimieren (siehe Abschnitt 2.2). Die
Datenkompression wird durch einen Encoder vorgenommen. Die Kodierung der
multimedialen Informationen erfolgt dabei skalierbar. Eine skalierbar kodierte
Multimediasequenz besteht aus mehreren unabhängig transportierbaren Datenströmen. Die
empfängerseitige Wiedergabeeinheit kann die Multimediasequenz, angepasst an die
verfügbaren Ressourcen, aus den Datenströmen zusammensetzen und darstellen. Die
Anpassung ist einfach möglich, indem eine Teilmenge der unabhängigen Datenströme der
originalen Multimediasequenz für den Dekodiervorgang benutzt wird.
Die Funktionalität des Encoders ist vom ausgewählten Kodierverfahren abhängig.
5.1.3. Transformator
Wenn skalierbar kodierte multimediale Daten durch einen lokalen Speicher der
Hauptquelle bereitgestellt werden, so müssen sie für den Streamvorgang vorbereitet
werden. Die Daten liegen nicht direkt auf dem Speicher, sondern sind meistens innerhalb
definierter Containerformate (Files) abgelegt. Der Transformator hat die Aufgabe, die
Daten aus den Containerformaten auszulesen und für den Stream-Vorgang in ein
definiertes Stream-Format zu überführen. Die Transformationsfunktion ist vom
Containerformat der gespeicherten Daten und vom Format der Transporteinheiten (z.B.
UDP-, TCP-, RTP-Pakete) für die Datenübertragung abhängig. Transformatoren für
verschiedene Transportprotokolle und Fileformate sind als sog. Hinting-Tools verfügbar.
Verfasser: Holger Kärst
24
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
5.1.4. Absicherung vor Übertragungsfehlern
Die komprimierten bzw. transformierten multimedialen Daten werden durch
Fehlerschutzmechanismen und Zufügen von Redundanz für die Übertragung im
hochdynamischen, verlustbehafteten, drahtlosen Netzwerk vorbereitet. Der Empfänger
kann durch diese zusätzlichen Informationen Fehler erkennen und gegebenenfalls
korrigieren. Die Güte für die Fehlererkennung bzw. die Korrekturfähigkeit ist vom
eingesetzten Fehlerschutzmechanismus abhängig.
Die Absicherung der Daten wird für den gesamten Verteilungsvorgang nur einmalig durch
die Hauptquelle vorgenommen. Verteilerquellen können keine zusätzlichen
Schutzmaßnahmen ergreifen.
5.1.5. Server
Der Server der Hauptquelle kann in die drei Komponenten Steuerprotokoll-Server, StreamServer und Linkmanager unterteilt werden.
Durch den Stream-Server der Hauptquelle werden die komprimierten Multimediadaten
einmalig mit den wichtigen Zeitinformationen zu Transportdateneinheiten verknüpft und
mit Fehlerschutzinformationen versehen. Die Transportdateneinheiten sind mit einem
eindeutigen, fortlaufenden Identifikator (z.B. Sequenznummer) gekennzeichnet. Die
Zeitrelevanzen und die Identifikatoren sind während des Verteilungsvorganges durch
Verteilerquellen nicht veränderbar. Nur so ist die Synchronisation abhängiger
multimedialer Elemente auch bei mehrfacher Verwendung und Verteilung der Daten
möglich.
Auf welche Art die Transportdateneinheiten in die Transportpakete verpackt werden
bestimmt das eingesetzte Transportprotokoll. Günstig ist hier, für jede kleinste, unabhängig
dekodierbare Einheit einer Multimediasequenz genau ein Transportpaket zu erzeugen. So
führt ein Paketverlust immer nur zum Verlust einer kleinsten Multimediaeinheit.
Fehlerkorrektur- bzw. Fehlerverschleierungstechniken können den Paketverlust auf einen
minimalen Darstellungsfehler reduzieren.
Der Steuerprotokoll-Server nimmt asynchron eintreffende Clientanfragen entgegen. Er ist
für die Beschreibung bzw. die Bekanntmachung der verfügbaren Multimediasequenzen der
Hauptquelle verantwortlich. Steuerbefehle für den Stream-Vorgang werden vom
Steuerprotokoll-Server an den Stream-Server weitergegeben.
Der Linkmanager überwacht kontinuierlich die Kanalkapazität. Er entscheidet, in
Abhängigkeit zu den aktuell verfügbaren Ressourcen, ob neue Clientanforderungen vom
Stream-Server bedient werden können, ohne bereits laufende Streamvorgänge zu stören.
Verfasser: Holger Kärst
25
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
5.1.6. Schnittstellen
Die Schnittstellen der Hauptquelle können in interne und externe Schnittstellen gegliedert
werden. Die internen Schnittstellen beschreiben die Transportbeziehungen zwischen den
Komponenten in der Hauptquelle. Die externen Schnittstellen definieren den
Kommunikations- und Transportprozess zwischen der Hauptquelle und ihrer Umwelt.
Folgende interne Schnittstellen müssen in der Hauptquelle definiert werden:
•
Schnittstelle zwischen den Produzenten der multimedialen Rohdaten und dem
Encoder
•
Schnittstelle zwischen dem lokalen Speicher und dem Transformator
•
Schnittstelle zwischen Transformator und Fehlerabsicherung
•
Schnittstelle zwischen Encoder und Fehlerabsicherung
•
Schnittstelle zwischen Fehlerabsicherung und Stream-Server
Folgende externe Schnittstellen sind in der Hauptquelle erforderlich:
•
Schnittstelle zwischen Steuerprotokoll-Client und Steuerprotokoll-Server
•
Schnittstelle zwischen Stream-Client und Stream-Server
•
Schnittstelle zwischen Server-Linkmanager und Client-Linkmanager
Das Format der Schnittstellen ist von den einzusetzenden Kompontenten der Hauptquelle
abhängig. Eine Spezifikation der Schnittstellen kann somit erst nach der Auswahl der
Komponenten erfolgen.
Verfasser: Holger Kärst
26
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
5.2. Verteilerquelle
Die Verteilerquelle lässt sich in die Komponenten Client, Server, Puffer,
Wiedergabeeinheit und Managereinheiten einteilen. Die Architektur soll in der
nachfolgenden Grafik verdeutlicht werden. Die Informationsflüsse zwischen den
Komponenten werden bei der Vorstellung der Komponenten beschrieben.
Abb. 11) Architektur der spezifizierten Verteilerquelle
Verfasser: Holger Kärst
27
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
5.2.1. Wiedergabeeinheit
Die Wiedergabeeinheit der Verteilerquelle hat die Aufgabe, die eintreffenden Datenströme
zu synchronisieren, zu dekodieren und entsprechend ihrer zeitlichen Abhängigkeiten in
einer gemeinsamen Präsentation darzustellen. Der Wiedergabeeinheit müssen alle
Informationen über die Lokalität der multimedialen Datenströme bekannt sein. Bereits vor
der Anfrage nach Datenströmen sind die maximalen Ressourcenanforderungen für den
Dekodiervorgang, die Präsentationskomposition und die Darstellung der multimedialen
Informationen bekannt. Diese Ressourcenanforderungen werden mit den verfügbaren
lokalen Kapazitäten verglichen. Die wichtigsten Kapazitäten sind Rechengeschwindigkeit,
Speicherplatz und Darstellungsmittel (z.B. Auflösung des Displays). Nachdem der
Abgleich erfolgreich war, werden von der Wiedergabeeinheit Datenströme angefordert.
Diese Anfragen führen zu einem Kommunikationsprozess mit der Steuerprotokolleinheit
der Clientkomponente. Die eintreffenden Datenströme werden von der Clientkomponente
an den Puffer übergeben. Ab einem definierten Pufferfüllstand werden die Datenströme
aus dem Puffer ausgelesen und durch einen lokalen Streamprozess an die
Wiedergabeeinheit weitergegeben.
5.2.2. Client
Der Client lässt sich in die drei Funktionsabschnitte Steuerprotokoll-Client, Stream-Client
und Linkmanager unterteilen.
Der Steuerprotokoll-Client hat die Aufgabe, Datenstromanfragen von der
Wiedergabeeinheit entgegenzunehmen, in die Steuerprotokollsyntax zu transformieren und
Kommunikationsprozesse zu mehreren Komplementärstellen (Steuerprotokoll-Server) zu
starten. Vorausgesetzt wird, dass dem Steuerprotokoll-Client alle erreichbaren
Kommunikationspartner bekannt sind. Über den Kommunikationsprozess wird geprüft,
welcher Server als Diensterbringer verfügbar ist.
Hier wird ermittelt, welche Server die angeforderten Daten liefern können. Sind die
diensterbringenden Kandidaten festgelegt, wird vom Linkmanager die Kanalgüte für die
Übertragung der Daten von den jeweiligen Servern zum Client überprüft. Multimediale
Datenströme besitzen unterschiedliche Prioritäten. Der Linkmanager entscheidet welche
Server als Diensterbringer genutzt werden. Im Besonderen bestimmt der Linkmanager
welcher Server welche Datenströme zum Stream-Client übermitteln soll. Datenströme mit
hohen Prioritäten sollten bevorzugt über Kanäle mit einer hohen Kanalgüte transportiert
werden.
Zwischen
den
ausgewählten
Servern
und
dem
Stream-Client
werden
Transportverbindungen aufgebaut. Das einzusetzende Transportprotokoll hat die Aufgabe,
neben den multimedialen Informationen die Zeitrelevanzen der einzelnen Medienelemente
Verfasser: Holger Kärst
28
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
zu übertragen. Treffen die Datenströme am Stream-Client ein, so werden sie an den
Bereitstellungspuffer übergeben.
Während der Datenübertragung überprüft der Linkmanager kontinuierlich die Güte der
Transportkanäle. Für Daten mit hohen Prioritäten ist es möglich, während der
Transportsession eine redundante Steuerprotokollverbindung zu einem zweiten
Diensterbringer zu erhalten. Der Linkmanager überprüft auch diese Verbindungsqualität
und kann bei kontinuierlicher Verschlechterung einer aktuell genutzten
Transportverbindung eine neue Transportverbindung mit dem zweiten Diensterbringer
aufbauen. Danach wird die Datenübertragung auf die neue Transportverbindung
umgeschaltet. Der Linkmanager steht im ständigen Kontakt mit dem Puffermanagement.
Somit ist eine Flusskontrolle zwischen Stream-Client und Server realisierbar.
Der Stream-Client hat nicht nur die Aufgabe, Daten entgegenzunehmen und zum Puffer
bzw. zur Wiedergabeeinheit weiterzuleiten. Zusätzlich übernimmt er die Fehlererkennung
und Fehlersignalisierung für die eintreffenden Datenpakete.
Die Clientkomponente muss Mechanismen besitzen, um auf die hohe Dynamik des
Netzwerkes reagieren zu können. Mit
Hilfe
des
Steuerund
des
Transportkontrollprotokolls werden die ereignisabhängigen Informationen zwischen den
Kommunikationspartnern ausgetauscht. Den Diensterbringern können keine Informationen
über den korrekten Datenempfang übermittelt werden, da dieser Signalisierungsaufwand
das Netzwerk zu stark belasten würde. Verlässt der Client das Netzwerk bzw. fällt die
Kommunikationsverbindung zu diesem Netzwerkknoten aus, dann muss dieser Zustand
jedoch allen Diensterbringern kenntlich gemacht werden, damit sie die Datenübertragung
zu diesem Netzwerkknoten beenden. Deshalb signalisiert der Client kontinuierlich in
definierten (größeren) Abständen seine Präsenz. Bleiben die Signale beim Diensterbringer
aus, so beendet er den Kommunikationsprozess. Der Ausfall eines Diensterbringers ist für
den Client sehr leicht erkennbar, da er in diesem Fall keine Daten mehr von diesem
Diensterbringer erhält. Hier ist es erforderlich, ein optimales Zeitintervall für den
Umschaltvorgang des Clients vom ausgefallenen Diensterbringer zu einem neuen
Diensterbringer zu ermitteln. Die Wahl des Intervalls ist direkt von der Puffergröße für den
jeweiligen Datenstrom abhängig, da während des Ausbleibens der Daten kein
Pufferleerlauf auftreten darf.
5.2.3. Bereitstellungspuffer
Der Breitstellungspuffer dient zur Speicherung der multimedialen Daten, die von der
Wiedergabeeinheit einmal angefordert wurden. Erst durch diesen Puffer ist es einer
Verteilerquelle möglich, die empfangenen Daten als Diensterbringer zur Verfügung zu
stellen. Der Puffer kann als Pufferfeld angesehen werden. In jedem Feldelement werden
Teile von genau einem Datenstrom abgelegt. Die eintreffenden Transportdateneinheiten
Verfasser: Holger Kärst
29
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
eines Datenstroms werden anhand eindeutiger Identifikatoren sortiert im entsprechenden
Feldelement abgelegt. Die Speicherung vollständiger Datenströme wird aufgrund der
begrenzten Speichermöglichkeiten der Endgeräte nicht möglich sein und ist auch nicht
erforderlich. Die Daten werden als Rohdatenstrom, in Form vollständiger
Transportdateneinheiten im Puffer abgelegt. So sollen alle durch die Hauptquelle
eingetragenen Zeitrelevanzen der paketierten Medienelemente während des gesamten
Verteilungsprozesses unverändert bleiben. Ebenso kann der Teildatenstrom eines
Pufferfeldes direkt von der Stream-Server-Komponente ausgelesen und weitervermittelt
werden. Lediglich die Sende- und Empfangsadressen der Transportdateneinheiten müssen
von der Serverkomponente geändert werden. Es sind keine zusätzlichen Mechanismen
notwendig, um die Daten für den Weiterleitungsprozess vorzubereiten (z.B. neu zu
paketieren).
5.2.4. Puffermanager
Die Aufgaben des Puffermanagers können in drei Teilgebiete gegliedert werden. Die erste
Teilaufgabe besteht darin, die Füllstände der Pufferfelder zu kontrollieren. Werden
definierte Schwellwerte für einen Füllstand erreicht, so wird vom Puffermanager ein Event
kreiert und an den Linkmanager des Clients übermittelt. Der Linkmanager trifft dem
Ereignis entsprechende Entscheidungen für die Flusskontrolle.
Es können nicht endlos neue Daten im Puffer abgelegt werden, ohne alte Daten aus dem
Puffer zu entfernen. Mit einer Altersgrenze für die gepufferten Daten soll der
Puffermanager im zweiten Aufgabengebiet entscheiden, welche Daten aus dem Puffer
gelöscht werden können. Diese Altersgrenze ist für jedes Pufferfeldelement getrennt zu
ermitteln. Jeder in einem Pufferfeldelement abgelegte Datenstrom besitzt eine eigene
gültige zeitliche Relevanz für eine Mediensequenz. Zum Beispiel sind allgemeine
Beschreibungen (Metainformationen) für die gesamte Präsentationszeit gültig, während
einzelne Video- oder Audioelemente nach ihrem Erscheinen nicht mehr benötigt werden.
Jeder Datenstrom ist eindeutig durch einen Datenstromidentifikator gekennzeichnet. Um
jedoch einen Datenstrom im Pufferfeld zu finden, muss auch die Nummer des
Pufferfeldelements, in dem der Datenstrom abgelegt ist, bekannt sein.
Dazu besitzt der Puffermanager eine Zuordnungstabelle, in der die Relationen zwischen
Pufferfeldelementnummer und Datenstromidentifikator abgelegt sind. Zusätzlich werden in
dieser Tabelle kontinuierlich die Zeitrelevanzen der ältesten Transportdateneinheit und der
neusten Transportdateneinheit, für jeden Datenstrom eingetragen. Somit ist immer bekannt
welcher zeitliche Abschnitt des Datenstroms im Pufferfeldelement vorhanden ist. Mit
dieser Tabelle und durch eine Kommunikationsbeziehung zur Serverkomponente wird die
dritte Aufgabe des Puffermanagers realisiert. Nach einer Inhaltsanfrage des Servers
Verfasser: Holger Kärst
30
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
übergibt der Puffermanager alle Tabelleninformationen über die aktuell im Pufferfeld
enthaltenen Datenstromteile an den Server.
Der Server entscheidet nun, welche Datenstromteile vom Puffer gelesen werden sollen.
Zum Auslesen eines Datenstroms greift der Server einfach auf den Puffer mit der
Pufferfeldnummer zu, die dem Datenstrom entspricht.
5.2.5. Server
Der Server ist das Komplement des Clients. Auch er lässt sich in drei Funktionsabschnitte
Stream-Server, Steuerprotokoll-Server und Linkmanager unterteilen.
Der Steuerprotokoll-Server erwartet asynchron eintreffende Clientanfragen. Auf eine
Beschreibungsanfrage antwortet der Steuerprotokoll-Server mit Informationen über alle
Datenstromteile, die aktuell durch den Server streambar sind.
Die Datenstromteile werden durch den Datenstromidentifikator und die Zeitmarken der
ältesten und jüngsten Transportdateneinheit beschrieben.
Die Informationen über die gepufferten Datenstromteile erhält der Server durch eine
Kommunikationsbeziehung zum Puffermanager.
Der Linkmanager des Servers überprüft jeweils für die gestellten Clientanfragen, ob die
verfügbare Kanalkapazität für den Upstream-Vorgang ausreichend ist. Beim Einsatz eines
WLAN-Netzwerkes ist hier besonders darauf zu achten, dass der Upstream-Vorgang in
keiner Weise den Downstream-Vorgang eines Netzwerkknotens beeinflusst. Die
Linkmanager der Client- und der Serverkomponente müssen dazu kontinuierlich die
verfügbaren bzw. aktuell belegten Kanalkapazitäten untereinander abgleichen. Der
Downstream-Vorgang hat eine höhere Priorität als der Upstream-Vorgang. Von der
Clientkomponente geforderte Kanalkapazitäten haben somit immer Vorrang vor
Kapazitätsanforderungen der Serverkomponente.
Vom Steuerprotokoll-Server wird eine Beschreibung für alle aktuell verfügbaren
Datenstromteile an den Client geliefert.
Der Client entscheidet, welche Datenstromteile vom Stream-Server angefordert werden.
Der Stream-Server nimmt asynchron eintreffende Datenstromanforderungen entgegen. Die
Datenstromanforderung enthält den Datenstromidentifikator und die Zeitmarke für die
erste zu liefernde Transportdateneinheit.
Der Stream-Server muss nun das zum geforderten Datenstrom korrespondierende
Pufferfeldelement und die erste zu übertragende Transportdateneinheit ermitteln. Dazu
wird vom Server eine Anfrage an den Puffermanager gestellt. Der Puffermanager ermittelt
anhand seiner Zuordnungstabelle die zum Datenstromidentifikator korrespondierende
Pufferfeldelementnummer und mit Hilfe der Zeitmarke die Pufferstelle der ersten zu
Verfasser: Holger Kärst
31
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
übermittelnden Transportdateneinheit. Die Pufferfeldelementnummer und die Pufferstelle
werden vom Puffermanager an den Stream-Server zurückgeliefert. Der Stream-Server liest
die Transportdateneinheiten entsprechend den erhaltenen Informationen aus dem Puffer
aus und übermittelt sie an den Client.
Während des Upstream-Vorgangs überprüft der Linkmanager kontinuierlich die verfügbare
Upstream-Kapazität. Ist die Kapazität nicht mehr ausreichend, so wird der UpstreamVorgang abgebrochen.
Eine weitere Abbruchsituation des Upstream-Vorgangs kann durch die Dynamik des
Server-Netzwerkknotens und des Netzwerkes entstehen, in dem sich der Server aus dem
Netzwerk entfernt bzw. die Kommunikationsverbindung ausfällt.
5.2.6. Schnittstellen
Die Schnittstellen der Verteilerquelle sind in interne und externe Schnittstellen gegliedert.
Die internen Schnittstellen beschreiben die Kommunikations- und Transportbeziehungen
zwischen den Komponenten in der Verteilerquelle. Die externen Schnittstellen definieren
den Kommunikations- und Transportprozess zwischen der Verteilerquelle und ihrer
Umwelt.
Folgende interne Schnittstellen sind erforderlich:
•
Schnittstelle zwischen Client und Wiedergabeeinheit
•
Schnittstelle zwischen Client und Puffer
•
Schnittstelle zwischen Puffermanager und Client-Linkmanager
•
Schnittstelle zwischen Puffermanager und Puffer
•
Schnittstelle zwischen Puffermanager und Server
•
Schnittstelle zwischen Server-Linkmanager und Client-Linkmanager
•
Schnittstelle zwischen Server und Puffer
Die internen Schnittstellen werden durch die Funktionalität und die Struktur der
miteinander verbundenen Komponenten definiert.
Folgende externe Schnittstellen sind erforderlich:
•
Schnittstelle zwischen Steuerprotokoll-Client und Steuerprotokoll-Server
•
Schnittstelle zwischen Stream-Client und Stream-Server
•
Schnittstelle zwischen Server-Linkmanager und Client-Linkmanager
Die externen Schnittstellen werden durch die einzusetzenden Kommunikations- und
Transportprotokolle bestimmt.
Verfasser: Holger Kärst
32
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Die nähere Spezifikation der Schnittstellen ist erst in der Implementierungsphase möglich,
in der die einzusetzenden Komponenten und Protokolle bekannt sind.
5.3. Datenstruktur
Die Datenstruktur wird durch das Transportprotokoll und das Kodierverfahren bestimmt.
Der Encoder erzeugt unabhängig dekodierbare Dateneinheiten und definiert deren
Zeitrelevanz. Innerhalb einer Transporteinheit können eine oder mehrere vollständige
Dateneinheiten übertragen werden. Eine Fragmentierung der Dateneinheiten während des
Transports ist nicht erlaubt. Die maximale Größe der Transporteinheit entspricht dem Wert
der MTU (Maximum Transfer Unit) des Transportkanals. Zusätzlich werden in jeder
Transporteinheit die Zeitrelevanzen der enthaltenen Dateneinheiten übertragen. Jede
Transporteinheit erhält eine eindeutige Sequenznummer, mit der die Ordnung und die
Vollständigkeit des Transportstromes fortlaufend überprüft werden können.
Verfasser: Holger Kärst
33
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
6. Auswahl der Komponenten für die Implementierung
In diesem Kapitel erfolgt die Auswahl der verfügbaren Techniken und Komponenten, die
in der Implementierung verwendet werden.
Im Besonderen findet eine Untersuchung aktueller Standards zur Kodierung multimedialer
Informationen, eine Untersuchung verfügbarer Transport-, Transportkontroll- und
Steuerprotokolle und eine Analyse gegenwärtiger Hardware- und Softwarekomponenten
für den Kodier-, Verteilungs- und Dekodierprozess statt.
6.1. Untersuchung aktueller Standards zur Kodierung multimedialer
Informationen
Eine der Kernkomponenten dieser Arbeit ist die Untersuchung aktueller Kodierverfahren
für den Einsatz im neuen Multisource-Streaming-Ansatz. Hierbei werden die Standards der
„International Telecommunication Union“ (H.261, H.263) und der „Moving Picture Expert
Group“ (MPEG1, MPEG2 und MPEG4) zur Kodierung multimedialer Daten mit den
Erkenntnissen der Anforderungsanalyse, für die Wahl des geeigneten Kodierverfahrens
verifiziert.
6.1.1. H.261
H.261 ist ein Kodierstandard, der 1990 von der ITU für Videoübertragungen mit geringen
Bandbreiten entwickelt wurde.
Die betrachtete Bandbreite dieses Formats ist ein Vielfaches von 64 KBit/s, was darauf
zurückzuführen ist, dass H.261 ursprünglich für die Videotelefonie in ISDN-Netzen
entwickelt wurde. H.261 basiert auf der bidirektionalen DCT mit unidirektionaler
Bewegungskompensation und eignet sich speziell für die Kodierung in niedrigen
Datenraten bei relativ langsamen Bewegungen. Diese erste Implementierung eines DCTVideocodecs wurde der Ausgangspunkt für die Entwicklung der MPEG-Standards.
Insgesamt unterstützt dieser Standard zwei verschiedene Bildformate (CIF, QCIF).
Die skalierbare Kodierung von multimedialen Daten ist mit H.261 nicht möglich. Deshalb
kann dieses Kodierverfahren nicht in der Implementierung des neuen MultisourceStreaming-Ansatzes verwendet werden.
Verfasser: Holger Kärst
34
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
6.1.2. H.263
Bei H.263 handelt es sich um eine Weiterentwicklung des H.261-Standards, der 1995 von
der ITU veröffentlicht wurde. Mit H.263 wurde das Ziel verfolgt, unterhalb einer Datenrate
von 64 KBit/s eine bessere Darstellungsqualität zu erreichen. Das Kodierverfahren basiert
auf der bidirektionalen DCT und ermöglicht eine verbesserte Bewegungskompensation
gegenüber dem H.261-Standard.
Folgende Funktionserweiterungen wurden implementiert:
•
doppelte Genauigkeit der Bewegungsvektoren
•
bidirektionale Bewegungskompensation
•
zusätzlich wählbare visuelle Auflösungen (SQCIF, 4CIF, 16CIF).
H.263 wurde wie H.261 zur Videoübertragung in ISDN-Netzen entwickelt und ist daher
für geringe Datenraten konzipiert. Die Einführung der bidirektionalen
Bewegungskompensation bietet die Möglichkeit, höhere Kompressionsraten zu erreichen.
Implementierungen des Standards nutzen diese Art der Bewegungskompensation jedoch
nicht aus, da mit diesem Verfahren die Kodierung sehr rechenintensiv wird.
Auch H.263 bietet keine skalierbare Kodierung multimedialer Daten an und ist deshalb
nicht für den Einsatz in der Implementierung des neuen Multisource-Streaming-Ansatzes
geeignet.
6.1.3. Verifikation des MPEG1-Standards
MPEG1 wurde 1991 als erster Standard der „Moving Picture Expert Group“ für die
Kodierung von digitalen multimedialen Sequenzen veröffentlicht. Der Standard ist für die
Kodierung von visuellen Daten mit einer räumlichen Auflösung von 352:288 Pixeln bei 30
Bildern/s bzw. 352:240 Pixeln bei 25 Bildern/s vorgesehen.
MPEG1 wurde zur Speicherung multimedialer Sequenzen auf einer CD-ROM optimiert.
Eine „single Speed“-CD-ROM besitzt eine Transferrate von 1,4 MBit/s.
Entsprechend komprimiert MPEG1 einen zusammengehörenden Video- und Audiostrom
mit einer maximalen Datenrate von 1,4 Mbit/s.
Die Qualität einer MPEG1-Videosequenz ist mit der Qualität einer VHS-Kassette
vergleichbar.
Die Spezifikation des Standards untergliedert sich in drei Teile: MPEG1-Video, MPEG1Audio und MPEG1-System.
Verfasser: Holger Kärst
35
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
6.1.3.1. MPEG1 Video
Ein MPEG1-Videodatenstrom wird funktional, entsprechend der Abb. 12), hierarchisch in
sechs Ebenen unterteilt. Jede Ebene ist definiert strukturiert und besitzt ihren eigenen, klar
abgegrenzten Funktionsumfang.
Abb. 12) Struktur des MPEG1-Videostroms (Ref: [13] S. 136 Figure 8.1)
Die MPEG1-Videosequenz beginnt mit dem Sequenz-Header. Hier werden die Parameter
(Bildgröße, Framerate, Bitrate...) definiert, die für den gesamten Datenstrom gültig sind.
Der Sequenz-Header kann optional mehrmals in der Videosequenz enthalten sein. Diese
Wiederholungen werden durch die Funktionen Zufallswiedergabe und Videobearbeitung
gefordert. Auf den Sequenz-Header folgt mindestens eine Group of Picture. Das Ende der
Videosequenz wird mit dem Sequenz End Code signalisiert.
Die Group of Picture (GOP) definiert eine zusammengehörige Bildfolge. Sie erleichtert mit
implementierten Zeitinformationen und Editierparametern die Bearbeitung eines kodierten
Videostroms. Eine Group of Picture besteht aus einem GOP-Header und mindestens einem
Bild. Sie wird im GOP-Layer definiert.
Jedes Bild wird im Picture-Layer durch einen Picture-Header eingeleitet und besteht
mindestens aus einem Slice. Der Picture-Header enthält alle Parameter, die für das
jeweilige Bild eine lokale Gültigkeit besitzen.
Der Slice-Layer beschreibt die unterste Hierarchiestufe, die mit einem Startcode initiiert
wird. Mit diesen Startcodes werden Synchronisationspunkte geschaffen, durch die sich ein
Decoder bei Datenverlusten oder Datenfehlern schnell resynchronisieren kann. Ein Slice
Verfasser: Holger Kärst
36
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
beschreibt aufeinander folgende Makroblöcke mit einem gleichen mittleren Grauwert.
Jeder Slice besteht aus einem Slice-Header und mindestens einem Makroblock. Der erste
Slice beginnt in der oberen linken Ecke des Bildes und der letzte Slice endet in der unteren
rechten Ecke. In MPEG1 muss das gesamte Bild durch Slice’s gefüllt werden.
Die Abb. 13) zeigt beispielhaft eine Slicefolge eines Bildes.
Makroblöcke sind die Bezugsgrößen für die Bewegungskompensation und die
Bewegungsabschätzung. Die Kodierung der Blöcke wird im Block-Layer definiert. Ein
Makroblock besteht aus einem Makroblock-Header und entsprechend der Abb. 14) aus
sechs DCT-Blöcken. Jeder DCT-Block enthält 8x8 quantisierte und VL-kodierte
Abtastwerte eines Bildausschnitts (siehe Vorbetrachtung). Blöcke sind die
Transformationseinheit der zweidimensionalen Diskreten-Cosinus-Transformation.
Abb. 13) Slicestruktur eines MPEG1-Frames
Abb. 14) Blocknummerierung im MPEG1
Chromaformat 4:2:0
Die Definitionen für die vorgestellten Elemente des MPEG1 Videostroms können in [31]
nachgelesen werden.
6.1.3.2. MPEG1 Audio
In der Vorbetrachtung wurde der MPEG-Audio-Standard bereits vorgestellt. MPEG1
unterstützt das ältere Kodierverfahren mit den Layern 1, 2 und 3.
Weitere Informationen über den MPEG1 Audio Standard erhält man in [32].
Verfasser: Holger Kärst
37
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
6.1.3.3. MPEG1 System
Eine Multimediasequenz besteht normalerweise aus Audio- und Videodaten. Die
multimedialen Daten benötigen Zeitinformationen, damit alle abhängigen Elemente
zeitlich synchron dargestellt werden können. Der MPEG1-System-Part fasst
zusammengehörende Video- und Audioströme in einem Systemdatenstrom zusammen. Die
Daten werden paketiert und in sog. Packs gebündelt. Folgende Abbildung stellt die
Struktur des Systemdatenstroms grafisch dar:
Abb. 15) Struktur des MPEG1-Systemstroms
Jeder Pack besteht aus einem Pack-Header, optional einem System-Header und einer
Sequenz von Packets. Der Pack-Header enthält, wie in der Abb. 16) dargestellt, einen
Zeitstempel, mit dem die Zeitbasis des Kodierprozesses vom Decoder rekonstruiert werden
kann. Die Größe eines Packs wird im Standard nicht festgelegt. Sie ist jedoch meistens an
die Sektorgröße eines Speichermediums angepasst.
Abb. 16) MPEG1-System Pack-Header
Der System-Header enthält zusätzliche Informationen über die Eigenschaften der im
Systemdatenstrom enthaltenen Video- und Audioströme. Die Struktur des Headers
beschreibt die folgende Abbildung.
Verfasser: Holger Kärst
38
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Abb. 17) MPEG1-System-Header
Das Packet ist die kleinste atomare Einheit des MPEG1-System-Parts. Es besteht aus
einem Header (siehe Abb. 18)) und einem Datenteil.
Abb. 18) MPEG1-Packetheader
Im Datenteil des Packets werden die kleinsten, einzeln dekodierbaren Elemente (Access
Units) einer Audio- oder Videosequenz übertragen. Eine Access Unit ist z.B. ein Bild einer
Videosequenz oder eine Folge von Samplewerten eines Audiodatenstroms. Um die
synchrone Darstellung abhängiger Video- und Audioelemente sicherzustellen, bekommt
jede Access Unit mindestens einen Zeitstempel. Man unterscheidet zwischen zwei
Zeitinformationen. Die Presentation Timestamp (PTS) beschreibt, wann eine Access Unit
im Wiedergabevorgang dargestellt werden muss. Die Decoding Timestamp (DTS) definiert
den Zeitpunkt, zu dem eine Access Unit für den Dekodiervorgang verfügbar sein muss.
Die funktionale Beschreibung der Headerelemente und erweiterte Informationen über den
MPEG1-System-Part erhält der Leser in [13] und in [30].
6.1.3.4. Einsatz von MPEG1 im spezifizierten Multisource-Streaming-Ansatz
Eine skalierbare Videokodierung und Audiokodierung ist in MPEG1 nicht vorgesehen und
auch nicht möglich. Eine unabhängige Verteilung eines Audiodatenstroms, getrennt vom
zugehörigen Videodatenstrom ist denkbar, wenn die Mediaströme jeweils in eigenständige
Systemdatenströme verpackt werden. Die notwendigen Synchronisationsinformationen
sind im Systemdatenstrom (Packetheader) integriert. Die Aufteilung der multimedialen
Daten in einen einzelnen Video- und einen einzelnen Audiodatenstrom ist für die
Forderung nach Skalierbarkeit der Multimediasequenz jedoch nicht ausreichend.
Fehlerbehandlung, bzw. Fehlerkorrekturmechanismen sind kein Teil des MPEG1Standards. Fehlerschutz muss auf der Anwendungsebene der Endgeräte bereitgestellt
Verfasser: Holger Kärst
39
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
werden. Aufgrund der fest definierten Struktur einer MPEG1-Videosequenz können Fehler
jedoch leicht erkannt werden. Ein MPEG1-Decoder erwartet während des
Dekodiervorganges immer eine definierte Bitfolge. Durch die Slice-Struktur der
Videosequenz bzw. die definierten Startcodes stehen viele Synchronisationspunkte zur
Verfügung, mit denen sich der Decoder im Fehlerfall schnell auf den Datenstrom
resynchronisieren kann. Eine flexible Anpassung der Multimediasequenz an
Übertragungskanäle und Endgeräte wird nicht unterstützt. Der Multisource-StreamingAnsatz über hochdynamische Netzwerke mit stark variierenden Endgeräten ist mit
MPEG1-kodierten Sequenzen nicht realisierbar.
6.1.4. Verifikation des MPEG2-Standards
Die Entwicklung von MPEG2 begann ab 1991 durch die CCITT (ITU-T). Für MPEG1
wurden, aufgrund der relativ geringen standardisierten Video-Auflösung, die Grenzen
erreicht, um die Bildqualität weiter zu verbessern. Höhere Auflösungen für digitales
Fernsehen, die Unterstützung von Interlaced Video, die Verteilung von
Multimediasequenzen über drahtgebundene Netzwerke, sowie erste Skalierbarkeitsansätze
in der Kodierung waren die Zielstellungen für die MPEG2-Entwicklung. Aufgrund der
höheren unterstützten Video-Auflösung ist MPEG2 hauptsächlich für den Einsatz in
Breitbandnetzen spezifiziert und benötigt leistungsfähige Endgeräte für die Dekodierung.
Als Erweiterung bzw. Verbesserung des MPEG2-Standards gegenüber dem MPEG1Standard sind zu nennen:
•
Verteilung von Multimediaströmen über Netzwerke
•
Genauigkeit des DC-Wertes ist steuerbar
•
variable Quantisierung mit kontinuierlicher Anpassung der Übertragungsrate an
die Qualität des Übertragungsmediums
•
höhere Auflösung (352x288 - 1920x1152) für Videosequenzen und damit
Unterstützung höherer Datenraten und größerer Empfangspuffer
•
verbesserte Fehlerrobustheit, Möglichkeit der Fehlerverschleierung
•
Übertragung von zusätzlichen Informationen innerhalb des Systemstroms
(Copyright, Display-Charakteristiken, ein Offset ermöglicht die Vorschau eines
Bildes in geringerer Auflösung)
•
innerhalb eines Systemstroms kann eine größere Anzahl von Video- und
Audioströmen gemultiplext werden, die nicht zwingend eine gemeinsame
Zeitbasis besitzen müssen
Verfasser: Holger Kärst
40
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
•
vier verschiedene Skalierungsmöglichkeiten zur Anpassung von Videoströmen an
die Güte unterschiedlicher Übertragungssysteme und die Kapazitäten heterogener
Endgeräte
•
Unterstützung mehrkanaliger Audiokodierung
Mit den Erweiterungen stieg die Komplexität für die Implementierung von MPEG2 an. Die
gesamte Syntax des MPEG2-Standards zu implementieren, ist für die meisten
Anwendungen nicht sinnvoll. Daher wurde in MPEG2 das Konzept der Profile und Level
eingeführt. Profile und Level definieren abgegrenzte Abschnitte des MPEG2-Standards.
Jedes Profil stellt modular eine bestimmte Funktionalität zur Verfügung. Ein Level legt
spezifische Wertebereiche für die Parameter eines Streams fest, z.B. Bildgröße, Framerate,
Bitrate usw. Im MPEG2-Standard werden fünf verschiedene Profile abgrenzt (Simple
Profile, Main Profile, SNR scalable Profile, Spatial scalable Profile, High Profile). Im
Anhang B ist ein Ausschnitt aus dem MPEG2-Standard, als Überblick über die Profile und
Level dargestellt.
Für den Multisource-Streaming-Ansatz sind die Profile SNR, Spatial, und High besonders
interessant. Sie bieten die Möglichkeit an, örtliche und zeitliche Skalierbarkeit für einen
Videostrom zu realisieren. Deshalb ist die Analyse dieser Profile tiefgründig erforderlich.
Da das Main-Profile jedoch die Grundlage für die skalierbaren Profile ist, wird zunächst
darauf näher eingegangen.
6.1.4.1. MPEG2 (Main-Profile) - Video
Die Syntax und die Struktur einer Videosequenz, gemäß dem Main-Profile des MPEG2Standards, entspricht grundlegend dem MPEG1-Ansatz. So soll die Abwärtskompatibilität
von MPEG2 zu MPEG1 sichergestellt werden.
Abb. 19) Kompatibilität zw. MPEG1 und MPEG2 Video (Referenz: [14] S.183)
Auch die MPEG2-Videosequenz wird in sechs Hierarchiestufen aufgeteilt. Der SequenzLayer ist die oberste Hierarchiestufe und beginnt mit dem Sequenz-Header. Hier werden,
wie in der MPEG1-Struktur, die Parameter definiert, die für die gesamte Bildsequenz bis
zum nächsten Sequenz-Header gültig sind. Nach dem Sequenz-Header kann entweder eine
MPEG1-konforme Videosequenz folgen (siehe Abb. 19), oder aber der Beginn einer
MPEG2-Videosequenz durch eine Sequenz Extention signalisiert werden. Nach der
Sequenz Extention folgt optional eine Group of Picture (GOP) oder direkt ein Bild (IVerfasser: Holger Kärst
41
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Frame, P-Frame). In einer MPEG2-Videosequenz muss ein Bild nicht unbedingt einer
Group of Picture angehören. Das Ende der Sequenz wird durch den Sequenz End Code
signalisiert.
Eine durch den GOP-Header signalisierte Group of Picture, muss mindestens ein Bild
enthalten. Das erste Bild dieser GOP ist immer ein I-Frame. Nach dem GOP-Header
können optional Nutzerdaten implementiert werden.
Die Bilder einer GOP werden im Picture-Layer definiert und mit einem Picture-Header,
einer optionalen Picture Coding Extension und optionalen Extension And User Data
beschrieben. Jedes Bild besteht aus mehreren Slice’s.
Bei MPEG2 gilt die Einschränkung, dass ein Slice eine Bildzeile (Makroblockreihe) nicht
überschreiten darf. Damit wurde die Fehlerrobustheit von MPEG2-kodierten
Videosequenzen gegenüber Sequenzen des MPEG1-Standards verbessert.
Die Makroblöcke bestehen aus mindestens sechs Blöcken mit jeweils 8x8 Abtastwerten.
Für das Luminanzsignal werden vier 8x8 Blöcke kodiert. Beim Chrominanzsignal
unterscheidet man im MPEG2-Standard drei Chroma-Formate (4:2:0, 4:2:2, 4:4:4).
Während für das Chroma-Format 4:2:0 zwei Blöcke für die Aufnahme der
Chrominanzsignale ausreichen, werden beim 4:2:2 Chroma-Format vier und beim 4:4:4
Chroma-Format sechs Blöcke für die Kodierung der Farbinformationen benötigt.
Die hierarchische Struktur der Videosequenz ist in der folgenden Abbildung grafisch
dargestellt.
Abb. 20) Struktur einer MPEG2-Videosequenz (Referenz: [14] S.183)
Verfasser: Holger Kärst
42
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
6.1.4.2. Skalierbarkeit von Videosequenzen im MPEG2-Standard
Grundsätzlich werden im MPEG2-Standard vier verschiedene Möglichkeiten für eine
skalierbare Kodierung bereitgestellt: Data Partitioning (Datenaufteilung), SNR Scalability
(Qualitätsskalierung), Spatial Scalability (räumliche Skalierung) und Temporal Scalability
(zeitliche Skalierung). Die Kombination verschiedener Skalierungsmöglichkeiten wird mit
hybrider Skalierung bezeichnet.
Spatial Scalability (räumliche Skalierung)
Der MPEG2-Encoder erzeugt aus einer Videosequenz zwei kodierte Bitströme mit
Bildinformationen unterschiedlicher räumlicher Auflösungen. Der Basisstrom enthält
Bildinformationen mit einer kleinen Mindestauflösung. Diese Auflösung wurde durch eine
Unterabtastung der Bildinformationen des Quellvideostroms erzeugt. Der Bitstrom der
Erweiterungsschicht überträgt die Differenz zwischen dem originalen, hoch aufgelösten
Bild und dem in der Basisschicht kodierten, niedrig aufgelösten Bild als
Zusatzinformation.
Beide Datenströme können unabhängig von einander übertragen werden.
Nutzt der Decoder des Empfängers nur die Informationen des Basisstroms, dann wird die
Videosequenz in einer niedrigen Auflösung wiedergegeben. Die gemeinsame Dekodierung
der Basis- und der Erweiterungsströme erlaubt die Wiedergabe der Videosequenz in der
originalen Auflösung.
Die Bewegungskompensation erfolgt in beiden Hierarchiestufen. In der
Erweiterungsschicht werden die Differenzen zwischen aufeinanderfolgenden Bildern für
die Bewegungskompensation genutzt. Zusätzliche Informationen erhält der Decoder durch
räumliche Prädiktionen aus Bildern der Basisschicht.
SNR Scalability
SNR-skalierbare Kodierung erzeugt aus einem Quellvideostrom zwei Bitströme mit der
gleichen räumlichen Auflösung, jedoch mit unterschiedlichen visuellen Qualitäten. Dazu
wurde eine Strategie entwickelt, mit der die DCT-Koeffizienten der Basisschicht durch
zusätzliche Informationen der Erweiterungsschicht verfeinert werden können. Die
Quantisierungsfehler, die beim Kodierprozess des Basisdatenstromes entstehen, werden als
Zusatzinformation im Erweiterungsstrom kodiert und transportiert. Die Quantisierung des
Videomaterials für die Basisschicht erfolgt entsprechend den Quantisierungstabellen des
Main-Profiles. Für die Berechnung der entstandenen Quantisierungsfehler wird das
quantisierte Bild requantisiert und vom Originalbild subtrahiert.
Die Bewegungskompensation wird nur in der Basisschicht vorgenommen.
Der Decoder des Empfängers requantisiert den Bitstrom der Basisschicht. Erhält der
Decoder die zusätzlichen Informationen des Erweiterungsdatenstroms, so kann er den
Quantisierungsfehler der DCT-Werte aus der Basisschicht verkleinern und damit die
Verfasser: Holger Kärst
43
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Bildqualität erhöhen. Die Dekodierung des Bitstroms der Basisschicht ist auch ohne die
Informationen der Erweiterungsschicht möglich, jedoch mit einer schlechteren
resultierenden Bildqualität.
Der Dekodiervorgang wird in der folgenden Abbildung dargestellt.
QFS [n]
Variable
Length
Decoding
Coded
Data
QF [v][ u ]
Inverse
Scan
F'' lower [v][ u]
Inverse
Quantisation
Arithmetic
Lower Layer
QFS [n]
Enhancement Layer
Coded
Data
Variable
Length
Decoding
Σ
QF [v][ u ]
Inverse
Scan
Inverse
Quantisation
Arithmetic
F'' [ v][u]
F'' enhance [v ][u]
Framestore
Memory
F' [v][u]
Saturation
F[v ][u]
Mismatch
Control
Inverse
DCT
Motion
Compensation
f[y ][ x]
Decoded
Pels
d [y][ x ]
Abb. 21) Dekodierung einer SNR-skalierbar codierten MPEG2-Videosequenz (Ref: [16] S.107)
Das Verfahren Chroma Simulcast beschreibt die zweite Möglichkeit für eine SNRskalierbare Kodierung. Hierbei kann ein 4:2:0 Chroma-Format des Basisstromes durch
zusätzliche Informationen des Erweiterungsstromes in ein 4:2:2 Chroma-Format verbessert
werden. Die Chrominanzinformationen (DC-, AC-Werte) der Basisschicht werden durch
neue Informationen aus der Erweiterungsschicht ersetzt, die eine höhere Auflösung haben.
Es wird vorausgesetzt, dass korrespondierende Bilder beider Schichten die gleiche
Zeitrelevanz besitzen (PTS und DTS Werte der Access Units beider Schichten müssen im
Systemdatenstrom identisch sein). Die Möglichkeiten des Einsatzes von Chroma Simulcast
zeigt die folgende Tabelle.
chroma_format
(lower layer)
4:2:0
4:2:0
4:2:0
4:2:2
4:2:2
4:4:4
chroma_format
(enhancement layer)
4:2:0
4:2:2
4:4:4
4:2:2
4:4:4
4:4:4
chroma_simulcast
0
1
1
0
1
0
Tabelle 3: SNR-Skalierbarkeit durch Chroma Simulcast Referenz: [16] S.109
Verfasser: Holger Kärst
44
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Temporal Scalability
Die zeitliche Skalierung wird in den Profilen SNR und High eingesetzt. Der Encoder
erzeugt aus einem Quellvideostrom zwei Datenströme mit unterschiedlichen
Bildwiederholraten.
Der Basisstrom überträgt die Videosequenz in einer definierten, niedrigen
Bildwiederholrate. Der Erweiterungsstrom enthält zusätzliche Bilder. Werden Basis- und
Erweiterungsstrom beim Empfänger zeitlich remultiplext, so entsteht die Videosequenz mit
der vollen Bildwiederholrate.
Für P- und B-Frames sind dabei Referenzen auf vorangehende bzw. rückwärtige Bilder
innerhalb und zwischen den Datenströmen erforderlich.
Diese Referenzen werden mit dem folgenden dargestellten Erweiterungsheader kodiert.
Abb. 22) Picture temporal scalable extension
Folgende Referenzen von P- bzw. B-Frames sind möglich:
Referenzen für P-Frames:
reference_select_code
00
01
10
11
forward prediction reference
gerade kodiertes Bild aus der
Erweiterungsschicht
gerade kodiertes Bild aus der Basisschicht
Nächster Frame der Basisschicht in Display
Order
verboten (entspricht I-Pict.)
Tabelle 4: Referenzen für zeitlich skalierte P-Frames des MPEG2-Standards Referenz: [16] S. 113
Referenzen für B-Frames:
reference forward prediction
select_code reference
backward prediction reference
00
verboten
verboten
01
gerade kodiertes Bild aus
der Erweiterungsschicht
gerade kodiertes Bild der
Basisschicht in Display Order
gerade kodiertes Bild aus
der Erweiterungsschicht
gerade kodiertes Bild der
Basisschicht in Display
Order
nächstes kodiertes Bild der
Basisschicht in Display Order
10
11
nächstes kodiertes Bild der
Basisschicht in Display Order
Tabelle 5: Referenzen für zeitlich skalierte B-Frames des MPEG2-Standards Referenz: [16] S. 114
Verfasser: Holger Kärst
45
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Im Erweiterungsstrom können I-, P- oder B-Frames übertragen werden, wobei sich hier BFrames wie P-Frames verhalten, da Verweise auf rückwärtige Bilder im
Erweiterungsstrom nicht erlaubt sind. Durch diese Einschränkung wird verhindert, dass
Bilder des Erweiterungsstroms umsortiert werden müssen.
Die Abb. 23) stellt die zeitliche Skalierung einer visuellen Mediasequenz dar.
Abb. 23) Temporal Scalability
Data Partitioning
Die Daten eines Videostromes werden mit Data Partitioning, entsprechend der Abb. 24),
in zwei Partitionen aufgeteilt. Der im Slice-Header optional angegebene Priority
Breakpoint kennzeichnet, welche Elemente des Stroms in die Partition 0 (Basisstrom mit
hoher Priorität) und welche Elemente in die Partition 1 (Erweiterungsstrom mit niedriger
Priorität) eingeordnet werden. Ist der Priority Breakpoint während der Partitionierung
veränderbar, so können die Datenraten der beiden Partitionen flexibel an die Qualität eines
Übertragungskanals angepasst werden. Für eine Fehlerkorrekturmöglichkeit werden
Sequence-, GOP- und Picture-Header, sowie der Sequence End Code redundant in beiden
Partitionen übertragen. Data Partitioning ist bisher keinem MPEG2-Profil zugeordnet.
Quant
Scale
DC
coeff
1
DCT
DCT
DCT
coeff 1 coeff 2 coeff 3
EOB
DC
coeff
Quant
Scale
DC
coeff
DCT
coeff 1
DC
coeff
DCT
coeff 1
2
DCT
coeff 1
EOB
Partition 0
4
3
DCT
DCT
coeff 2 coeff 3
EOB
EOB
Partition 1
Abb. 24) Data Partitioning (Ref: [16]S. 119)
Verfasser: Holger Kärst
46
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Hybrid Scalability
Die hybride Skalierung beschreibt den kombinierten Einsatz zweier verschiedener Typen
der Skalierbarkeit. Hierbei entstehen drei hierarchisch aufeinander aufbauende Schichten.
Man unterscheidet folgende drei Varianten für den kombinierten Einsatz verschiedener
Skalierungsmechanismen:
Basisschicht
Erweiterungschicht 1
Erweiterungschicht 2
Basisdatenstrom
Spatial or
Temporal
Scalability
SNR Scalability
Basisdatenstrom
SNR Scalability
Spatial or
Temporal
Scalability
Basisdatenstrom
Spatial or
Temporal
Scalability
Spatial or
Temporal
Scalability
Tabelle 6: Möglichkeiten der hybriden Skalierbarkeit in MPEG2
6.1.4.3. MPEG2 Audio
Der MPEG2-Audio-Standard unterstützt zwei grundlegend verschiedene Kodierverfahren.
Das Erste ist eine abwärtskompatible Erweiterung des MPEG1-Audio-Standards. Die
Grundlagen der drei MPEG1-Layer (siehe Vorbetrachtungen) wurden in den MPEG2Standard übernommen. Im Wesentlichen wurde der Audio-Standard um funktionale
Elemente, wie die Unterstützung von Mehrsprachigkeit und Surround Sound erweitert.
MPEG2 unterstützt nun 5 vollwertige Audiokanäle, die für Surround Sound (links vorne,
links hinten, rechts vorne, rechts hinten und Mitte) oder für multilinguale Soundtracks
genutzt werden können. Außerdem sind zwei Erweiterungskanäle für Audiosignale mit
niedrigen Frequenzen (15-120Hz) verfügbar. In MPEG2 ist es auch möglich, die halbe
Abtastrate für die Erzeugung der Abtastwerte der Audiofrequenzen zu benutzen.
Sampleraten von 16 KHz, 22,05 KHz und 24 KHz sind zusätzlich zu den MPEG1Abtastraten von 44 KHz und 48KHz in jedem Layer erlaubt.
Um zum MPEG1-Standard konform zu bleiben, wurde die grundlegende Struktur des
Audioframes beibehalten. Über Multichannel Extension können die zusätzlichen
Audiokanäle des MPEG2-Audio-Standards in dem Audioframe implementiert werden.
Verfasser: Holger Kärst
47
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Der Audioframe hat die folgende Struktur:
Abb. 25) Struktur eines zu MPEG1 kompatiblen MPEG2 Audioframes
Der zweite Abschnitt des MPEG2-Audio-Standards definiert das neue MPEGKodierverfahren Advanced Audio Coding (AAC), das bereits in den Vorbetrachtungen
erläutert wurde.
6.1.4.4. MPEG2 System
In einen MPEG2-Systemstrom werden mehrere Audio- und Videoströme zu einem
kontinuierlichen Bitstrom gemultiplext. Jeder elementare Audio- bzw. Videostrom stellt
selbst einen kontinuierlichen Bitstrom aus Bildern oder Audiosegmenten dar. Aufgrund der
variablen Lauflängenkodierung benötigen einzelne Bilder unterschiedliche Transportzeiten
für die Übertragung. Deshalb werden elementare Ströme paketorientiert innerhalb eines
Packetized Elementary Stream (PES) übertragen. Ein PES-Paket ist, wie in der Abb. 26)
dargestellt aufgebaut.
Verfasser: Holger Kärst
48
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Abb. 26) Struktur des MPEG2 Packetized Elementary Stream (Referenz: [14] S. 223)
Das PES-Paket wird über einen einheitlichen Packet Start Code initiiert.
Die Stream-ID identifiziert den Typ und die eindeutige Nummer eines elementaren Videooder Audiostroms innerhalb des Systemdatenstroms.
Über das Headerfeld PES Priority des optionalen PES Headers ist es möglich, jedem PESPaket eine Priorität zuzuordnen. Man unterscheidet zwischen zwei Prioritätsstufen. Die
PES-Pakete mit wichtigen Informationen erhalten die hohe Priorität 1. Pakete mit weniger
wichtigen Daten werden mit der Priorität 0 gekennzeichnet. So können z.B. I-Frames bei
der Übertragung gegenüber P- oder B-Frames bevorzugt behandelt werden.
In einem PES-Paket werden die, aus MPEG1 bekannten, Zeitinformationen Presentation
Timestamp (PTS) und Decoding Timestamp (DTS) übertragen. Aufgrund dieser
Zeitinformationen können die elementaren Video- und Audioströme synchronisiert
werden.
Optional können die Daten eines PES-Pakets durch eine 16 Bit Cyclic Redundancy Check
Sequenz abgesichert werden. Die Fehlerüberprüfung erfolgt über das Generatorpolynom
x16 + x12 + x 5 + 1 . Das aktuelle PES-Paket enthält immer die CRC-Sequenz über die Daten
des vorherigen PES-Pakets. Die Pakete sind somit abhängig von einander und müssen in
der korrekten Reihenfolge beim Empfänger eintreffen bzw. sortiert werden.
Der Program Packet Sequenz Counter ist ein optionaler Zähler, der für jedes PES-Paket
eines Programmstroms oder für jedes Paket eines einzelnen Programms eines
Verfasser: Holger Kärst
49
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Transportstroms inkrementiert wird. Ist der maximale Wert (256) des Zählers erreicht, so
beginnt der Zähler wieder bei Null.
Ein oder mehrere PES-Pakete können in einen PES-Pack integriert werden.
Abb. 27) MPEG2 PES-Pack (Ref: [14] S. 224)
Der PES-Pack beginnt mit einem Pack-Header, in dem ein Synchronisationsmuster und
eine Zeitinformation enthalten sind. Die Zeitinformation stellt eine gemeinsame Zeitbasis
für alle PES-Pakete des Packs dar. Die Pack-Struktur ist in der Abb. 27) dargestellt.
Da MPEG2 nicht nur für die digitale Speicherung von multimedialen Daten entwickelt
wurde, sondern auch für den Transport von Multimediaströmen über Netzwerke, werden
unterschiedliche Anforderungen an die Synchronisation und die Robustheit gegenüber
Fehlern gestellt. Um diesen Anforderungen gerecht zu werden, unterstützt MPEG2 zwei
verschiedene Datenströme, den Programmstrom (PS) und den Transportstrom (TS). Für
beide Ströme sind die PES-Pakete die grundlegenden Datenelemente.
Transportsstrom
Der Transportstrom besteht aus mehreren, von einander unabhängigen Programmen. Diese
Programme haben untereinander keine gemeinsame Zeitbasis. Sie bestehen jeweils aus
einem elementaren PES-Paketstrom und können von unterschiedlichen Quellen stammen.
Ein Programm enthält einen oder mehrere Video- und Audioströme mit einer
gemeinsamen Zeitbasis. Damit sich der Decoder auf die Zeitbasis des jeweils zu
dekodierenden Programms synchronisieren kann, muss für jedes Programm eine
unabhängige Taktinformation, die Program Clock Reference (PCR) übertragen werden.
Die Abb. 28) beschreibt die Struktur des Transportstroms.
Verfasser: Holger Kärst
50
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Abb. 28) MPEG2-Transportstrom (Ref: [14] S. 225)
PES-Pakete unterschiedlicher Elementarströme werden innerhalb der Pakete eines
Transportstromes übertragen. Die Transportstrompakete besitzen eine feste Länge von 188
Byte und sind in einen Header- und in einen Payloadabschnitt unterteilt.
Abb. 29) MPEG2-Transportstrompaket Header-Struktur (Ref: [14] S. 225)
Aus Effizienzgründen besteht ein Transportstrom-Paket-Header aus einem kleinen BasisHeader und Erweiterungsfeldern (siehe Abb. 29). 4
Der Basis-Header beginnt mit dem Synchronisationsbyte 0x47, mit dem ein Demultiplexer
den Anfang eines Paketes erkennen kann. Es folgen drei Bit für eine einfache
Fehlererkennung, sowie die Möglichkeit, Pakete zwei verschiedenen Prioritäten zuordnen
zu können. Der Packet Identification Code (PID) dient zur Adressierung der
unterschiedlichen Programme bzw. zur Identifizierung einer im Transportstrom
enthaltenen Program Association Table (PAT => PID=0). Die PAT wird in definierten
Intervallen übertragen und ist eine Übersicht über alle im Transportstrom enthaltenen
Programme. Die restlichen Bits ermöglichen dem Multiplexer die PES-Paketströme der
Verfasser: Holger Kärst
51
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
verschiedenen Programme statistisch zu multiplexen. Somit können definierte mittlere
Datenraten für ein Programm realisiert werden. Im PCR-Erweiterungsheader wird die
Zeitbasis eines Programms kodiert. Hierzu ist ein 48 Bit großes PCR-Feld vorgesehen.
Der Transportstrom ist unabhängig von der eigentlichen Übertragungsstrecke. Die
Übertragung kann in verlustreichen und gestörten Umgebungen erfolgen. Durch die relativ
kleinen Pakete konstanter Länge kann man auf Übertragungsfehler schnell reagieren.
Fehlerhafte Transportstrom-Pakete werden über ein gesetztes Transport Error Flag
signalisiert. Dieses Flag muss durch Mechanismen außerhalb des MPEG2-Standards
aktiviert werden.
Programmstrom
Der Programmstrom entspricht im Wesentlichen einem MPEG1-Systemstrom. Er stellt die
Abwärtskompatibilität von MPEG2 zu MPEG1 bereit. In einem PS ist genau ein
Programm enthalten. Dieses Programm beinhaltet einen oder meist mehrere elementare
Video- und Audioströme, die eine gemeinsame Zeitbasis besitzen, die System Clock
Reference (SCR). Die Pakete eines Programmstroms sind variabel bis zu 64 kbyte lang.
Die mittlere Länge eines PS-Paketes beträgt ca. 1 kbyte bis 2 kbyte. Das Einsatzgebiet
eines Programmstroms ist die digitale Speicherung von Multimediadaten. Dabei wird eine
relativ störfreie Umgebung vorausgesetzt.
Fehlererkennungsmechanismen und Fehlerbehandlung sind deshalb nicht vorhanden.
6.1.4.5. Fehlererkennung in MPEG2
Der MPEG2-Standard definiert zwei Möglichkeiten, um Fehler in einem MPEG2Transportdatenstrom zu erkennen.
Im Packet-Header des MPEG2-Transportstroms kann ein fehlerhaftes Transportpaket
durch ein Paritätsbit, das Error Flag, signalisiert werden. Der Verlust eines Paketes führt
zwangsläufig zur Störung des Dekodierprozesses, meist zur Beeinträchtigung der
Synchronisation. Aufgrund der Slicestruktur ist es einem Decoder jedoch möglich, sich
nach einem aufgetretenen Fehler schnell zu resynchronisieren. Bitfehler verursachen somit
meist nur Bildfehler, die auf kleine Flächen beschränkt sind.
MPEG2-Decoder erwarten aufgrund der fest definierten MPEG2-Syntaxstruktur immer
definierte zeitlich aufeinander folgende Codewörter im Datenstrom (Startcode ->
Erweiterungscode ->...). Sollte ein unerwartetes oder unbekanntes Codewort vom Decoder
empfangen werden, so wird das gerade dekodierte Element (Block, Makroblock, Slice,
Picture...) als fehlerhaft erkannt.
Verfasser: Holger Kärst
52
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
6.1.4.6. Fehlerbehandlung in MPEG2
Der MPEG2-Standard definiert keine Mechanismen, um Fehler im Datenstrom korrigieren
zu können. MPEG2-Decoder unterstützen jedoch verschiedene Techniken, um die
aufgetretenen Fehler zu verschleiern.
Der Decoder nutzt dazu die fehlerfreien Informationen, um abschätzen zu können, welche
Inhalte anstelle verlorener oder fehlerhafter Daten angezeigt werden sollen. Dabei wird
immer die Annahme zugrunde gelegt, dass die Bildcharakteristiken zwischen adjazenten
Blöcken sehr ähnlich sind. Deshalb werden Abschätzungen für fehlerhafte oder verlorene
Blöcke mit Hilfe von Nachbarfeldern oder Nachbarbildern durchgeführt.
Temporal Predictive Concealment
In der einfachsten Variante wird ein verlorener oder fehlerhafter Makroblock mit einem
Makroblock der gleichen Position aus dem vorherigen Bild ersetzt. Das funktioniert mit
ähnlichen benachbarten Bildern gut. In Videosequenzen mit schnellen Bewegungen ist
diese Methode jedoch nicht einsetzbar, da die Bildinformationen zwischen den
benachbarten Bildern stark verschoben sein können. In diesem Fall werden zusätzlich die
Bewegungsvektoren des zerstörten oder verlorenen Blocks durch die Bewegungsvektoren
benachbarter Bilder abgeschätzt. Sind die benachbarten Bilder jedoch I-Frames, so
besitzen diese keine Bewegungsvektoren. Es gibt hier die Möglichkeit Concealment
Motion Vectors innerhalb von I-Frames zu übertragen.
Spatial Predictive Concealment
Für den Inhalt eines zerstörten oder verlorenen Makroblocks werden interpolierte Werte
der benachbarten Makroblöcke eines Bildes eingesetzt. Diese Verschleierungstechnik ist
vorteilhaft wenn schnelle Bewegungsabläufe in den Videosequenzen enthalten sind, bzw.
ein Szenenwechsel während des Verlustes stattfindet. Bei der Interpolation werden meist
nur der DC-Koeffizient und der unterste AC-Koeffizient einbezogen, da die Mittelung von
sehr feinen Details in schnell bewegten Bildern nicht sinnvoll ist.
Skalierbare Videokodierung und Fehlerverschleierung
Durch die Skalierung einer Videosequenz entstehen zwei oder drei Bitströme, die
unabhängig von einander übertragen werden können. Die Basisschicht enthält die
wichtigsten Informationen und sollte deshalb mit einer höheren Priorität, einer größeren
Redundanz und mit besseren Fehlererkennungsmechanismen über den besten verfügbaren
Kanal übertragen werden. Der korrekte Empfang dieses Bitstroms ist deshalb sehr
wahrscheinlich. Die Bitströme der Erweiterungsschichten übertragen lediglich zusätzliche
Informationen für eine Qualitätsverbesserung der Videosequenz, sodass diese Datenströme
über gestörtere Kanäle übertragen werden können. Die auftretenden Übertragungsfehler
sind mit den Informationen der Basisschicht durch die Techniken Spatial Predictive
Concealment oder Temporal Predictive Concealment sehr gut verschleierbar.
Verfasser: Holger Kärst
53
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Spatial Localisation
Ist ein Übertragungsfehler aufgetreten, so soll die Resynchronisation des Decoders so
schnell wie möglich erfolgen. Die Resynchronisation ist immer dann möglich, wenn ein
gültiger Startcode erreicht wird, der den Beginn einer Sequenz, einer GOP, eines Bildes
oder eines Slice signalisiert. Je mehr Synchronisationspunkte in einer Videosequenz
auftreten, umso kleiner ist der Fehler und desto besser lässt er sich verschleiern.
Der Slice ist die kleinste Synchronisationseinheit einer Videosequenz. Die Slicegröße
bestimmt somit direkt die Anzahl der Synchronisationspunkte und die Zeit, die der
Decoder für eine Resynchronisation benötigt.
Die grundlegende Methode, räumliche Eingrenzungen von Fehlern zu ermöglichen, ist die
Verringerung der Anzahl der Makroblöcke in einem Slice. Der Vorteil der
Fehlereingrenzung wird jedoch durch einen größeren Overhead und mit einem Verlust der
Kodiereffizienz von ca. 3% bis 12% bezahlt. Durch diesen Effizienzverlust ist die
Bildqualität um 1dB geringer. Diese Qualitätseinbuße kann jedoch vernachlässigt werden,
da die sonst notwendigen Interpolationen oder Ersetzungen von Makroblöcken über
ausgedehnte Bildflächen größere Fehler verursachen.
Temporal Localisation
B- und P-Frames besitzen Referenzen auf vorherige oder folgende Bilder. Die
referenzierten Bilder können durch Übertragungsfehler inkorrekt sein. Die fehlerhaften
Bildanteile werden durch die Verweise auf die inkorrekten Bilder über mehrere B- und PFrames weiterpropagiert. Erst bei dem Verweis auf ein korrektes intrakodiertes Bild wird
der Fehler kompensiert. Werden in kürzeren Abständen intrakodierte Bilder übertragen,
dann kann ein Fehler schnell annulliert werden. Da bei der Kodierung von I-Frames jedoch
große Datenmengen entstehen, sind diese Bilder bei der Übertragung sehr fehleranfällig.
Deshalb unterstützen einige Decoder eine partielle Intrakodierung von I-Frames. Dabei
wird eine konstante Anzahl von Slice’s eines Bildes intrakodiert (Intra Slice’s), die
restlichen Bildanteile werden interkodiert. Die Anzahl der intrakodierten Slice’s wird so
gewählt, dass ein Update des Bildes zu jedem P-Frame eines Streams erfolgt.
Zusammenfassung (Fehlerverschleierung, Fehlerlokalisation)
Alle genannten Techniken sind nicht getrennt für die Verdeckung aller Fehler optimal
einsetzbar. Deshalb werden oft Kombinationen verschiedener Verdeckungsmechanismen
eingesetzt. Die optimalen Einsatzmöglichkeiten für die genannten Fehlerverschleierungstechniken werden tabellarisch im Anhang C dargestellt.
Verfasser: Holger Kärst
54
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
6.1.4.7. Einsatz von MPEG2 im spezifizierten Multisource-Streaming-Ansatz
Die wichtigsten Anforderungen an einen Videocodec, um für verteiltes MultisourceStreaming in hochdynamischen Netzen einsetzbar zu sein, sind Fehlerrobustheit,
Fehlerkorrigierbarkeit, Verteilbarkeit und Skalierbarkeit.
Eine MPEG2-kodierte Videosequenz ist durch viele Synchronisationspunkte (Startcodes)
auch bei stochastischen Informationsverlusten sehr robust. Es ist möglich, kleinere
Verluste durch Interpolation bereits bekannter Informationen zu verschleiern. Gehen
jedoch ganze Bilder oder Group of Picture verloren, sind zwangsläufig sichtbare Fehler die
Folge (Bildruckeln). Im MPEG2-Standard sind keine Fehlerkorrekturmechanismen
vorgesehen. Für die gesicherte Verteilung von MPEG2-Datenströmen sind somit
zusätzliche externe Mechanismen notwendig, z.B. Forward Error Correction, ARQ, Reed
Solomon Kodierung.
Verteiltes Multisource-Streaming ist in MPEG2 über zwei Ansätze möglich, die in Abb.
30) und Abb. 31) dargestellt werden. Die skalierbaren Profile SNR, SPATIAL und HIGH
erzeugen aus einer Videosequenz einen Basisdatenstrom, sowie ein oder zwei
Erweiterungsdatenströme. Diese Datenströme werden unabhängig von einander
transportiert. Der Empfänger kann somit den Basis- und die Erweiterungsdatenströme von
unterschiedlichen Quellen empfangen. Die Übertragungseigenschaften dürfen zwischen
den Datenströmen differieren.
Der Basisdatenstrom beinhaltet die wichtigsten Informationen einer Videosequenz. Er
kann vom Empfänger sogar unabhängig von den Erweiterungsdatenströmen dekodiert
werden. Deshalb werden für den Transport dieses Datenstroms härtere Forderungen an die
Störsicherheit und die maximale Fehlerrate gestellt. Die Erweiterungsdatenströme liefern
zusätzliche Informationen an den Empfänger und verbessern so die Qualität der
Videosequenz.
Abb. 30) Multisource-Streaming eines skaliertbar codierten MPEG2-Mediastroms
Durch die skalierbare Kodierung kann eine Multimediasequenz an verschiedene
Anforderungen angepasst werden. Dennoch sind für skalierbar kodierte MPEG2Verfasser: Holger Kärst
55
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Datenströme erhebliche Bandbreiten (min. 1,856 Mbit/s) erforderlich, die die Kapazitäten
heutiger Netzanbindungen (Modem, ISDN, GPRS, HSCSD, UMTS) übersteigen. MPEG2
wurde hauptsächlich für die Komprimierung von Videosequenzen in TV-Qualität
entwickelt. Die Auflösungen von MPEG2-Videosequenzen (min. 352:288) sind für
aktuelle Displays mobiler Netzwerkknoten meist zu hoch und nicht erforderlich.
Auch PES-Pakete einer Videosequenz können von unterschiedlichen Quellen an einen
Empfänger übertragen werden. Die PES-Pakete müssen eindeutig identifizierbar und auch
getrennt anforderbar sein. Im MPEG2-Standard sind eindeutige Kennzeichnungen von
PES-Paketen nicht vorgesehen. Ein zusätzlicher Zähler kann jedoch im PES-Paket-Header
als Erweiterung implementiert werden. Der maximale Wertebereich dieses Zählers von 0
bis 21024 reicht aus, um alle PES-Pakete einer Mediasequenz eindeutig nummerieren zu
können. Jedes PES-Paket wird durch eine CRC-Sequenz für den Transport über das
verlustbehaftete Netzwerk gesichert. Die gesicherten und gekennzeichneten Pakete werden
von der jeweiligen Quelle innerhalb eines Transportstroms an den Empfänger übertragen.
Der Empfänger muss durch einen Vorverarbeitungsprozess Transportstrompakete zu PESPaketen zusammensetzen und die PES-Pakete über ihre eindeutige Nummer sortieren.
Abb. 31) Multisource-Streaming von nummerierten PES-Paketen
Dieser zweite Verteilungsansatz erfüllt jedoch die Anforderungen nach Anpassbarkeit
einer Multimediasequenz an heterogene Endgeräte nicht.
Das MPEG2-Audiokodierverfahren enthält keine Funktionalitäten, um Audiosignale
skalierbar zu kodieren. Multisource-Streaming kann also für MPEG2-Audiosequenzen
nicht eingesetzt werden.
Obwohl der MPEG2-Standard den Multisource-Streaming-Ansatz für Systemdatenströme
unterstützt, sind die kodierten Videosequenzen, aufgrund der fehlenden Unterstützung für
kleine Auflösungen, nicht für die Verteilung in hochdynamischen mobilen Netzen
geeignet. Die Breite der Anforderungen der einsetzbaren Endgerätetypen wird von MPEG2
nicht vollständig unterstützt.
Verfasser: Holger Kärst
56
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
6.1.5. Verifikation des MPEG4-Standards
Ursprünglich konzentrierte sich die Moving Picture Expert Group, bei der 1993
beginnenden Entwicklung von MPEG4, auf die Übertragung audiovisueller Daten bei sehr
niedrigen Bitraten. Während des Standardisierungsprozesses änderte und erweiterte sich
das Entwicklungsziel erheblich.
Noch stärker als bei MPEG2 hat sich im MPEG4-Standard der Schwerpunkt von den
Kompressionsaspekten auf die Systemarchitektur verlagert. MPEG4 bietet nun auch
Komponenten für die Verteilung von Multimediainformationen an, bei deren Entwurf
Dienstgüte und Skalierbarkeit eingeflossen sind. Interoperabilitäten bei der Verteilung
multimedialer Daten zwischen verschiedenen Netzwerken, wie z.B. ADSL, GSM, UMTS
u.a. werden ermöglicht. Für den Anwender soll es idealer Weise keinen Unterschied
machen, ob eine multimediale Anwendung einen drahtlosen Netzzugang, eine
Telefonleitung oder einen anderen Netzwerkanschluss verwendet.
Das Konzept der Profile und Level wurde von MPEG2 aufgegriffen. Es dient dazu,
verschiedene Anwendungen mit einem Standard optimal zu unterstützen. Dem Entwickler
steht es frei, die Komponenten unterschiedlicher Profile und Level beliebig zu
kombinieren. MPEG4 wendet sich dabei an drei Gruppen potentieller Anwender: Autoren,
Endanwender und Netzwerkdienstleister.
Der MPEG4-Standard existiert aktuell in zwei Versionen. Als die Spezifikationen für
MPEG4 1997 verabschiedet werden sollte, waren zu viele bedeutende Optionen noch nicht
ausgereift. In der MPEG4-Version 2 wurden einige dieser Optionen nachträglich definiert
und in den Standard aufgenommen. An den MPEG4-Versionen 3 und 4 wird noch
gearbeitet.
6.1.5.1. MPEG4-Architektur
MPEG4 definiert einen völlig anderen Ansatz, multimediale Daten zu beschreiben.
Objekte stellen, als zentrale Abstraktion, bestimmte Komponenten eines multimedialen
Elements dar.
Eine Multimediasequenz wird im MPEG4-Standard als Szene gedeutet, die aus mehreren
Objekten besteht und in einer hierarchischen Baumstruktur organisiert ist. Die Blätter
dieser Hierarchie bestehen aus Primitiven wie z.B. Standbildern (Hintergrund),
Videoobjekten und Audioobjekten.
Diese Art der Aufteilung der Gesamtinformation in Teilinformationen bietet hervorragende
Voraussetzungen für eine skalierbare Kodierung von Multimediasequenzen.
Verfasser: Holger Kärst
57
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Durch das Objektparadigma ergeben sich fünf Aufgaben, die den funktionellen Umfang
des MPEG4-Standards ausmachen:
•
Repräsentation von auditiven, visuellen oder audiovisuellen Daten als
Medienobjekte
•
Beschreibung der gemeinsamen Darstellung dieser Objekte als Kompositionen in
audiovisuellen Szenen
•
Multiplexen und Synchronisieren der Daten, die diese Objekte beschreiben, sodass
sie über getrennte Kanäle übertragen werden können
•
Interaktion mit der audiovisuellen Szene
•
hybride Kodierung von synthetischen (Animationen, synthetische Klänge) und
natürlichen Medienelementen
Vier elementare Einheiten werden für eine MPEG4-kodierte Multimediasequenz definiert.
Medienobjekte (Audiovisual Objects) repräsentieren die auditiven, visuellen oder
audiovisuellen Daten als zentrale Abstraktion. Sie bestehen aus natürlichen oder
synthetischen Inhalten.
Elementarströme (Elementary Streams) sind unabhänig transportierbare und verteilbare
Datenströme, die die multimedialen Elemente eines Medienobjekts enthalten. Einem
Medienobjekt können mehrere Elementarströme zugeordnet sein (z.B. ein
Audioelementarstrom und ein Videoelementarstrom).
Ein Objekt-Deskriptor-Framework ordnet die Elementarströme eindeutig Medienobjekten
zu. Es bietet zusätzliche Methoden zur Realisierung von hierarchischen Objektbeziehungen
und erlaubt die Assoziation von Metainformationen zu Objekten.
Access Units stellen die kleinste semantische Einheit von audiovisuellen Informationen
dar. Durch eine AU wird ein Elementarstrom zu einem bestimmten Zeitpunkt beschrieben.
Access Units sind zum Beispiel einzelne Bilder oder Audiosamples.
Verfasser: Holger Kärst
58
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Die nachfolgende Grafik gibt einen Überblick über den Einsatz des DeskriptorenFrameworks, durch dass ein Audioobjekt und ein skalierbar kodiertes Videoobjekt in der
Szene definiert sind.
Abb. 32) Objekt- und Szenenbeschreibung einer MPEG4-Sequenz (Ref: [17] S.85)
Der MPEG4-Standard besteht aus 21 Teilen. Für diese Arbeit sind die Parts MPEG4System, MPEG4-Visual, MPEG4-Audio und MPEG4-DMIF besonders interessant.
Verfasser: Holger Kärst
59
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
6.1.5.2. MPEG4-System (Part 1)
MPEG4-System beschreibt die grundlegende Architektur für die Zusammensetzung, die
Synchronisation und die Verteilung einer Multimediasequenz. Hier wird die syntaktische
und strukturelle Definition von Beschreibungsinformationen für eine MPEG4-Szene und
die MPEG4-Objekte durch ein Deskriptor-Framework (siehe Abb. 33) festgelegt. Auch
die Definition der Datenstruktur für die Verteilung der audiovisuellen Elemente, die
Anbindung an verschiedene Netzwerktypen und der Kommunikationsprozess zwischen
MPEG4-Komponenten ist ein Teil von MPEG4-System. Der Systempart unterscheidet die
funktional abgegrenzten Schichten Compression-Layer, Synchronisation-Layer und
Delivery-Layer. Durch diese Schichtenarchitektur wird der Kodierprozess vom
Verteilungs- bzw. Speicherungsprozess für multimediale Daten getrennt.
Compression-Layer
In der Kompressionsschicht werden digitale, multimediale Rohdaten, gemäß den
standardisierten MPEG4-(De)Kodierprozessen, kodiert bzw. dekodiert. Der CompressionLayer legt bereits die Struktur der MPEG4-Szene fest und definiert die audiovisuellen
Objekte. Die zeitlichen Relevanzen der Objekte, ihre Platzierung in der Szene und die
Verknüpfung der Objekte mit den kodierten multimedialen Daten erfolgt durch eine
Hierarchie von Deskriptoren (Deskriptor-Framework). Der hierarchische Aufbau des
Frameworks ist in der folgenden Grafik dargestellt:
Abb. 33) MPEG4-Deskriptoren-Framework
Die oberste Ebene wird durch den Szenen-Deskriptor gebildet. Der Szenen-Deskriptor
beschreibt, durch einen gerichteten azyklischen Graphen, die Anordnung aller Objekte
innerhalb einer MPEG4-Szene. Eine Szene ist ein abgeschlossener Objektraum, der
mindestens ein Objekt enthält. Jedes Objekt wird durch einen Objekt-Deskriptor definiert.
Ein Objekt-Deskriptor enthält objektspezifische Informationen, die in weiteren
Verfasser: Holger Kärst
60
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Subdeskriptoren strukturiert sind. Die Informationen sind entweder direkt im ObjektDeskriptor verfügbar, oder der OD enthält einen Verweis (URL) auf eine
Objektbeschreibung, die auf einem entfernten Server liegen kann. Ein solcher Verweis ist
sinnvoll, wenn die Objekte einer Szene auf mehreren Streamingservern verteilt sind. Über
URL’s ist es somit möglich eine MPEG4-Szene aus vielen örtlich verteilten Objekten
zusammenzustellen. Jeder Objekt-Deskriptor kann innerhalb einer Szene durch eine
eindeutige OD-ID identifiziert werden.
Der Client sollte Informationen über die Komplexität des Dekodierprozesses für die
gesamte Szene einer MPEG4-Sequenz besitzen, um entscheiden zu können, ob die eigenen
Ressourcen für die Dekodierung ausreichend sind. Aus diesem Grund wurde ein ODDerivat, der Initiale Objekt-Deskriptor (IOD), entwickelt. Der IOD enthält neben den
Informationen eines regulären OD, Angaben zu Profilen und Leveln für die Objekte der
MPEG4-Sequenz. Er wird vor dem Transport der Objektdaten an den Client übermittelt.
Die Komplexität für die Dekodierung der Objekte kann somit über das Profil und das
Level vorab ermittelt werden. Man unterscheidet zwischen Profilen und Level für die
Szene, für auditive, visuelle und synthetische Elemente und für den Objekt-Deskriptor
selbst.
Die Subdeskriptoren des Objekt-Deskriptors setzen sich aus Elementarstrom-Deskriptoren
(ESD), Object Content Information Deskriptoren (OCI), dem IPMP-Deskriptor und dem
Extension-Deskriptor zusammen.
Ganze Sets von OCI-Deskriptoren definieren inhaltliche Beschreibungen von Objekten in
Form von Metadaten. Solche Metadaten können zum Beispiel Schlüsselwörter für
Suchmaschinen oder Angaben über die Sprache eines audiovisuellen Objektes sein, den
Inhalt des Objektes in ein Genre einordnen, oder sie definieren zu welchem Zeitpunkt ein
Objekt in einer Szene erscheinen soll.
Abb. 34) OCI-Metadaten für ein MPEG4-Objekt (Bsp: Zeitdefinition für das Erscheinen eines Objektes in einer Szene) (Ref: [17]
S.99)
Verfasser: Holger Kärst
61
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Mittels IPMP-Deskriptoren können einem Objekt Authorisierungsinformationen
zugeordnet werden. Alle Elementarströme eines OD unterliegen den statischen Meta- bzw.
Authorisierungsinformationen der OCI- und IPMP-Deskriptoren. Wenn sich die Metadaten
eines OCI-Deskriptors dynamisch ändern, dann wird ein unabhängiger OCIElementarstrom implementiert (siehe Abb. 35). Innerhalb eines OCI-Elementarstroms
definieren OCI-Ereignisnachrichten, über welchen Zeitraum die Metadaten für die
Elementarströme gültig sind.
Abb. 35) OCI Events (Ref: [17])
Elementarströme werden im OD durch Elementarstrom-Deskriptoren (ESD) definiert. Ein
Elementarstrom-Deskriptor enthält alle Informationen, um einen Elementarstrom zu
identifizieren, ihn zu beschreiben, zu lokalisieren, seine Priorität festzulegen und zu
definieren, welche Ressourcen für die Dekodierung der Daten des Stroms bereitzustellen
sind. Auch der Elementarstrom-Deskriptor enthält weitere Subdeskriptoren.
Der Decoder-Config-Deskriptor definiert Initialisierungsinformationen für den Decoder
des Elementarstroms. Er klassifiziert einen Elementarstrom etwa in Video, Audio und
Szenenbeschreibung. Zusätzlich werden Informationen über die Kodierung des Stroms
(JPEG, MPEG1, MPEG2, MPEG4, MP3, AAC), über die geforderte Puffergröße für den
Decoderpuffer, sowie die maximale und die durchschnittliche Bitrate des Stroms
Verfasser: Holger Kärst
62
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
übermittelt. Ein Upstream Flag signalisiert, dass ein Rückkanal vom Client zum Server
unterstützt wird.
Informationen über Ressourcenanforderungen und Prioritäten eines Elementarstroms
werden durch einen QoS-Deskriptor innerhalb eines Elementarstrom-Deskriptors
übertragen. Durch QoS-Qualifier lassen sich bis zu 256 verschiedene QoS-Beschreibungen
definieren. Vordefinierte Beschreibungen sind zum Beispiel:
•
maximale Ende-zu-Ende-Verzögerung für den Elementarstrom (in Millisekunden)
•
erlaubte Verlustwahrscheinlichkeit für eine Access Unit
•
maximale Anzahl für den Verlust aufeinander folgender Access Units
•
maximale Größe für eine Access Unit
Der Sync-Layer-Config-Deskriptor beschreibt, mit welcher Auflösung die
Zeitinformationen der Access Units des Elementarstroms erzeugt wurden und in welchem
Wertebereich die Zeitstempel definiert sind.
Mit Hilfe des Registration Deskriptors können Datenströme als Elementarstrom übertragen
werden, die nicht gemäß dem MPEG4-Standard kodiert sind.
Synchronisation-Layer (SL)
Bevor Elementarströme transportiert werden können, müssen die enthaltenen Daten
paketiert werden. Der Synchronisation-Layer ist für diese Transformation zuständig.
Ein paketierter Elementarstrom wird SL-packetized-Stream genannt. Jedes SL-Paket
besteht aus einem Datenteil und einem Paket-Header. Innerhalb des Datenteils eines
Paketes wird meist genau eine Access Unit übertragen. Access Units können aber auch auf
mehrere aufeinander folgende SL-Pakete verteilt werden.
Der Paket-Header ist konfigurierbar. Es werden nur die notwendigsten Header-Elemente
implementiert. Die Konfiguration des SL-Paket-Headers erfolgt gemäß den Informationen
des SL-Configuration-Deskriptors des Elementarstroms. Der Verlust eines SL-Paketes ist
durch eine im Header enthaltene Sequenznummer leicht erkennbar. Eine fortlaufende AUSequenznummer erlaubt zusätzlich, dass verlorene oder beschädigte Access Units schnell
erkannt werden können.
Die koordinierte Präsentation von Objekten wird durch die Szenenbeschreibung im
Compression-Layer vorgeben. Es ist jedoch auch eine klare Zeitdefinition für die
multimedialen Datenelemente der Objekte notwendig, um eine synchrone Darstellung
zeitlich abhängiger Elementarströme realisieren zu können. Die Definition dieser
Zeitinformation und die Synchronisation zeitlich abhängiger Elementarströme ist die
zweite Aufgabe des Synchronisation-Layers.
Verfasser: Holger Kärst
63
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Die SL-Pakete erhalten deshalb im zweiten Verarbeitungsschritt Informationen für ihre
zeitliche Gültigkeit.
Im Zeitmodel von MPEG4 wird definiert, dass Zeitangaben innerhalb einer MPEG4Sequenz relativ sind und sich immer auf einen Referenzpunkt beziehen. Diese relativen
Zeitangaben (Timestamps) werden immer an die kleinsten Einheiten einer MPEG4Sequenz, die Access Unit’s, angehangen. Man unterscheidet zwei Arten von Timestamps:
Die Decoding-Timestamp (DTS) indiziert den Zeitpunkt, zu dem die Access Unit
vollständig beim Empfänger vorliegen muss und somit als Einheit dekodiert werden kann.
Die Composition-Timestamp (CTS) definiert den Zeitpunkt, zu dem die Access Unit für
die Integration bzw. Komposition in eine Präsentationsumgebung verfügbar sein muss. Die
CTS entspricht somit der Presentation-Timestamp des MPEG2-Standards. Sind die
Zeitmarken von Access Units verschiedener Elementarströme gleich, so werden die
Einheiten gemeinsam zur gleichen Zeit dekodiert bzw. in einer Präsentation verknüpft.
Eine zusätzliche Zeitmarke ist notwendig, wenn eine Szene aus Objekten besteht, die von
verschiedenen Encodern kodiert wurden. In diesem Fall können die Taktraten der Encoder
verschieden sein. Für Equipment aus dem Endkundenbereich ist es realistisch, wenn sich
die Taktraten der Encoder um ca. 0,1% unterscheiden. Wird eine Stunde einer
Multimediasequenz wiedergegeben, die aus einer Komposition der Ströme solcher
verschiedener Encoder besteht, so kann über diesen Zeitraum eine Differenz von 3,6 s
zwischen den Mediaströmen entstehen. Die Object Clock Referenz (OCR) soll dieses
Problem beheben. In die OCR-Zeitmarke wird die Systemzeit des Senders zum dem
Zeitpunkt eingetragen, zu dem der Sender die OCR-Marke im Stream platziert und sie
aussendet. Der Empfänger kann über die diskreten OCR-Werte, die fortlaufend im Strom
enthalten sind, die Geschwindigkeit der Zeitbasis des jeweiligen Encoders abschätzen. Hat
der Empfänger die Zeitbasis für jeden Encoder einer MPEG4-Sequenz ermittelt, so kann er
die Zeitmarken aller Ströme auf eine gemeinsame Zeitbasis durch eine affine
Transformation referenzieren.
Die Konfiguration der Zeitmarken CTS und DTS ist im SL-Paket-Header sehr flexibel
möglich. Die Zeitmarkenlänge und die zeitliche „Auflösung“ (Taktrate) der Zeitmarken
sind in einem großen Wertebereich definierbar, damit Applikationen mit geringer Bitrate
genauso wie Applikationen mit hoher Bitrate effizient unterstützt werden können.
Zusammenfassend ist zu bemerken, dass das Zeitverhalten und die Synchronisation von
Elementarströmen über den Zeitmarken-Mechanismus beschrieben werden, der durch
MPEG2 bereits bekannt ist. Der Mechanismus wurde erweitert, sodass innerhalb einer
Präsentation Objekte auf verschiedenen zeitlichen Grundlagen basieren können.
SL-paketierte-Ströme werden übertragen, in dem sie die Dienste eines TransportprotokollStack’s nutzen. Das Ziel bei der Entwicklung des MPEG4-Standards war es,
Verfasser: Holger Kärst
64
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Elementarströme über verschiedene Transportprotokolle gleichermaßen übertragen zu
können. Diese Aufgabe wird durch den Delivery-Layer erfüllt.
Delivery Layer
Im Gegensatz zum MPEG2-Standard entschied sich die Motion Picture Expert Group, für
MPEG4 kein eigenes Transport-Multiplex-Protokoll zu entwickeln, sondern eine klare
Schnittstelle zwischen der kodierten MPEG4-Sequenz und der Transportschicht zu
definieren. Somit sollte eine MPEG4-Sequenz flexibel durch verschiedene Transportmittel
übertragen werden können. In der Realität sind einige Anpassungen der MPEG4-Ströme an
existierende Transportprotokolle notwendig. Diese Anpassungen sind jedoch für die
MPEG4-kodierten Datenströme und das jeweilige Transportprotokoll durch das Delivery
Multimedia Integration Framework (DMIF) transparent. Einem MPEG4-Player bleibt
durch DMIF verborgen, ob die abzuspielende Sequenz von einer lokalen Datei entstammt,
oder von einem Server durch ein Netzwerk vermittelt wird. Der homogene Zugriff auf
Datei- oder Transportfunktionalitäten für eine MPEG4-Anwendung wird durch das
Delivery Application Interface (DAI) bereitgestellt. Das DA-Interface ist zu einem Service
Access Point des ISO/OSI-Referenzmodells äquivalent. Es stellt der Anwendung über
Primitive verschiedene Dienste des DMIF-Layers zur Verfügung. Man unterscheidet
zwischen Service-, Channel-, QoS Monitor-, User Command- und Data-Primitiven.
Service-Primitive erzeugen neue Dienste, die auf einer URL basieren, oder sie zerstören
ältere Dienste die nicht mehr benötigt werden.
Channel-Primitive generieren neue Kanäle, basierend auf Identifikationsnummern, die von
der Anwendung definiert werden, oder sie zerstören Kanäle die nicht mehr benötigt
werden.
QoS-Monitor-Primitive kontrollieren und initialisieren QoS-Monitor-Funktionen für einen
Kanal. Somit ist es möglich QoS-Statistiken für einen Kanal zu erzeugen und zu
beobachten.
User-Command-Primitive übertragen Kommandos wie Play oder Pause für die Steuerung
des Streamprozesses.
Data-Primitive enthalten die aktuell zu übertragenden Mediadaten.
Die Primitive stellen Signaturen von der Applikation zum DMIF-Layer und vom DMIFLayer zur Applikation bereit. Sie besitzen IN- und OUT-Parameter. Anforderungen an eine
Primitive werden durch IN-Parameter signalisiert, auf die die Primitive asynchron mit
OUT-Parametern reagiert.
Die Signaturen bzw. die Parameter der DAI-Primitive müssen für die Übertragung an
einen entfernten Kommunikationspartner, an das jeweilige Transportprotokoll angepasst
werden. Dazu wurde im MPEG4-DMIF-Part eine zweite DMIF-Schnittstelle, das DMIF
Network Interface (DNI), entwickelt. Über diese Schnittstelle werden die DAI-Parameter
Verfasser: Holger Kärst
65
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
in transportprotokollspezifische Parameter übersetzt und umgekehrt. Die zweite Aufgabe
des DN-Interface besteht darin, alle Dienstanforderungen, die an einen entfernten
Kommunikationspartner gestellt werden, zu einem Transport-Multiplexer-Datenstrom
(TransMux) in einer Netzwerk-Session zusammenzufassen. Spezifische Instanzen eines
Transport-Multiplexers entsprechen so genannten TransMux-Kanälen. Die Kanäle sind
jeweils für einen Transportmechanismus (UDP, TCP, MPEG2-TS...) spezifiziert.
Die einzelnen gemultiplexteten DMIF-Elemente sind eindeutig identifizierbar. Die
Netzwerk-Session ist durch eine Network-Session-ID gekennzeichnet. Jedes DMIFElement wird einem TransMux-Datenstrom in einer Netzwerk-Session durch ein
TransMux Association Tag (TAT) zugeordnet. Die Identifikation eines DMIF-Elements zu
einem Kanal innerhalb des TransMux-Datenstroms erfolgt über ein Channel Association
Tag (CAT).
Das optionale MPEG4-Tool FlexMux multiplext verschiedene SL-paketierte Ströme zu
einem Datenstrom.
Das „Delivery Multimedia Integration Framework“ kann man mit dem File-TransferProtocol vergleichen. Bei beiden Mechanismen werden zunächst Sitzungen eröffnet. Im
Fall von FTP fordert die Applikationsschicht bestimmte Daten an, die vom FTP-Dienst bei
der entsprechenden Quelle heruntergeladen werden. Im DMIF-Ansatz ist das ähnlich. Eine
Auswahl von Elementarströmen wird von der Anwendungsschicht angefordert. Der DMIFLayer erzeugt nun entsprechende Kanäle, um die Elementarströme von der Quelle
entgegenzunehmen und zum Empfänger zu übertragen.
Die Zusammenarbeit von MPEG4-System (Part 1) und MPEG4-DMIF (Part 6) ist in der
folgenden Skizze ersichtlich:
Abb. 36) Zusammenarbeit zwischen MPEG4-System und DMIF (Ref: [17] S. 230)
Verfasser: Holger Kärst
66
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Die Funktionalität von DMIF kann am Beispiel eines TCP/IP-Netzwerks im Anhang E
nachvollzogen werden.
6.1.5.3. MPEG4-Visual (Part 2): Natural Video Coding
MPEG4-Visual unterstützt die Kodierung natürlicher visueller Mediasequenzen in einer
großen Vielfalt standardisierter Auflösungen. MPEG4-kodierte Videosequenzen sind
deshalb in verschiedenen Einsatzgebieten zu finden, beispielsweise in der mobilen
Videotelefonie oder in der TV- und HDTV-Produktion. Im Besonderen werden die in der
Anforderungsanalyse geforderten Auflösungen Sub-QCIF, QCIF, CIF, 4CIF und 16CIF
unterstützt.
Im MPEG4-Standard ist eine Videosequenz, wie auch bei den Vorgängern MPEG1 und
MPEG2, hierarchisch strukturiert (siehe Abb. 37).
Abb. 37) Hierarchische Struktur des MPEG4-Videostroms (Ref: [17] S.298)
Jede MPEG4-Szene besteht aus einer Visual Object Sequenz mit einem oder mehreren
visuellen Objekten (VO).
Die VO-Sequenz beginnt, wie in Abb. 38) dargestellt, mit einem VO-Sequence-Header.
Mit diesem Header werden Informationen über das Profil und das Level der visuellen
Objekte der Sequenz übertragen. Der Decoder kann sich somit leicht auf die Komplexität
des Dekodiervorganges für diese Objekte einstellen. Die VO-Sequenz endet nach
mindestens einem visuellen Objekt mit dem VO-Sequenz-End-Code.
Verfasser: Holger Kärst
67
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Abb. 38) Visual Object Sequence / Visual Object
Visuelle Objekte unterstützen im Falle der skalierbaren Videokodierung verschiedene
Video-Object-Layer (VOL). Jeder Layer definiert eine bestimmte räumliche oder zeitliche
Auflösung einer Video-Object-Plane-Sequenz und kann mit unterschiedlichen Prioritäten
versehen werden. Erweiterte Informationen des Video-Object-Layer’s werden über den
VOL-Header übertragen, der mit einem VOL-Startcode beginnt. Die letzten vier Bit des
Start Codes adressieren jeden VOL eindeutig in einer Video-Sequenz.
Video-Object-Plane’s (VOP) bilden die unterste Hierarchieebene einer MPEG4-kodierten
Videosequenz. Sie stellen somit die kleinsten Einheiten der Sequenz dar. Die VideoObject-Plane wird mit einem VOP-Header initialisiert. Eine VOP ist ein Teil eines VideoObjektes zu einem bestimmten Zeitpunkt. Die VOP lässt sich also mit einem einzelnen
Bild vergleichen, während ein visuelles Objekt vergleichbar mit einer Bildsequenz ist.
Video-Object-Planes können zu einer Group of VOP’s (GOV) geclustert werden. In jeder
GOV sind die in Abb. 39) dargestellten Header-Informationen enthalten, mit denen die
Bearbeitung des MPEG4-Videomaterials vereinfacht wird.
Abb. 39) MPEG4-GOV-Header
Die Kodierung jeder Video-Object-Plane erfolgt blockweise. Dazu wird das kleinste
umschließende Rechteck um eine VOP gebildet, die VOP-Bounding-Box. Diese Box wird
von der Szene extrahiert und repräsentiert die korrespondierende VOP über ihre Texturund Forminformationen. Die Bounding-Box wird in Makroblöcke mit jeweils 16x16
Luminanzabtastwerten geteilt. Es werden drei Makroblockarten unterschieden.
Verfasser: Holger Kärst
68
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Die transparenten Makroblöcke befinden sich vollständig außerhalb der VOP, jedoch
innerhalb der VOP-umschließenden Bouding-Box. Mit diesen Makroblöcken werden keine
Helligkeits- und Farbinformationen, sondern nur Informationen über die Form der VOP
kodiert. Der Decoder erkennt, dass diese Blöcke in der VOP nicht sichtbar sind.
Opaque Makroblöcke befinden sind vollständig innerhalb der VOP. Diese Makroblöcke
werden durch die bekannte hybride Kodierung intra- oder interkodiert. Sie enthalten
Helligkeits- und Farbinformationen, jedoch keine Daten über die Form der VOP.
Boundary Makroblöcke befinden sich an der Grenze der VOP. Für die Berechnung dieser
Blöcke wurden spezielle Tools zur Kodierung von Objekten mit beliebigen Formen
entwickelt. Die Blöcke enthalten Informationen über die Form der VOP sowie Abtastwerte
für Luminanz- und Chrominanzsignale. Die Abb. 40) stellt die Makroblockarten am
Beispiel einer VOP dar.
Abb. 40) MPEG4 Makroblockarten
Verfasser: Holger Kärst
69
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Grundsätzlich unterscheidet der MPEG4-Standard die Kodierung von rechteckigen
Videoobjekten, sowie die Kodierung von Videoobjekten mit beliebiger Form (Arbitrarily
Shaped Video Objects).
Kodierung rechteckiger VOP
Für die Kodierung von rechteckigen VOP’s werden keine Informationen über die VOPForm benötigt, sodass Shape-Coding bzw. Shape-Decoding nicht benötigt wird. Für diese
Videoobjekte wird ein blockbasierter, bewegungskompensierter, hybrider (De)Coder
eingesetzt. Der (De)Kodierprozess erfolgt mit der DCT, wie sie bereits in der
Vorbetrachtung beschrieben wurde. Der MPEG4-Standard unterscheidet drei VOP-Typen:
intrakodierte VOP’s (I-VOP) und interkodierte VOP’s (P-VOP, B-VOP). Der VOP-Typ
wird im VOP-Header direkt nach dem Startcode angegeben. Intrakodierte VOP’s enthalten
alle DCT-kodierten Werte eines unabhängigen „initialen Objektbildes“. Sie dienen, ähnlich
den I-Frames des MPEG1- und MPEG2-Standards, als Referenz für vorhergehende oder
nachfolgende, bewegungskompensierte VOP’s. In den P-VOP’s sind die Differenzen
zwischen einem referenzierten I-VOP und der aktuellen VOP kodiert. Durch die
Differenzbildung zwischen den beiden VOP’s werden alle redundanten Informationen
herausgefiltert und nicht kodiert. Eine B-VOP besitzt nicht nur eine Referenz auf eine
frühere I- oder P-VOP, sondern zusätzlich eine Referenz auf eine nachfolgende I- oder PVOP.
Die
Differenzinformationen
beider
Referenzen
werden
zu einer
Bewegungsvorhersage interpoliert. Zusätzlich werden Bewegungsvektoren übertragen, die
die Werte für eine räumliche Verschiebung von ähnlichen Informationen zwischen der
aktuellen und der referenzierten VOP enthalten. Nachdem die VOP’s DCT-transformiert
wurden, erfolgt die Quantisierung, Serialisierung und Entropiekodierung der DCTKoeffizienten.
Kodierung beliebig geformter VOP (arbitrarily shaped VOP)
Jede VOP eines beliebig geformten Videoobjektes wird durch seine Helligkeits- und
Farbkomponenten und eine Formkomponente definiert. Die Information über die Form des
Objektes wird durch Alpha-Masken repräsentiert. Eine Alpha-Maske definiert die
verschiedenen Transparenz-Level einer VOP in Form einer Matrix. Die Größe der AlphaMaske entspricht der Größe der VOP-Bounding-Box. Eine Graustufen-Alpha-Maske
beschreibt Transparenzwerte zwischen 0 und 255. Die Null korrespondiert zu einem
vollständig transparenten Pictureelement, die 255 zu einem vollständig sichtbaren
Pictureelement. Eine weitere Variante für die Kodierung von Forminformationen wird
durch die binäre Alpha-Maske bereitgestellt. In dieser Maske sind nur zwei Werte erlaubt
(0 = Transparent, 255 = Sichtbar). Ein Pictureelement gehört nur dann zu einem
Videoobjekt, wenn dessen Alpha-Wert größer als Null ist.
Verfasser: Holger Kärst
70
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Beide Arten der Alpha-Masken können in MPEG4 genutzt werden. Die Kodierung der
Alpha-Werte erfolgt durch arithmetische Kodierung. Dazu wurden für beide Maskenarten,
jeweils ein Shape Coding Tool entwickelt.
Binary Shape Coding
Das Binary Shape Coding erfolgt blockweise. Die Hauptidee des Binary Shape Coding
basiert auf einem Arithmetik-Encoder. Der Arithmetik-Encoder kodiert einen binären
Alpha-Wert eines Makroblocks in Abhängigkeit von einem Kontext, der aus allen zu
kodierenden Alpha-Werten berechnet wurde. Makroblöcke die Alpha-Werte enthalten
werden Binary Alpha Blocks (BAB’s) genannt. Der Encoder erzeugt Codeworte (ähnlich
zu Huffman Codes) für die binären Werte 0 und 255, abhängig von einer statistischen
Wahrscheinlichkeit. Für jeden möglichen Kontext wird die Wahrscheinlichkeit ermittelt,
indem Gruppen von typischen Alpha-Masken-Sequenzen verwendet werden. Die
Wahrscheinlichkeitswerte, die Teil der MPEG4-Spezifikation sind, werden als Parameter
im Arithmetik-Encoder für die Erzeugung der Codeworte benutzt.
Binary Shape Coding unterscheidet zwischen einem intra-coding-Modus und einem intercoding-Modus. Im inter-coding-Modus erfolgt eine Bewegungskompensation der
Objektform unabhängig von der Bewegungskompensation der Objekttextur.
Gray Level Shape Coding
Im Gray Level Shape Coding werden zunächst binäre Supportmasken generiert. Diese
Supportmasken entsprechen den Binary-Shape-Masken und werden auch entsprechend
dem Binary Shape Coding kodiert. Sie enthalten Informationen über die grobe
Zugehörigkeit von Makroblöcken zu einem Objekt. Ein Wert der Maske ist Null, wenn der
Wert des korrespondierenden Alpha-Wertes Null ist, sonst wird er auf 255 festgelegt. Die
Gray-Level-Alpha-Werte werden als Texturdaten wie normale Luminanzwerte kodiert. Der
Decoder rekonstruiert die Supportmaske und die Gray Level Plane. Jedes Bildelement in
der Gray Level Plane wird auf Null gesetzt, wenn der korrespondierende Wert in der
Supportmaske Null ist. Der Sachverhalt ist in der folgenden Abbildung grafisch dargestellt.
Abb. 41) Gray Level Shape Coding (Ref: [17] S.324)
Verfasser: Holger Kärst
71
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
6.1.5.4. Skalierbare Videokodierung
Der MPEG4-Standard bietet vier Möglichkeiten an, eine Videosequenz skalierbar zu
kodieren: räumliche, zeitliche, objektbasierte und qualitative Skalierung.
Die räumliche und zeitliche skalierbare Kodierung kann mit Arbitrary Shape Coding
kombiniert werden. Die Informationen der Erweiterungsdatenströme gelten somit entweder
für das gesamte Objekt oder nur für einen Teil des Objekts. Die entsprechende Gültigkeit
wird durch ein Enhancement Type Flag im erweiterten Videosequenz-Header signalisiert.
Räumliche Skalierbarkeit
MPEG4 erlaubt die räumliche Skalierung beliebig geformter Objekte. Hierbei wird
zwischen der räumlichen Skalierung der Form und der räumlichen Skalierung der Textur
des Objektes unterschieden. Die räumliche Skalierung der Objektform erfolgt entweder
durch das Spatial Scalability for binary shape-Tool oder die Objektform wird direkt in den
jeweils erforderlichen Auflösungen im Basisstrom und den Erweiterungsströmen
unabhängig kodiert.
Spatial Scalability for binary shape - Tool
Der Basisstrom enthält Forminformationen in einer geringen räumlichen
Mindestauflösung. Diese Informationen werden im Erweiterungsstrom als Basis genutzt.
Der Erweiterungsstrom enthält zusätzliche Alpha-Werte, durch die die räumliche
Auflösung der Objektform erhöht werden kann. Die niedrig aufgelösten Informationen der
Basisschicht werden, entsprechend Abb. 42), zunächst auf die Größe der Infomationen der
Erweiterungsschicht skaliert.
Abb. 42) Skalierung der Basisschichtinformationen auf das Sampling Grid des Erweiterungslayers (Ref: [17] S.334)
Verfasser: Holger Kärst
72
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
In der Erweiterungsschicht werden nun nur noch die Differenzen zwischen der originalen,
hochaufgelösten Forminformation und der hochgesampelten Basisinformation aus der
Basisschicht kodiert und übertragen.
Die skalierte Kodierung der Texturinformationen erfolgt ähnlich wie im MPEG2-Standard,
jedoch sind die Verweise auf Basisinformationen anders definiert (siehe Abb. 43).
Abb. 43) räumlich skalierbare Kodierung in MPEG4 (Ref: [17] S.333)
Die I-VOP’s der Basisschicht liefern keine Basisinformationen für die
Erweiterungsschicht. Die I-VOP’s der Erweiterungsschicht werden somit genauso
unabhängig (de)kodiert wie die I-VOP’s der Basisschicht.
Die P-VOP’s des Erweiterungsstromes erhalten Informationen durch hochgesampelte PVOP’s des Basisstromes. Bewegungsvektoren für die Bewegungskompensation im
Erweiterungsstrom werden nur von I- oder P-VOP’s des Erweiterungsstromes genutzt. Die
P-VOP’s besitzen somit Ähnlichkeiten mit den räumlich skalierten I-Frames des MPEG2Standards.
B-VOP’s der Erweiterungsschicht nutzen Texturinformationen zukünftiger P-VOP’s des
Basisstromes und Bewegungsvektoren von früheren P-, B- oder I-VOP’s des
Erweiterungsstroms. Sie ähneln somit den räumlich skalierten P-Frames des MPEG2Standards.
Zeitliche Skalierbarkeit
Auch das Prinzip der zeitlichen Skalierbarkeit des MPEG4-Standards ist zum MPEG2Standard meist identisch. Der Basisstrom enthält eine VOP-Sequenz mit einer definierten
minimalen Bildwiederholrate. Verweise auf zusätzliche Bilder, die im Erweiterungsstrom
enthalten sind, können vom Decoder genutzt werden, um die Bildwiederholrate zu erhöhen
(siehe Abb. 44).
Verfasser: Holger Kärst
73
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Abb. 44) zeitlich skalierbare Kodierung in MPEG4 (Ref: [17] S.337)
Die zeitliche Skalierbarkeit ist nicht nur für vollständige visuelle Objekte möglich, sondern
auch für Teile dieser Objekte. Wenn diese zeitlich skalierbar kodierte Region ihre Form
verändert oder sich bewegt, entsteht ein leerer Bereich im Hintergrund. Für diesen Bereich
sind keine Texturinformationen verfügbar. Um dieses „Loch“ zu füllen, ohne das sichtbare
Fehler erkennbar sind, wird ein Padding-Prozess eingesetzt. In diesem Padding-Prozess
werden verschiedene Fälle unterschieden.
Wird der Hintergrund weder von der vorherigen geformten VOP noch von der
nachfolgenden VOP abgedeckt, so wird das entstandene Loch mit den
Texturinformationen von der zeitlich näheren VOP gefüllt.
Sollten sich die aufeinander folgenden VOP’s überschneiden und ein Teil des Objektes von
einer vorherigen VOP abgedeckt werden, der Teil jedoch zum Hintergrund der nächst
folgenden VOP gehören, so sind die Hintergrundwerte dieser nächst folgenden VOP
gültig.
Im entgegengesetzten Fall sind natürlich die Hintergrundinformationen der früheren VOP
gültig.
SNR Fine Granularity Scalability (FGS)
Das MPEG4-FGS-Coding-Tool ermöglicht eine qualitativ skalierbare Kodierung einer
Multimediasequenz. Es deckt einen großen Bereich verschiedener Bitraten für die
Distribution ab. Multiple Schichten erlauben eine große Flexibilität bei der Anpassung
eines Multimediastroms an die verfügbare Bandbreite des Übertragungsmediums. Der
Kodierprozess wird vom Distributionsprozess separiert. Der Encoder produziert einen
Basisdatenstrom und einen oder mehrere Erweiterungsdatenströme. Eine FGS-ServerApplikation passt den Bitstrom an die Charakteristiken des Übertragungskanals und des
Decoders an (z.B. Bitrate oder Rechenkapazität des Decoders).
Verfasser: Holger Kärst
74
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Die Amplitudenskalierung des Videosignals erfolgt durch FGS vollkommen anders als im
MPEG2-Standard. Bei MPEG2 wird der Quantisierungsfehler des Basislayers im
Erweiterungslayer kodiert. Die Kodierung des Fehlers erfolgt über die gleichen
Quantisierungsmechanismen und VLC-Tabellen wie im Basislayer. MPEG4-SNR-FGS
kodiert den Quantisierungsfehler der Basisschicht ebenfalls in der Erweiterungsschicht,
jedoch unter Benutzung einer „Bit-Plane“-Repräsentation der DCT-Koeffizienten. Ein
Beispiel einer solchen Repräsentation zeigt die folgende Abbildung.
Abb. 45) SNR Fine Granularity Scalability (FGS) (Ref: [17] S.341)
Die absoluten Werte der DCT-Koeffizienten werden nach ihrer Signifikanz sortiert.
Danach werden die Informationen der sortierten DCT-Koeffizienten bitweise in die BitPlanes einsortiert, beginnend mit dem höchstwertigen Bit (MSB) bis zum niederwertigsten
Bit (LSB). Die Bit-Planes werden gruppiert (MSB-Bit-Plane ... LSB-Bit-Plane) und jeweils
lauflängenkodiert.
In den zu übertragenden Bitstrom werden zuerst die Daten der MSB-Bit-Plane aller
Makroblöcke einer VOP eingetragen, gefolgt von der nächsten signifikanten Bit-Plane, bis
hin zur LSB-Bit-Plane. Somit ist es möglich, die Übertragung des Erweiterungsstroms zu
Verfasser: Holger Kärst
75
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
jedem beliebigen Zeitpunkt zu stoppen. Alle bis zu diesem Punkt übertragenen Daten
können vom Decoder genutzt werden.
Im Basislayer werden adaptive Quantisierungsmatrizen und Quantisierungsauflösungen
bereitgestellt, um die zu übertragende Datenmenge an das Übertragungsmedium bzw. an
den Decoder anpassen zu können.
In der Erweiterungsschicht unterstützt FGS eine frequenzgewichtete Quantisierung und die
Möglichkeit wichtige Makroblöcke einer VOP bzw. wichtige DCT Werte eines
Makroblocks feiner zu quantisieren als unwichtigere.
Diese selektive Quantisierung einzelner Makroblöcke oder DCT-Werte wird realisiert,
indem die korrespondierenden DCT-Koeffizienten, entsprechend einer Maske, um ein oder
mehrere Bit-Planes nach oben verschoben werden. Die Maske wird vom Encoder an den
Decoder übermittelt. Das Ergebnis ist, dass die relevantesten Makroblöcke bzw. DCTWerte zuerst im Erweiterungsstrom übertragen werden und somit den Decoder mit einer
größeren Wahrscheinlichkeit erreichen.
Es ist möglich die FGS-Bit-Plane-Kodierung mit zeitlicher Skalierbarkeit zu kombinieren.
Referenzen für zeitlich skalierte FGS-VOP’s (FGST-VOP’s) werden nur vom Basislayer
geliefert. Jede kodierte FGST-VOP hat zwei separate Bereiche. Im ersten Teil werden die
Bewegungsvektoren, entsprechend dem MPEG4-Ansatz, für die zeitliche Skalierung
kodiert. Sie werden entweder zusammen mit den im zweiten Teil Bit-Plane-kodierten
Texturdaten, im gleichen Erweiterungsstrom übertragen oder getrennt in einem zweiten
Erweiterungsstrom.
MPEG4-FGS ist nicht für beliebig geformte Objekte, sondern nur für rechteckige Objekte
einsetzbar.
Skalierbarkeit durch Objektrepräsentationen
Das OD-Framework erlaubt, mehrere alternative Objektrepräsentationen des gleichen
Objektes innerhalb einer Objektbeschreibung anzugeben. So kann ein Objekt auf einfache
Weise in verschiedenen Qualitäten kodiert, angeboten und übertragen werden. Die
korrespondierenden Medienströme werden unabhängig von einander als Elementarströme
generiert. Die Elementarstrom-Deskriptoren übertragen für jeden Elementarstrom die
notwendigen Beschreibungsinformationen. Sie werden innerhalb einer Objektbeschreibung
zusammengefasst. Der Client selektiert anhand der QoS-Anforderungen, die von den
Elementarstrom-Deskriptoren angegeben sind, den Elementarstrom aus der
Objektbeschreibung, der am Besten an die eigene Rechen- und Speicherkapazität
angepasst ist. Diesen Elementarstrom fordert der Client nun bei der angegebenen Lokalität
an. Der Ablauf kann in Abb. 46) nachvollzogen werden.
Verfasser: Holger Kärst
76
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Abb. 46) Selektion eines Elementarstroms eines Objekts bestimmter Qualität (Ref: [17] S.76)
6.1.5.5. Fehlerrobuste Quellenkodierung visueller MPEG4-Sequenzen
Fehlerrobuste Quellenkodierung erhöht die Möglichkeit, einen großen Teil eines korrupten
Bitstromes korrekt dekodieren zu können. Je robuster der Code, umso mehr Daten können
von einem fehlerbehafteten Bitstrom dekodiert werden. Eine robuste Dekodierungstechnik
muss in der Lage sein, einen Fehler im Strom zu erkennen, ihn mit der höchstmöglichen
Präzision zu lokalisieren und den Bitstrom direkt nach dem Fehler korrekt zu dekodieren.
MPEG4 stellt fünf verschiedene „Error resilience Tools“ zur Verfügung, um eine
fehlerrobuste Struktur des kodierten Videostroms zu erreichen.
Paketbasierte Resynchronisation
Durch die variable Lauflängenkodierung (VLC) sind komprimierte Daten sehr sensibel
gegenüber Transportfehlern. Die Codewortlängen sind durch VLC implizit angegeben.
Transportfehler führen meist zu einer inkorrekten Anzahl von Bits, die für die VLCDekodierung genutzt werden. Der Decoder verliert die Synchronisation zum Encoder und
die gesamten nachfolgenden Daten des Bitstromes werden unbrauchbar.
Durch im Bitstrom enthaltene Resynchronisationsmarken (siehe Abb. 48) kann sich ein
Decoder wieder mit dem Strom synchronisieren. Diese Marken sind eindeutige
Codewörter (Bitsequenzen) die in kodierten Datenelementen nicht auftreten können. Ein
Übertragungsfehler kann vom Decoder erkannt werden, wenn ungültige VLC-Werte
während der Dekodierung auftreten. Wird ein Fehler erkannt, so verwirft der Decoder alle
Daten bis zur nächsten Resynchronisationsmarke. Die nachfolgenden Daten können wieder
korrekt dekodiert werden. Bei der paketbasierten Resynchronisation werden die Marken
periodisch, nach einer definierten konstanten Anzahl von Bits, in den Bitstrom eingefügt.
Die Bits zwischen zwei Marken entsprechen einem MPEG4-Videopaket. Videopakete
besitzen einen Header und einen Datenteil. Der Header enthält unter anderem die
Verfasser: Holger Kärst
77
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Resynchronisationsmarke, die Makroblocknummer des ersten Makroblockes, mit der die
räumliche Position des Makroblocks in der VOP festgelegt wird und die
Quantisierungsstufe für diesen Makroblock (siehe Abb. 47). Im Datenteil des Pakets ist
eine bestimmte Anzahl aufeinander folgender, kodierter Makroblöcke enthalten.
Abb. 47) Aufbau eines MPEG4 Videopakets
Jeder Makroblock gehört zu genau einem Videopaket. Die Makroblöcke werden durch die
Paketierung also nicht geteilt, sondern jeweils vollständig durch ein Videopaket
übertragen.
Abb. 48) Beispiel Paketbasierte Resynchronisation
Data Partitioning
Wenn ein Fehler im Bitstrom erkannt wurde und die Resynchronisation auf die nächste
Resynchronisationsmarke erfolgt ist, werden üblicher Weise alle Daten verworfen, die
zwischen diesen Resynchronisationsmarken liegen. Um einen Fehler präziser lokalisieren
zu können, gruppiert Data Partitioning die Bitstromelemente (DC und AC Koeffizienten,
Bewegungsvektoren) nach ihrer Fehlersensitivität. Der gleiche Fehler in verschiedenen
Gruppen kann unterschiedliche Auswirkungen auf die Qualität der dekodierten Sequenz
haben. Die wichtigsten Daten werden im ersten Teil des Videopakets übertragen. Danach
folgen ein eindeutiges Synchronisationswort und die Daten mit niedrigerer Priorität. Durch
das zusätzliche Synchronisationswort im Videopaket ist es möglich, einen Teil der Daten
des Paketes korrekt zu dekodieren, auch wenn im anderen Paketbereich ein
Übertragungsfehler die Daten unbrauchbar gemacht hat. Data Partitioning wird für I- und
Verfasser: Holger Kärst
78
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
P-VOP’s und für Binary Shape Coding bereitgestellt. Ein Videopaket, das mit Data
Partitioning für die Übertragung von DCT-Koeffizienten einer I-VOP erzeugt wurde, hat
folgenden Aufbau:
Abb. 49) Videopaket im Data Partitioning Modus für DCT-Werte von I-VOP’s
Bei der Paketierung von P-VOP’s in Videopakete werden die Bewegungsvektoren,
entsprechend der Abb.
49), durch ein Synchronisationswort (MM) von den
Texturinformationen getrennt.
Abb. 50) Videopaket im Data Partitioning Modus für Bewegungsvektoren und Texturdaten von P-VOP’s
Reversible Variable Length Coding (RVLC)
Nachdem die Resynchronisation des Decoders auf den Bitstrom erfolgreich abgeschlossen
ist, ermöglichen Recovery Tools, so viele Daten wie möglich zwischen der vorherigen und
der aktuellen Resynchronisationsmarke wieder herzustellen. Eine Datenwiederherstellung
kann durch Reversible Variable Length Coding (RVLC) erfolgen. RVLC ist eine spezielle
VL-Kodierung, mit der Codewörter eindeutig vorwärts, aber auch rückwärts dekodiert
werden können. Wenn ein Fehler in einem vorwärtskodierten Bitstrom erkannt wurde,
sucht der Decoder die nächste Resynchronisationsmarke und dekodiert den Bitstrom
rückwärts, bis wiederum ein Fehler auftritt. Somit werden nicht mehr alle Daten zwischen
zwei Resynchronisationsmarken verworfen, sondern nur noch ein Teil der Daten. Die
Lokalisierung des Fehlers kann bedeutend präziser erfolgen. RVLC wird vom MPEG4Standard nur im Zusammenhang mit Data Partitioning vorgeschlagen. Dort soll es für die
Kodierung/Dekodierung des zweiten Paketabschnitts (AC-Werte, bzw. Texturdaten)
eingesetzt werden. Den Wiederherstellungsprozess durch RVLC gibt die Abb. 51)
grafisch wieder.
Verfasser: Holger Kärst
79
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Abb. 51) Datenwiederherstellung mit RVLC
Header Extension Code
Die wichtigsten Informationen eines MPEG4-Bitstromes sind in den jeweiligen Headern
der MPEG4-Strukturelemente (VOL, VOP, GOV, VO,...) enthalten. Um diese Daten für
die Übertragung gesondert abzusichern, können sie redundant als Kopie im Header
Extension Code (HEC) übertragen werden. Der HEC befindet sich im Header eines
Videopakets direkt nach den Quantisierungsinformationen für den ersten Makroblock
(siehe Abb. 52). Wie oft HEC-Informationen im Bitstrom enthalten sind, wird vom
MPEG4-Standard nicht vorgeschrieben. Zu beachten ist, dass HEC zusätzlichen Overhead
erzeugt und somit die Kodiereffizienz vermindert.
Abb. 52) Aufbau eines MPEG4-Videopakets mit HEC
New Prediction
Ein Übertragungsfehler wirkt sich nicht nur auf die beschädigte VOP, sondern auch auf
alle VOP’s aus, die die beschädigte VOP als zeitliche Referenz nutzen. Der
Übertragungsfehler wird solange von P- und B-VOP’s weiterpropagiert, bis die nächste IVOP dekodiert wird. Im MPEG2-Standard werden für diesen Fall häufiger I-Frames im
Bitstrom übertragen. Dieser Lösungsvorschlag senkt die Kodiereffizienz jedoch erheblich.
Die NEWPRED-Technik des MPEG4-Standards vermindert die Verbreitung von Fehlern,
ohne die Kodiereffizienz zu stark zu beeinflussen. NEWPRED nutzt einen Rückkanal (im
OD definierbar), um den Encoder über ein fehlerhaftes NEWPRED-Segment (eine VOP
oder ein Videopaket) zu informieren. Der Encoder schließt die fehlerhafte VOP bzw. den
fehlerhaften Teil der VOP sofort als zeitliche Referenz für nachfolgende VOP’s aus. Für
jedes NEWPRED-Segment wird vom Decoder eine Nachricht an den Encoder gesendet,
Verfasser: Holger Kärst
80
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
mit der das Segment als korrekt oder inkorrekt dekodiert signalisiert wird. Da ein
fehlerhaftes Segment nicht mehr als zeitliche Referenz genutzt werden kann, muss ein
älteres Segment als Referenz eingesetzt werden. Die Differenz zwischen dem aktuell
kodierten Segment und dem nun älteren referenzierten Segment ist meist groß. Auch die
Bewegungsvektoren haben größere Werte, sodass insgesamt die kodierte Sequenz ein
höheres Datenvolumen besitzt.
6.1.5.6. MPEG4 Audio (Part 3)
Der MPEG4-Standard definiert vier unterschiedliche Audiocoder, die jeweils an die
Kodierung bestimmter Audiosignaltypen angepasst sind. Die Audiotypen sind natürliche
Sprache, natürliche Audiosignale, synthetische Sprache und synthetische Audiosignale.
Die Coder werden unterschieden in Time/Frequenzy-basierte Coder und NonTime/Frequenzy-basierte Coder. Die T/F-Coder fassen alle Audiocoder zusammen, die
nach dem Paradigma der wahrnehmungsabhängigen Kodierung eine spektrale
Repräsentation des Eingangssignals erzeugen. Hierzu zählen die AAC-Coder von MPEG2
und MPEG4 sowie die TwinVQ-Kodiertechnik von MPEG4. Die Non-T/F-Coder
analysieren und synthetisieren die Audiosignale nach definierten Modellen (z.B.
Sprachmodelle). Die MPEG4-Coder CELP und HVXC, für natürliche oder synthetische
Sprache, gehören zu den Non-T/F-Codern.
Der MPEG4-AAC-Standard entspricht grundlegend dem MPEG2-AAC-Standard. Es
wurden einige Erweiterungen implementiert, um die Kodiereffizienz zu erhöhen,
skalierbare Kodierung von Audiosequenzen zu ermöglichen und neue Funktionen für den
Fehlerschutz und für die Verbesserung der Fehlerrobustheit anzubieten. Die wichtigsten
neuen Module sind Perceptual Noise Substitution, Long Term Prediction, Transform
Domain Weighted Interleave Vector Quantization (TwinVQ), Low Delay AAC, Error
Resilience und Scalable Audio Coding.
Ich werde hier nur auf die für diese Arbeit relevanten Techniken, Scalable Audio Coding
und Error Resilience, eingehen.
Scalable Audio Coding
Mit der skalierbaren Audiokodierung soll ermöglicht werden, die Übertragungsrate
dynamisch an einen Übertragungskanal anzupassen, dessen Charakteristik während des
Kodiervorganges noch nicht bekannt war. Grundsätzlich unterscheidet der MPEG4-AudioStandard zwei Verfahren für die skalierbare Audiokodierung: Large Step Scalable Audio
Coding und Bit Sliced Arithmetic Coding
Verfasser: Holger Kärst
81
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Large Step Scalable Audio Coding
Dieser Kodiermechanismus basiert auf dem Konzept der hierarchischen eingebetteten
Kodierung, vergleichbar zur qualitativ skalierbaren Kodierung (SNR) von Videoobjekten.
Prinzipiell folgt der Kodiervorgang folgendem Ablauf:
Der Basisdatenstrom kann völlig unabhängig vom Erweiterungsdatenstrom vom Decoder
dekodiert werden. Jeder Erweiterungsdatenstrom verbessert im Dekodiervorgang die
Qualität des rekonstruierten Ausgangssignals. Die Werte der spektralen Koeffizienten der
Erweiterungsdatenströme werden dazu einfach mit den Informationen aus der Basisschicht
summiert.
In der Praxis ist für die Sprachkodierung die Kombination - Encoder der Basisschicht:
CELP, Erweiterungsdatenstrom: AAC - am sinnvollsten. Für die skalierte Kodierung von
Musiksignalen sollte in der Basisschicht TwinVQ und in den Erweiterungsschichten AAC
eingesetzt werden.
Bei der Bitstromstruktur werden für Large Step Scalable Audio Coding exakte
Spezifikationen formuliert:
•
Die syntaktischen Elemente eines Bitstroms sind für alle Schichten des skaliert
kodierten Signals gültig und werden in der Basisschicht übertragen.
•
Die MPEG4-AAC-Syntax unterstützt keine Multikanalsignale. Somit kann nur
Mono- oder Stereomaterial in einem skalierten Bitstrom übertragen werden.
Bit Sliced Arithmetic Coding (BSAC)
BSAC ist die Alternative zu Large Step Scalable Audio Coding. Mit diesem Tool sollen
die Hierarchiestufen zwischen Basis- und Erweiterungsdatenstrom bzw. zwischen den
Erweiterungsdatenströmen feiner granuliert werden. Damit werden Anforderungen erfüllt,
bei
denen
die
Erweiterungsdatenströme
ebenfalls
sehr
beschränkten
Übertragungskapazitäten unterliegen. Die spektralen Koeffizienten der Audiosignale
werden „bit-plane“-kodiert. Die absoluten Werte der Koeffizienten werden dazu bitweise,
entsprechend ihrer Signifikanz, in Slices (Ebenen) aufgeteilt, beginnend mit dem MSB bis
zum LSB. Jede Ebene wird durch einen Arithmetik-Coder entropiekodiert. Der
Basisdatenstrom überträgt die Quantisierungsfaktoren, sowie die ersten Slices der
spektralen Daten (MSB-Ebene). Die Erweiterungsdatenströme enthalten, entsprechend
ihrer Übertragungskapazität, weitere Slices. Der Datenstrom der obersten
Erweiterungsschicht überträgt die spektralen Daten der LSB-Ebene. Je mehr
Erweiterungsdatenströme den Decoder erreichen, umso höher ist die resultierende
Signalqualität des dekodierten Audiosignals.
Verfasser: Holger Kärst
82
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
6.1.5.7. Fehlerrobustheit / Fehlerabsicherung auditiver MPEG4-Sequenzen
Im MPEG4-Audio-Standard werden fünf neue codespezifische Tools definiert, die die
Fehlerrobustheit erhöhen und sogar eine Fehlerabsicherung erlauben:
•
Virtual Codebook
•
Reversible Variable Length Coding (RVLC)
•
Huffman Codewort Reordering (HCR) für Advanced Audio Coding
•
Error Resilient Bitstream Reordering
•
Error Protection (EP)
Im „Error Resilient Bitstream Reordering“-Verfahren wird die Information eines
Audioframes in Segmente zerlegt. Die Segmente werden abhängig von ihrer
Fehlersensitivität in verschiedene Fehlerklassen (Error Sensitivity Categories - ESC)
eingeordnet. Die Segmentierung kann mit Datenelementen oder bitweise vorgenommen
werden. Zusätzlich werden die Bits oder Datenelemente nach ihrer Fehlersensitivität
umsortiert. Die fehlerempfindlichsten Daten sollten sich nach der Umsortierung am
Anfang des Frames befinden. Für die unterschiedlichen Fehlerklassen sind jeweils
angepasste Fehlersicherungsmaßnahmen wie FEC, CRC oder ARQ einsetzbar. Diese Idee
entspricht dem Unequal Error Protection (UEP)-Ansatz und wird durch ein Error
Protection Tool (EP) im MPEG4-Audio-Standard bereitgestellt. Die Segmente einer
Fehlerklasse werden zu Error Resilience Frames zusammengefasst und mit dem
Fehlersichungsmechanismus abgesichert, der für die Fehlerklasse definiert wurde.
Das EP-Tool stellt eine Fehlerabsicherung für MPEG4-Audioströme bereit, deren Daten
mit Error Resilient Bitstream Reordering vorverarbeitet wurden (siehe Abb. 53). UEP ist
hier eine effiziente Methode, um die Fehlerrobustheit von Quellcodes zu erhöhen, wobei
den wichtigen Daten höhere Fehlerabsicherungen garantiert werden als den weniger
wichtigen Daten.
Abb. 53) Blockdiagram - Error-Protection-Tool [17] S.479
Verfasser: Holger Kärst
83
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Der UEP-Encoder erhält Segmente eines Audioframes, die in „Error Sensitivity
Categories“ eingeordnet sind. Das EP-Tool ordnet wiederum eine ESC oder eine
Kombination mehrerer ESCs einer EP-Klasse zu (siehe Tabelle 7: ). Die EP-Klassen
entsprechen Gruppen, denen FEC-Codes und/oder CRC-Codes unterschiedlicher Stärke
zugeordnet werden.
EP-Klasse 1
EP-Klasse 2
EP-Klasse 3
EP-Klasse 4
EP-Klasse 5
EP-Klasse 6
ESC0 Bits beider Frames
ESC1 Bits des ersten Frames
ESC2 Bits des ersten Frames
ESC1 Bits des zweiten Frames
ESC2 Bits des zweiten Frames
ESC3 Bits beider Frames
Tabelle 7: Zuordnungsbeispiel EP-Klasse <-> ESC
Als Beispiel wird folgende Klassentabelle des EP-Tools vorgestellt, in der für jede EPKlasse FEC- und CRC-Absicherungen definiert sind:
Quellcoder Bits
CRC Polynomgrad
FEC Kodierrate
Gesamtanzahl Bits
EP-Klasse
1
44
6
8/16
100
EP-Klasse
2
4
1
8/8
5
EP-Klasse
3
4
1
8/8
5
EP-Klasse
4
4
1
8/8
5
EP-Klasse
5
4
1
8/8
5
EP-Klasse
6
20
0
8/8
20
Tabelle 8: Fehlersicherungsmaßnahmen für EP-Klassen
Der Klasse 1 wird das höchste Gewicht eingeräumt. Übertragungsfehler können durch ein
CRC-Polynom sechsten Grades, also mit einer 6 Bit großen Prüfsequenz, erkannt werden.
Zusätzlich kann eine gewisse Anzahl gekippter Bits eines fehlerhaften Frames der 1.
Klasse mit Hilfe der durch FEC angefügten 8 Bit großen Redundanz korrigiert werden.
Die Klassen 2-5 werden durch ein Paritätsbit abgesichert, für die Klasse 6 sind keine
Sicherungsmaßnahmen vorgesehen.
6.1.5.8. Einsatz von MPEG4 im spezifizierten Multisource-Streaming-Ansatz
Der MPEG4-Standard bietet optimale Voraussetzungen für die Implementierung des
spezifizierten Multisource-Streaming-Ansatzes.
Die Schichtenarchitektur des MPEG4-System-Parts trennt den Kodierprozess vom
Verteilungsprozess. Somit können die kodierten multimedialen Daten auch in heterogenen
Netzwerken transportiert werden. Durch die DMIF-Schnittstelle ist die Verteilung
MPEG4-kodierter Sequenzen mit allen aktuellen und auch zukünftigen Netzwerktechniken
möglich.
Multimediale Daten können so skalierbar kodiert werden, dass die gesamte Breite
verfügbarer, multimedialer Endgeräte die vollständige Sequenz oder mindestens eine
Teilmenge der Sequenz dekodieren und wiedergeben kann.
Verfasser: Holger Kärst
84
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Das Objektparadigma erlaubt effiziente und völlig neue Konzepte für die skalierbare
Kodierung und die unabhängige Verteilung von Elementen einer Multimediasequenz.
Die Trennung der Meta- und Konfigurationsinformationen von den kodierten,
multimedialen Daten bietet weitere Möglichkeiten für den Verteilungsprozess an.
Verbesserte und neue Mechanismen erhöhen die Fehlerrobustheit, die Fehlertolleranz, die
Fehlererkennungs- und Fehlerlokalisierungsmöglichkeiten einer kodierten Sequenz. Sogar
Fehlerschutz durch Datenredundanz wird durch den MPEG4-Standard angeboten. Der
Transport kodierter Multimediasequenzen über verlustbehaftete Transportkanäle wird
somit bereits durch die Quellenkodierung unterstützt.
Für Audiosequenzen bietet der MPEG4-Standard erstmals die Möglichkeit einer
skalierbaren Kodierung an.
Die Kodiereffizienz wurde gegenüber früheren Standards nocheinmal erheblich verbessert,
sodass die zu vermittelnde Datenmenge, bei gleicher oder sogar besserer
Wiedergabequalität, weiter reduziert werden konnte.
Grundlegend werden alle Forderungen der Anforderungsanalyse an das einzusetzende
Kodierverfahren und die resultierende multimediale Datenstruktur durch MPEG4 erfüllt.
Das standardisierte MPEG4-Kodierverfahren wird deshalb für die Integration in die
Implementierung des Multisource-Streaming-Ansatzes ausgewählt.
Verfasser: Holger Kärst
85
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
6.2. Untersuchung von Protokollen der Anwendungsschicht
Die Spezifikation des Multisource-Streaming-Ansatzes fordert nicht nur eine
Untersuchung geeigneter Transportprotokolle für die Verteilung der multimedialen Daten.
Bereits auf der Anwendungsebene sind Kommunikationsprozesse notwendig, die den
Informationsaustausch zwischen Server und Client und im Besonderen die Steuerung des
Streamprozesses ermöglichen. Diese notwendigen Kommunikationsprozesse erfordern
eine Analyse verfügbarer Protokolle in der Anwendungsschicht.
6.2.1. Real Time Streaming Protokoll (RTSP)
An dieser Stelle wird nur eine Einführung in das Steuerprotokoll RTSP gegeben, um die
Stellung dieses Protokolls im funktionellen Ablauf der Datenvermittlung darzulegen.
Interessierte erhalten unter [3] nähere Informationen über das Protokoll.
6.2.1.1. Allgemeine Beschreibung
RTSP ist ein Protokoll, das in die Anwendungsschicht des ISO/OSI-Referenzmodells
eingeordnet werden kann. Es kontrolliert die Verteilung von Daten mit
Echtzeitanforderungen, wie z.B. Audio- und Videodaten. Dabei unterstützt es die
Verteilung gespeicherter, audiovisueller Daten sowie die Verteilung von Live-StreamingDaten über verschiedene Transportprotokolle (TCP, UDP, RTP,...). Es ist nicht selbst für
die Verteilung der Daten verantwortlich, sondern tritt als Signalisierungsprotokoll
zwischen dem Stream-Client und dem Stream-Server auf. Der Stream-Server kann über die
definierten Kommandos des RTSP - Protokolls vom Client gesteuert werden.
6.2.1.2. Operationen und Eigenschaften des RTSP-Protokolls
Der RTSP-Server verwaltet eindeutig bezeichnete Sessions. Eine Session beschreibt die
Kommunikationsbeziehung zwischen einem Stream-Client und einem Stream-Server. Eine
RTSP-Session ist nicht an eine bestimmte Transportverbindung gebunden. Der Client kann
während einer Session verschiedene Datentransportverbindungen öffnen und schließen, um
RTSP-Kommandos für diese Session zu senden. Die Session ist zwischen Client und
Server eindeutig über eine Session-ID identifizierbar.
Die Eigenschaften, eines vom Server angebotenen Services, werden in einer
Präsentationsbeschreibung festgehalten. Das Format dieser Beschreibung ist kein Teil des
RTSP-Standards. Hauptsächlich wird hierfür das Stream Discription Protocol (SDP)
verwendet. Die Präsentationsbeschreibung enthält Angaben über die Lokalität und die
Eigenschaften aller zum Service gehörenden Mediaströme (z.B. Audio, Video).
Verfasser: Holger Kärst
86
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Das RTSP-Protokoll unterstützt folgende Operationen:
•
Informationen über die verfügbaren Services eines Stream-Servers abrufen
Der Client kann eine Präsentationsbeschreibung einer gewünschten
Multimediasequenz über HTTP oder auf einem anderen Weg von einem Server
abrufen. Verwendet die Präsentation Multicast, so enthält die Beschreibung die
Multicast-Adressen und Ports, die für die Übertragung der kontinuierlichen
Medienströme benutzt werden sollen. Wird die Präsentation nur an den Client
übertragen, gibt der Client aus Sicherheitsgründen das Ziel vor.
•
Einladung eines Stream-Servers zu einer Konferenz
Ein Server kann zu einer bestehenden Konferenz „eingeladen“ werden, um Medien
in der Präsentation abzuspielen. Dieser Modus ist nützlich für OnlineLernapplikationen.
•
Hinzufügen von zusätzlichen Medien zu einer existierenden Präsentation
Besonders für Live-Präsentationen ist es nützlich, dass man den Client über neue,
zusätzlich verfügbar gewordene Medien informieren kann.
•
Steuerung eines Stream-Servers
Der Client kann den Streamvorgang mit Hilfe des RTSP-Protokolls starten,
stoppen und zwischenzeitlich anhalten. Der Client kann sogar ein definiertes
Zeitintervall für einen gewünschten Teil des Mediaservice angeben. Der
Streamvorgang beginnt in diesem Fall zum gewählten Startzeitpunkt und endet am
gewünschten Endzeitpunkt des Intervalls.
Zu diesen grundlegenden Funktionen muss die folgende Auswahl weiterer wichtiger
Eigenschaften des Protokolls genannt werden:
•
Erweiterbarkeit: Neue Methoden und Parameter können hinzugefügt werden.
•
Einfach zu interpretieren: RTSP kann mit jedem üblichen HTTP- oder MIMEParser interpretiert werden.
•
Transportprotokollunabhängigkeit: RTSP setzt nicht voraus, dass ein bestimmtes
Datentransportprotokoll - wie etwa UDP, RTP oder TCP - verwendet wird.
•
Multi-Server: Jeder Medienstrom einer Präsentation kann auf einem anderen
Server abgelegt sein. Der RTSP-Client richtet automatisch mehrere Sessions für
die Server ein. Synchronisation wird in der Transportschicht gewährleistet.
•
Transport verhandeln: Der Client kann die Transportmethode mit dem Server
aushandeln, bevor er einen Medienstrom empfängt.
Verfasser: Holger Kärst
87
Diplomarbeit
•
Inv.Nr.: 2004-11-03/096/IN99/2253
Sicherheit: RTSP nutzt Websicherheitsmechanismen die zum Beispiel über HTTP
zur Verfügung gestellt werden.
6.2.1.3. Protokollablauf / RTSP-Kommandos
Die Präsentationsbeschreibung wird durch eine RTSP-URL identifiziert und ist als Datei
unter dieser URL abgelegt. Ist ein Client an der Multimediasequenz dieser Session
interessiert, dann fordert er über einen Descripe Request die Präsentationsbeschreibung
von dieser URL an.
Innerhalb der Präsentationsbeschreibung wird jeder Mediastrom des Services wiederum
durch eine URL identifiziert, die auf den Stream-Server verweist, der den Mediastrom
bereitstellt. Für jeden Mediastrom kann ein eigenes Transportprotokoll definiert werden. In
der Anfrage für die Präsentationsbeschreibung werden vom Client die Clientadresse und
der Clientport als Ziel für den Server angegeben.
Nachdem die Präsentationsbeschreibung den Client erreicht hat, fordert der Client bei den
entsprechenden URL’s die einzelnen Medienströme an. Das wird durch die Setup-Methode
des RTSP-Protokolls erreicht. Die Setup-Methode führt serverseitig zur Initialisierung des
Übertragungskanals für den angeforderten Mediastrom und den Beginn der RTSP-Session.
Durch eine Serverantwort wird dem Client die zur Session gehörende Session-ID
mitgeteilt.
Mit einem Play-Request des Clients an den Server, beginnt der Server den Medienstrom
über den im Setup initialisierten Kanal an den Client zu übertragen.
Ein Pause-Request des Clients an den Server stoppt den Streamvorgang, ohne die
Ressourcen des Übertragungskanals freizugeben.
Der Teardown Request des Clients an den Server beendet den Streamvorgang bzw. die
RTSP-Session. Alle reservierten Ressourcen werden freigegeben.
6.2.2. Session Description Protocol (SDP)
Hier soll eine Einführung in das Session Description Protocol gegeben werden, wobei der
Zweck und der Umfang von SDP dargelegt wird. Es wird nur auf die grundlegenden
Eigenschaften, Syntaxelemente und die Struktur des Protokolls eingegangen. Erweiterte
Informationen erhält der Leser unter [4].
6.2.2.1. Einsatzgebiet
SDP kann von einem Stream-Server zur Beschreibung der verfügbaren Präsentationen und
der in den Präsentationen enthaltenen Medien verwendet werden. Der Stream-Server liefert
auf eine Serviceanfrage eine Präsentationsbeschreibung (Session Description) für den
Verfasser: Holger Kärst
88
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Service an den anfragenden Client aus. Die Beschreibung enthält Informationen, mit deren
Hilfe der Client die Medienströme einer Präsentation initialisieren und anfordern kann.
Ebenso sind Parameter für den Datentransport in dieser Beschreibung enthalten. Das
Beschreibungsformat unterliegt dabei strengen Syntax- und Sematikregeln, die durch das
Session Description Protocol vorgegeben werden.
6.2.2.2. Struktur
Eine SDP-Präsentationsbeschreibung besteht aus zwei Teilen. Der erste Teil, die Session
Level Description (SLD), ist für die gesamte Präsentationsbeschreibung gültig und somit
auch für alle Medienströme der Präsentation. Der zweite Part besteht aus ein oder
mehreren Media Level Description (MLD). Jede MLD enthält erweiterte Informationen,
die für genau einen Mediastrom gültig sind.
6.2.2.3. Syntax und Semantik
Die Syntax der Textzeilen ist durch die Verwendung des ISO10646-Zeichensatzes in UTF8-Kodierung (siehe [5]) vorgegeben.
SDP-Feldnamen und Attributnamen nutzen nur den US-ASCII-Teil von UTF-8. Textfelder
und Attributwerte können den vollen ISO 10656-Zeichensatz verwenden.
Die Textform wurde gewählt, um die Portabilität zu erhöhen, eine Reihe verschiedener
Transportmöglichkeiten zu erschließen (z.B. Session-Description über eine MIME E-Mail)
und um die Erzeugung und Verarbeitung mit flexiblen, textbasierten Toolkits (z.B. Tcl/Tk)
zu ermöglichen.
Eine SDP-Präsentationsbeschreibung besteht aus einer Anzahl von Textzeilen der Form
<type>=<value>. Zu beiden Seiten des ‚=’-Zeichens sind Leerzeichen verboten.
Der Feldname (<type>) enthält immer genau ein Zeichen (Groß- und Kleinschreibung wird
unterschieden).
Der Wert eines Feldes (<value>) ist ein strukturierter Text dessen Format vom Feldnamen
abhängt (Groß- und Kleinschreibung wird ebenfalls unterschieden).
Ein Feldwert enthält eine Anzahl von Feldern, die durch einzelne Leerzeichen voneinander
getrennt sind, oder er besteht aus einem freien String.
Die Session Level Description beginnt mit den folgenden drei Zeilen:
Verfasser: Holger Kärst
89
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
optional folgen die Zeilen:
Die Zeitinformationen für die Gültigkeit der Präsentation werden durch folgende TimeDescription angegeben:
Die Media Level Description ist folgendermaßen aufgebaut:
Besonders
hervorzuheben
ist
die
Möglichkeit,
über
Attribute
die
Beschreibungsmöglichkeiten des Session Description Protocols zu erweitern und an die
eigenen
Beschreibungswünsche
anzupassen.
Hier
können
erweiterte
Konfigurationsangaben für die gesamte Präsentationsbeschreibung oder einzelne
Mediaströme gemacht werden.
Im SDP-Standard sind einige Attribute bereits vorgegeben. Es lassen sich jedoch beliebige
neue Attribute implementieren. Attribute die vom Client nicht erkannt werden können,
werden nicht interpretiert, sondern beim Auslesen übersprungen.
Weitere Informationen über die benutzerdefinierten Attribute der Präsentationsbeschreibung erhält man in der „ISMA-Implementation Specifikation 1.0“ (siehe [43]).
Im Anhang F wird ein Beispiel einer vollständigen SDP-Präsentationsbeschreibung
dargestellt und erläutert.
Verfasser: Holger Kärst
90
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
6.3. Untersuchung von Protokollen der Transportschicht
In diesem Abschnitt werden verfügbare Protokolle der Transportschicht mit den
Anforderungen der Spezifikation verifiziert. Im Allgemeinen werden keine Details über
die Funktionsweise oder die syntaktischen Elemente der Protokolle beschrieben. Viel mehr
wird ein Überblick über die grundlegende Idee der Protokolle gegeben.
6.3.1. Transport Control Protocol (TCP)
Das Transport Control Protocol hat sich in drahtgebundenen Netzen hervorragend
etabliert. Es stellt eine sichere, Datenstrom-basierte, Ende-zu-Ende-Verbindung zwischen
Netzwerkknoten zur Verfügung und erlaubt eine effiziente, schnelle Datenübertragung
großer Datenmengen. Eine Flusskontrolle stellt sicher, dass ein Sender selbständig die
optimale Nutzlast für eine gegebene Netzkapazität einstellen kann.
Die Spezifikationen für eine drahtlose Datenübertragung unterscheidet sich jedoch enorm
von den Anforderungen, die aus drahtgebundenen Netzen bekannt sind. Die Fehlerrate
einer drahtgebunden Verbindung ist sehr gering. Fehler entstehen hauptsächlich durch
Überlastung an einem Netzwerkknoten, selten jedoch durch externe Störfaktoren.
In einer drahtlosen Umgebung ist die Fehlerrate bedeutend höher. Übertragungsfehler
entstehen nicht nur durch eine Überlast, sondern stochastisch durch Abschattung,
Echobildung und andere externe physikalische Störgrößen.
Gerade die effizienten Algorithmen der Flusskontrolle von TCP sind deshalb für die
drahtlose Übertragung problematisch.
TCP kann nicht zwischen verschiedenen Fehlerursachen unterscheiden. Für alle
aufgetretenen Verluste wird angenommen, dass sie aus einer Stausituation im
Netzwerkpfad entstanden sind. Auf Grund dieser Annahme ergreifen die TCPMechanismen Gegenmaßnahmen, die für drahtlose Netzwerke völlig falsch sein können.
Die Fehler- und Flusskontrolle bewirkt zudem eine Zeitverzögerung bei der
Datenübertragung, sodass TCP für die Übertragung zeitkritischer Elemente nicht geeignet
ist.
6.3.2. User Datagram Protocol (UDP)
Das User Datagram Protocol ist ein sehr einfaches Transportprotokoll, das mit wenig
Aufwand den Datenaustausch zwischen Netzwerkknoten ermöglicht. Das Protokoll
arbeitet verbindungslos und unzuverlässig. Es übernimmt keine Garantie, dass die
Dateneinheiten ihr Ziel erreichen und in einer bestimmten Reihenfolge ankommen. Die
einfache Funktionsweise des Protokolls erlaubt jedoch eine Datenübertragung mit sehr
geringer zusätzlicher Verarbeitungsverzögerung. Deshalb ist UDP für die Vermittlung
zeitkritischer Daten geeignet. Da UDP selbst keine Flusssteuerung und keine
Verfasser: Holger Kärst
91
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Fehlerbehandlung bereitstellt, müssen diese Funktionen von den Anwendungen der
Netzwerkknoten selbst übernommen werden.
6.3.3. Realtime Transmission Protocol (RTP)
Das
Realtime
Transmission
Protocol
unterstützt
Ende-zu-EndeNetzwerktransportfunktionen, die hauptsächlich auf die Übertragung von zeitkritischen
Daten, wie Audio- und Videodaten ausgerichtet sind. RTP ist kein „vollständiges“
Transportprotokoll. Es kann nicht als alleiniges Transportprotokoll eingesetzt werden, da
zum Beispiel Angaben über die Sender- und die Empfängeraddressen fehlen.
Typischerweise wird RTP deshalb im Zusammenhang mit UDP eingesetzt, jedoch wird
keine Einschränkung bei der Transportprotokollwahl vorgenommen. RTP bietet selbst
keine Möglichkeiten für Ressourcenreservierungen oder die Bereitstellung von QoS für
Übertragungskanäle an. Es nutzt jedoch die QoS-Dienste unterer Schichten des ISO/OSIReferenzmodells. RTP sichert den Datentransport nicht ab und gibt deshalb keine Garantie
für die Vollständigkeit und die Fehlerlosigkeit von empfangenen Paketsequenzen.
Über ein exklusives Steuerprotokoll, das Realtime Transmission Control Protocol können
jedoch empfängerseitige und senderseitige Abschätzungen der Güte des
Übertragungskanals vorgenommen werden.
6.3.3.1. Syntax
Da RTP für die Übertragung zeitkritischer Informationen sehr geeignet erscheint, soll mit
einer erweiterten Analyse ein tieferer Einblick in die Protokollsyntax gegeben werden.
Die Syntax des Realtime Transmission Protocols ist im RFC 3550 spezifiziert (siehe [1]).
Das Realtime Transmission Protocol unterstützt die Übertragung zeitkritischer Daten mit
Hilfe eines kleinen fixen Headers. Der Header besitzt die folgende Struktur:
Abb. 54) RTP-Header (Referenz: [1] S.13)
Verfasser: Holger Kärst
92
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Die wichtigsten Informationen für den Transport multimedialer Daten sind in den
Headerfeldern Payload-Type, Sequence Number, Timestamp und Synchronization Source
Identifier (SSRC) enthalten.
Die 16 Bit große Sequenznummer erhöht sich für jedes RTP-Datenpaket um eins und
beginnt sicherheitstechnisch mit einem zufälligen Wert. Die Sequenznummer ist für eine
ganze Reihe von wichtigen Mechanismen notwendig. Pakete die durch unterschiedliche
Übertragungswege durch das Netz ungeordnet beim Empfänger eintreffen, können mit
Hilfe der Sequenznummer in die korrekte Ordnung gebracht werden. Paketverluste sind
durch Lücken in der Nummernfolge leicht erkennbar. Somit kann eine Statistik über die
Paketverlustrate geführt werden, mit der ein Indiz für die Abschätzung der Güte des
Übertragungskanals zur Verfügung steht.
Der Zeitstempel (TimeStamp) enthält die Zeitinformation für den Präsentationszeitpunkt
der zu übertragenen multimedialen Dateneinheiten. So kann vom Empfänger bereits auf
der Transportschicht überprüft werden, ob die Informationen des Pakets zeitlich relevant
sind oder das Paket verworfen werden muss. Sehr wichtig ist diese Zeitinformation für die
Synchronisation mehrer zusammengehöriger Datenströme, die unabhängig von einander
über verschiedene Transportwege transportiert wurden. Pakete mit identischem
Zeitstempel beinhalten multimediale Elemente, die zum gleichen Zeitpunkt dargestellt
werden müssen (z.B. Audio- und Video-Elemente). Die Zeitstempel sind relative
Zeitangaben, die sich auf eine bestimmte Zeitbasis beziehen. Diese Zeitbasis muss für alle
zusammengehörenden Elementarströme identisch sein.
Mit Hilfe der kontinuierlichen Zeitstempel kann der Jitterwert, als ein weiterer Faktor zur
Beurteilung der Kanalgüte, berechnet werden. Diese Berechnung ist jedoch nur dann
korrekt, wenn RTP-Pakete mit einer konstanten Senderate übertragen werden.
Das Headerfeld Synchronization Source Identifier (SSRC) identifiziert einen
abgeschlossenen Sequenznummern- und Zeitstempelraum, der innerhalb einer RTPSession eindeutig ist.
Eine RTP-Session besteht aus einem Ende-zu-Ende-Transportweg, der über das Tupel
(Sender:Port, Empfänger:Port) definiert ist. Eine Multimediapräsentation besteht häufig
aus mehreren RTP-Sessions, die jeweils für den Transport eines Datenstromes zuständig
sind. Der SSRC-Identifier ist unabhängig vom Verbindungstupel. Das Tupel kann sich
während der Übertragung ändern. Der SSRC-Wert identifiziert den Medienstrom jedoch
immer noch eindeutig. Wenn sich die Netzwerkadresse des Senders ändert, dann sollte
jedoch auch der SSRC-Wert neu gewählt werden. So können Sendeschleifen verhindert
werden.
Das Feld Contributing Count (CC) sowie ein oder mehrere optional existierende
Contributing Source Identifier (CSRC) des RTP-Headers, sind für das Zusammenführen
(Multiplex) verschiedener Medienströme in einen RTP-Datenstrom notwendig.
Verfasser: Holger Kärst
93
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Contributing Count gibt dabei die Anzahl der gemultiplexten Medienströme an. Der
CSRC-Identifier identifiziert jeden Medienstrom im RTP-Datenstrom eindeutig. Zunächst
ist für den Multisource-Streaming-Ansatz eine verschachtelte Übertragung von mehreren
Elementarströmen in einem Datenstrom nicht vorgesehen, sodass die optionalen CSRCFelder für die Implementierung nicht benötigt werden.
Über das Extension Flag wird signalisiert, ob dem festen RTP-Header noch zusätzliche
Erweiterungsheader folgen.
Im Datenteil eines RTP-Pakets werden verschiedene Inhaltsformate (Payload-Types)
unterstützt, die auf die jeweils zu übertragenden Daten angepasst sind. Hier können zum
Beispiel durch zusätzliche Header weitere relevante Informationen für die zu
übertragenden Daten implementiert werden. Der Payload-Type gibt die Syntax und die
Struktur für den Datenteil des RTP-Pakets vor und signalisiert dem Empfänger bereits auf
der Transportebene, welche Datenformate im RTP-Paket zu erwarten sind.
Die Idee für die Definition verschiedener Payload-Formate war zunächst sehr güngstig. Bis
heute haben sich aber so viele Formate entwickelt, dass es sehr aufwändig und
kostenintensiv ist, Stream-Server und Stream-Clients zu erstellen, die alle Formate
unterstützen. Die „Internet Streaming Media Alliance“ (ISMA) hat eine offene, nicht
proprietäre Spezifikation erstellt, in der der Einsatz von RTP mit festgelegten PayloadFormaten für die Übertragung multimedialer Daten vorgeschlagen wird. Die Spezifikation
bezieht sich im Besonderen auf den Transport von Dateneinheiten, die gemäß dem
MPEG4-System-Standard, als Elementarströme kodiert wurden. Die Spezifikation gab der
Industrie die Möglichkeit, plattformübergreifende, zueinander kompatible und vom
Hersteller unabhängige Lösungen für die Übertragung von MPEG4-kodierten
Elementarströmen zu entwickeln. ISMA ist ein Konsortium, das aus über 30 führenden
Firmen der Unterhaltungselektronik und der Film- und Musikindustrie besteht. Weitere
Informationen über die Allianz und die Spezifikation erhält man in [43].
6.3.3.2. Fazit
RTP ist im Zusammenhang mit dem User Datagram Protocol als Transportprotokoll für
multimediale Daten gut geeignet. Es übermittelt die wichtigen Informationen (Zeitstempel,
Sequenznummer, Quellenname) bei einem kleinen und festen Overhead von 20 Byte pro
Dateneinheit (8Byte UDP-Header + 12 Byte RTP-Header). Die optionalen Erweiterungen,
um mehrere Medienströme in einen RTP-Datenstrom zu multiplexen, sind zunächst nicht
notwendig.
RTP selbst bietet wie bereits beschrieben keine eigenen Sicherheits- und
Überwachungsmechanisen für den Datentransport an. Die Sicherung und Überwachung
des Transports von zeitkritischen Daten ist jedoch unerlässlich. Deshalb ist ein zusätzliches
Verfasser: Holger Kärst
94
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Kontrollprotokoll notwendig. Im RFC 3550 ist ein Kontrollprotokoll beschrieben, das über
einen exklusiven Signalisierungskanal Überwachungs- und Sicherungsfunktionen, mit
Hilfe der Headerinformationen der RTP-Pakete bereitstellt, das Realtime Transmission
Control Protocol.
6.3.4. Realtime Transmission Control Protocol (RTCP)
Die Hauptaufgabe von RTCP ist es, ein Feedback über die Qualität der RTPDatenübertragung zu geben. Dabei werden die typischen Aufgaben eines
Transportkontrollprotokolls unterstützt. RTCP bietet eine Fluss- und Staukontrolle für
RTP-Datenströme an und dient zur Übertragung qualitätsbeschreibender Angaben über die
Güte des Transportkanals. Aus diesen Angaben kann zum Beispiel die durchschnittliche
Paketverlustrate und der durch den Übertragungsweg entstandene Jitter ermittelt werden.
Der Client kann mit Hilfe dieser Informationen entscheiden, ob ein neuer Transportweg
ermittelt werden muss bzw. ob die Datenanforderungen an eine neue Quelle mit besserer
Kanalgüte gerichtet werden sollten. In welcher Rate die Kontrollpakete zwischen Sender
und Empfänger ausgetauscht werden, ist von der Implementierung abhängig. In [1] wird
ein Vorschlag für die Anpassung der Rate an die Auslastung des Übertragungskanals
beschrieben.
6.3.4.1. Syntax
RTCP unterstützt für die Informationsübertragung fünf verschiedene Paketformate:
•
Senderreport-Paket (SR)
•
Empfängerreport-Paket (ER)
•
Quellenbeschreibungs-Paket (SDES)
•
Ende-Signalisierungs-Paket (BYE)
•
Paket für anwendungsspezifische Funktionen (APP)
Alle Pakettypen beginnen mit einem RTCP-Header (siehe Abb. 55), der dem RTP-PaketHeader sehr ähnlich ist.
Abb. 55) RTCP-Paket-Header (Referenz: [1])
Das Headerfeld RC gibt an, wie viele Report Blöcke dem Header folgen. Innerhalb der
Report Blöcke werden die RTCP-Informationen übertragen. Sie stellen also den Datenteil
Verfasser: Holger Kärst
95
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
des RTCP-Pakets dar. Der Payload-Type gibt an, um welchen Pakettyp es sich handelt
(SR, RR, SDES, BYE, APP).
Senderreport-Paket (SR)
Ein Sendereport-Paket wird durch den Payload-Type 200 identifiziert. Es kann benutzt
werden, um dem Empfänger die Zeitbasis für einen Datenstrom einer Multimediasequenz
mitzuteilen (NTP-TimeStamp). Mit dieser Zeitbasis ist es dem Empfänger möglich,
mehrere unabhängig erzeugte Datenströme untereinander zu synchronisieren. Der
Datenteil hat folgende Struktur:
Abb. 56) Payload des Sendereport-Pakets (Referenz: [1])
Empfangsreport-Paket (RR)
Das Empfangsreport-Paket wird vom Empfänger an den Sender übermittelt. Es liefert dem
Sender Informationen über die Güte des Datenempfangs bzw. über die
Verbindungseigenschaften (Jitter, Paketverluste). Das RR-Paket wird durch den PayloadType 201 signalisiert. Die folgende Abbildung stellt den Datenteil eines RR-Pakets dar:
Abb. 57) Payload eines RR-Pakets (Referenz: [1])
Weiter Informationen, speziell über die Pakettypen SDES, BYE, und APP können in [1]
nachgelesen werden.
Verfasser: Holger Kärst
96
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
6.3.4.2. Fazit
Das RTCP-Protokoll ist ein sehr einfaches Transportkontrollprotokoll. Es ist nur für den
Informationsaustausch der Kontrolldaten zwischen Sender und Empfänger zuständig. Die
Berechnung der Kontrollparameter, wie z.B. Paketverlustrate, Jitter und
Übertragungsverzögerung wird nicht durch das RTCP-Protokoll definiert, sondern bleibt
weiterhin von der Implementierung der Anwendungen der Kommunikationspartner
abhängig. Aufgrund der exklusiven Signalisierungsverbindung und der relativ kleinen
zusätzlichen Belastung des Übertragungskanals kann dieses Transportkontrollprotokoll
auch bei knapper Ressourcenverfügbarkeit eingesetzt werden.
Verfasser: Holger Kärst
97
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
6.4. Analyse einer Auswahl verfügbarer Encoder / Stream-Server
Aktuell sind drei Kategorien von Systemen für die Kodierung und Verteilung
multimedialer Inhalte unterscheidbar:
1. Kategorie: Stream-Server als Einzelsystem
2. Kategorie: Encoder als Einzelsystem
3. Kategorie: Gesamtsystem aus Encoder und Stream-Server
Die drei bekanntesten Anbieter von Stream-Server-Systemen sind Microsoft (Microsoft
Windows Media Server), Real (Real Networks Helix Server) und Apple (Darwin Server).
Mit DivX und XviD stehen zwei MPEG4-Video-Encoder zur Verfügung.
Die Produkte „MPEGable Broadcaster“, „MPEG4IP“ und „Fraunhofer IIS MPEG4Encoder/Stream-Server“ sind interessante Vertreter der dritten Kategorie.
Die genannten Systeme werden kurz vorgestellt und mit den Anforderungen für den
Einsatz im Multisource-Streaming-Ansatz verifiziert.
6.4.1. Microsoft Windows Media Server
Der Microsoft Windows Media Server wird mit den Serverbetriebssystemen von Microsoft
(WIN2000 Server, WIN2003 Server) kostenlos ausgeliefert.
Die Multimediadaten werden in einem speziellen Microsoft-ASF-Format übertragen.
Multimediale Daten, die verschiedene Formate besitzen können und mit untschiedlichen
Kodierverfahren komprimiert wurden, müssen zunächst in dieses Microsoft-Format
transformiert werden. Mit dem User Datagram Protocol werden die transformierten
Multimediadaten in Form von ASF-Paketen im Netzwerk verteilt.
Metainformationen über Multimediainhalte von Datenströmen sind in ASX-Files abgelegt.
Die visuellen Elemente sind häufig mit dem Kodierverfahren Windows Media Video
(WMV), die auditiven Daten mit dem Kodierverfahren Windows Media Audio (Video)
kodiert. Diese Codecs sind Eigenentwicklungen von Microsoft. Aufgrund der
Firmenphilosophie des Unternehmens sind interne Funktionalitäten dieser Kodierverfahren
nicht öffentlich erhältlich.
Der Windows Media Server kann in einem ASF-File multimediale Datenströme in
mehreren Bitraten anbieten. Die Übertragung von skalierbar kodierten
Multimediasequenzen ist jedoch nicht möglich.
Da der Media Server kein Open-Source-Projekt ist und somit der Quellcode nicht
verfügbar ist, können keine Anpassungen des Servers an den Multisource-StreamingAnsatz vorgenommen werden.
Verfasser: Holger Kärst
98
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Eine genaue Beschreibung des Microsoft Windows Media Servers ist in [19] und [20] zu
finden.
6.4.2. Real Networks Helix Server
Der Helix Server von Real Networks ist seit 2002 ein Open-Source-Projekt. Der Server ist
plattformunabhängig und kann mit mehr als 55 Multimediaformaten umgehen. Die
Multimediadaten werden in ein Real-eigenes Format transformiert, bevor sie vom Server
im Netzwerk verteilt werden. Auf der Empfängerseite muss somit ein Realplayer
existieren, der mit diesem Format umgehen kann.
Metainformationen für eine Multimediasequenz werden in einer exclusiven .ram-Datei
angegeben. Hier sind z.B. Angaben über die Lokalität und den Namen der
Multimediasequenz sowie das zu verwendende Steuerprotokoll für den Server (meistens
RTSP) enthalten. In dieser Datei können auch redundante, alternative Lokalitäten für einen
Multimediastrom angegeben werden.
Eine skalierbar kodierte Multimediasequenz ist auch mit dem Helix Server nicht
übertragbar. Der MPEG4-Standard wird vom Helix Server noch nicht unterstützt. Das
Vermitteln von MPEG4-kodierten Sequenzen soll jedoch in absehbarer Zeit implementiert
werden.
Den Ablauf eines Vermittlungsprozesses von multimedialen Daten mit dem Helix Server
erhält der Leser in [18].
6.4.3. Apple Darwin Server
Der Darwin Server ist das Open-Source-Derivat des Quicktime Servers der Firma Apple.
Er ist für die Betriebssysteme Mac OS X Server, Linux (Red Hat 8 oder höher), Solaris 9,
und Windows 2000/2003 Server verfügbar. Der Server erlaubt das Verteilen von
gespeicherten MPEG4-(Simple-Profile), Quicktime-, 3GGP- und MP3-kodierten
Multimediasequenzen. Die unterschiedlich kodierten Sequenzen werden durch ein Hinting
Tool in das Darwin Stream Format (mov) transformiert.
Das Hinting Tool beschreibt, wie ein Element einer kodierten Multimediasequenz in ein
Transportpaket mit definiertem Payload-Format verpackt werden muss. Es besteht also die
Möglichkeit Authoring-Tools zu verwenden, die nur das Format ihrer Mediadaten kennen
bzw. Server zu verwenden, die nur ihr Transportprotokoll und das passende hint-file
kennen. Das Hinting-Tool bildet somit die „Brücke“ zwischen diesen beiden
Komponenten. Häufige Anpassungen von Authoring-Tools an neue Protokolle oder
Anpassungen von Servern an neue Mediendatentypen sind nicht notwendig.
Verfasser: Holger Kärst
99
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Die transformierten Multimediadaten werden paketiert in RTP-Strömen übertragen.
Metainformationen sind mit den Protokollen RTSP und SDP in der Anwendungsschicht
verteilbar.
Ein direktes Live-Streaming ist mit dem Darwin Server nicht möglich. Die Daten eines
verfügbaren Live-Streams werden an anfragende Netzwerkknoten „reflektiert“. Der LiveStream muss jedoch durch eine Quelle, bereits in RTP-Paketen paketiert, dem Server zur
Verfügung gestellt werden. Der Server leitet die RTP-Pakete der Quelle an die
anfragenden Netzwerkknoten weiter. Allgemeine Informationen über den Darwin Server
sind unter [21] verfügbar. Der Reflektionsprozess wird in [22] genau beschrieben.
Dokumentationen für den Source Code des Darwin Servers erhält der Leser in [23].
6.4.4. DivX
DivX ist eine Entwicklung der Firma DivXNetworks. Der MPEG4-Codec wurde als
Alternative zum „Microsoft MPEG4“-Codec WMV entwickelt.
Er unterstützt das Simple-Visual-Profile und das Advanced-Simple-Visual-Profile des
MPEG4-Standards Part 2. Dabei sind jeweils 5 Level auswählbar, mit denen MPEG4kodierte Sequenzen in einer Auflösung von 176x144 bis 1280x720 bei einer Bitrate von
200KBit/s bis 32MBit/s erzeugt werden können.
Die DivX-kodierten Daten werden zusammen mit den zugehörigen Audiodaten in einem
AVI-Containerformat gespeichert. Audiodaten und Videodaten sind somit nicht
unabhängig von einander verteilbar.
Weitere Informationen zu DivX findet der Leser in [24].
6.4.5. XviD
XviD ist ein Open-Source-Projekt für die Entwicklung eines ISO-MPEG4-konformen
Videocodecs.
Mit XviD können MPEG4-Videosequenzen im Simple-Visual-Profile und AdvancedSimple-Visual-Profile aller Level kodiert werden. Das Verfahren unterstützt die Kodierung
visueller Daten mit einer Auflösung von 176x144 Pixel bis 720x576 Pixel mit einer Bitrate
von 16KBit/s bis 48,6MBit/s.
Auf welche Art die kodierten Daten gespeichert oder verteilt werden ist abhängig von der
Anwendung und wird von XviD nicht vorgegeben.
XviD arbeitet auf Windows-, Linux-, MacOSX-, BSD-, Solaris- und BeOS-Plattformen.
Erweiterte Informationen über das Open-Source-Projekt, Funktionsdetails und Foren
werden in [25] angeboten. Spezielle Anweisungen für den Einsatz von XviD mit den
Microsoft Betriebssystemen findet der Leser unter [26].
Verfasser: Holger Kärst
100
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
6.4.6. Fraunhofer IIS MPEG4 Encoder / Stream-Server
Der Fraunhofer IIS MPEG4-Encoder / Stream-Server ist ein kommerzielles Produkt des
„Fraunhofer Instituts für Integrierte Schaltungen“. Es ist ein Gesamtsystem für die
Kodierung und das Verteilen multimedialer Inhalte. Die Kodierung von visuellen
Datenelementen erfolgt konform zum MPEG4-Standard Part 10 (Advanced Video
Coding). Auditive Sequenzen werden gemäß dem MPEG4-Standard Part 3 (High
Efficiency Advanced Audio Coding) kodiert.
Die visuellen Daten können entsprechend dem Simple-Visual-Profile, dem AdvancedSimple-Visual-Profile, dem Core-Profile oder dem Advanced-Coding-Efficiency-Profile
in jeweils allen Leveln kodiert werden. Somit werden durch diesen Encoder VideoAuflösungen von 176x144 Pixel bis 1920x1088 Pixel bei Bitraten zwischen 64KBit/s und
38,4MBit/s unterstützt.
Audio- und Videodatenströme können als Elementarströme unabhängig voneinander im
Netzwerk verteilt werden. Die multimedialen Elemente werden entsprechend der „ISMASpecification“ paketiert und transportiert. Metainformation für eine MPEG4-Sequenz
werden auf der Anwendungsebene mit Hilfe der Protokolle RTSP und SDP bereitgestellt.
Die Software ist als Objekt-Code (linkable Libraries) für die Betriebssysteme Windows,
Linux und PocketPC verfügbar und für x86-Plattformen optimiert (SSE, SSE2, MMX).
Den Quellcode erhält man nach Bestätigung der Lizensbedingungen des Fraunhofer
Instituts.
Informationen, Kontakte und weitere Beschreibungen für dieses Produkt werden unter [28]
angeboten.
6.4.7. MPEGable Broadcaster
MPEGable Broadcaster ist ein interessantes, kommerzielles Produkt der Firma „dicas
digital image coding GmbH“ aus Berlin. Es wurde grundsätzlich für die Verteilung,
Kodierung und Speicherung multimedialer Inhalte, konform zum MPEG4-Standard und
zur „ISMA-Specification“ 1.1 entwickelt.
MPEGable Broadcaster unterstützt folgende Funktionen:
•
Echtzeit-MPEG4-Kodierung visueller Inhalte im Simple-Profile und AdvancedSimple-Profile (alle Level)
•
Echtzeit-MPEG4-AAC-LC-Kodierung auditiver Inhalte
•
RTP-Multicast-Streaming (“ISMA-Specification” 1.1) - Verteilen von
Elementarströmen
•
Steuerprotokoll/Beschreibungsprotokoll RTSP/SDP
Verfasser: Holger Kärst
101
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
•
Vorverarbeitung (Cropping, Resizing, Deinterlacing, RGB-, Helligkeits- und
Kontrastanpassung) der multimedialen Daten
•
Verteilung und Speicherung MPEG4 kodierter Sequenzen aus verschiedenen
Quellen (siehe Abb. 58)
Abb. 58) MPEGable Broadcaster (Referenz: [27])
Technische Vorraussetzungen für den Einsatz von MPEGable Broadcaster sind:
•
Prozessor: Pentium III, Athlon Prozessor oder besser
•
Bertriebssystem: Windows 98, ME, NT 4.0, 2000 oder XP
Der Quellcode für MPEGable Broadcaster wird von dem Unternehmen nicht zur
Verfügung gestellt. Angaben über technische Details der internen Funktionen des
Programms sind nicht verfügbar. MPEGable Broadcaster kann man für ca. 300 Euro
erwerben. Für Kontaktinformationen und detailiertere Beschreibungen des Produkts wird
auf [27] verwiesen.
6.4.8. MPEG4IP-MP4Live
MPEG4IP ist ein Open-Source-Projekt der Firma „Cisco Systems“. MPEG4IP ist ein
Gesamtsystem zum Kodieren, Streamen und Dekodieren von multimedialen Inhalten. Das
Projekt ist nicht für den Gebrauch im Endbenutzerbereich gedacht, sondern vielmehr für
Entwickler, die am Streaming standardisiert kodierter audiovisueller Daten interessiert
sind. Die hauptsächlichen Funktionalitäten von MPEG4IP werden von den
Softwarepaketen MP4Live und MP4Player geliefert.
MP4Live kodiert in Echtzeit Live-Streams und erlaubt es, die kodierten Daten über eine
Ende-zu-Ende-Verbindung in einem Netzwerk zu vermitteln, und (oder) die kodierten
Daten in einem MP4-Container-File abzulegen. MP4Live unterstützt verschiedene
standardisierte Kodierverfahren. Die wichtigsten Verfahren sind MPEG1, H.261, MPEG2,
MPEG4 (XviD), MP3 und MPEG4-AAC. Für den Streamprozess werden die kodierten
Daten entweder entsprechend dem MPEG2-System-Standard (MPEG2-Transportstrom)
oder gemäß dem MPEG4-System-Standard (OD-Framework, Elementarstrom) in Access
Units paketiert und mit Synchronisationsinformationen versehen. Der Transport der Access
Verfasser: Holger Kärst
102
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Units erfolgt konform zur „ISMA-Specification“ 1.1. Das Format der
Transportdateneinheiten wird durch das Realtime Transmission Protocol, mit den
vorgeschlagenenen Payload-Formaten der RFC3016(MPEG4-Video, siehe [11]),
RFC3640(MPEG4-AAC, siehe [10]), RFC2250(MPEG2-Video, siehe [8]) und
RFC3119(MP3, siehe [9]) bestimmt.
Metadaten werden in einer Konfigurationsdatei abgelegt und über die Protokolle RTSP
und SDP übermittelt. RTSP ist für die Übermittlung der Konfigurationsinformationen bei
MPEG4IP nicht zwingend erforderlich, sondern kann optional genutzt werden. Wenn
RTSP nicht benutzt werden soll, muss ein anderer Mechanismus für den Transport der
Konfigurationsinformationen an den dekodierenden Netzwerkknoten existieren.
In definierten Zeitabständen werden RTCP-Senderreport-Pakete vom MP4Live-Server
erzeugt und an den MP4Player übertragen. Die Senderreport-Pakete enthalten einen NTPZeitstempel mit der lokalen Systemzeit des Encoders. Der MP4Player nutzt diese
Zeitstempel, um die Zeitbasis des Encoders zu rekonstruieren. Diese Zeitbasis wird im
Wiedergabeprozess für die Ermittlung der korrekten Präsentationszeit der multimedialen
Dateneinheiten der Elementarströme benötigt.
Weitere Funktionalitäten von MPEG4IP und nähere Informationen über das Projekt sind
unter [29] zu finden.
6.4.9. Fazit
Aktuell existierende MPEG4-Encoder und Stream-Server unterstützen kein Profil des
MPEG4-Standards, dass eine skalierbare Kodierung multimedialer Daten erlaubt. Die
Realisierung des spezifizierten Multisource-Streaming-Ansatzes ist somit nicht vollständig
möglich. Die analysierte Heterogenität der Endgeräte kann in einer derzeitigen
Implementierung nicht berücksichtig werden. Jedoch sind einige Encoder in der Lage,
unabhängig verteilbare Audio- und Videoelementarströme gemäß dem MPEG4-Standard
Part 1 zu erzeugen. Somit kann ein veränderter Multisource-Streaming-Ansatz
implementiert werden, der die Möglichkeit der unabhängigen Verteilbarkeit von Audiound Videoelementarströmen ausnutzt. Die Implementierung weicht deshalb von der
Spezifikation ab. Es können keine skalierbar kodierten Datenströme verteilt werden,
jedoch Elementarströme des MPEG4-Standards Part 1.
Es werden ein Encoder und ein Stream-Server benötigt, die unabhängig verteilbare
Elementarströme gemäß dem MPEG4-Standard Part 1 erzeugen und verteilen können.
Das Open-Source-Projekt MPEG4IP bietet sich als Encoder und Stream-Server für die
Implementierung des abgeänderten Multisource-Streaming-Ansatzes an.
Durch folgende positive Eigenschaften konnte sich MPEG4IP von den anderen
analysierten Kodier- und Stream-Systemen abheben. Diese Eigenschaften haben zur
Verfasser: Holger Kärst
103
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Auswahl von MPEG4IP als Kodier- und Stream- System für die Implementierung des
Multisource-Streaming-Ansatzes geführt:
•
der Sourcecode ist frei verfügbar und kostenlos
•
das Projekt ist sehr aktuell und wird kontinuierlich weiterentwickelt
•
das Projekt ist bereits sehr bekannt und die Entwicklungsergebnisse werden schon
weit verbreitet eingesetzt
•
es nutzt nur standardisierte, populäre Kodierverfahren
•
durch seine PlugIn-Architektur ist MPEG4IP sehr leicht mit neuen
Kodierverfahren erweiterbar
•
es transportiert die multimedialen Dateneinheiten und Metainformationen gemäß
der ISMA-Specification 1.1 und ist damit kompatibel zu vielen Stream-Servern
und Wiedergabeeinheiten
•
es ist ein Gesamtsystem zum Kodieren, Streamen, Speichern und Dekodieren
multimedialer Inhalte
•
es erzeugt unabhängig verteilbare, synchronisierbare Elementarströme
•
es nutzt die positiven Eigenschaften von MPEG4 für die Fehlerverschleierung und
Fehlerkorrektur
•
es bietet eine einfache Schnittstelle an, um die multimedialen Daten und
Metainformationen für die eigene Implementierung nutzen zu können
•
es unterstützt die wichtigsten Betriebssysteme (MS Windows, Linux)
MPEG4IP hat aber auch Eigenschaften, die sich nachteilig auf die Implementierung
auswirken können.
•
es ist ein sehr junges Projekt und enthält damit noch einige Programmierfehler
•
der Stream-Server unterstützt nur eine Clientverbindung
Diese Schwächen lassen sich
Entwicklungszeit beseitigen.
Verfasser: Holger Kärst
jedoch
mit
vertretbarem
Aufwand
und
etwas
104
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
6.5. Analyse einer Auswahl verfügbarer Decoder / Wiedergabeeinheiten
Die Wahl eines geeigneten Decoders bzw. einer geeigneten Wiedergabeeinheit für die
Implementierung der Verteilerquellen des Multisource-Streaming-Ansatzes, ist direkt von
dem serverseitig eingesetzten Kodier- und Stream-System MPEG4IP abhängig.
Der Decoder der Verteilerquelle muss in der Lage sein, MPEG4-System-Datenströme,
MPEG4-Video(XviD) und MPEG4-Audio (AAC) dekodieren zu können. Zusätzlich
müssen der Wiedergabeeinheit die Payload-Formate der eintreffenden RTP-Datenströme
bekannt sein, damit die Daten korrekt aus dem Transportdatenstrom in einen MPEG4System-Datenstrom transformiert werden können. Die Wiedergabeeinheit muss den
Anforderungen der ISMA-Specification 1.1 genügen.
Die notwendigen Metainformationen für die Initialisierung der Decoderparameter muss die
Wiedergabeeinheit aus der MPEG4IP-Konfigurationsdatei auslesen können. Somit ist es
wichtig, dass die Wiedergabeeinheit Implementierungen der Steuer- und
Beschreibungsprotokolle RTSP und SDP besitzt.
Es gibt verschiedene Decoder / Wiedergabeeinheiten, die diesen Anforderungen gerecht
werden und somit in den Verteilerquellen, abhängig vom Betriebssystem, eingesetzt
werden können.
Für MS Windows XP ist der WMP4Player des MPEG4IP Projektes oder der Quicktime
Player von Apple geeignet. In einer Verteilerquelle mit Linux Betriebssystem kann der
Mplayer oder der GMP4Player des MPEG4IP Projektes eingesetzt werden.
Verfasser: Holger Kärst
105
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
6.6. Plattform für die Implementierung des Multisource-StreamingAnsatzes
Nachdem die serverseitigen und clientseitigen Komponenten für eine Implementierung des
Multisource-Streaming-Ansatzes ausgewählt wurden, kann eine Übersicht über die
grundlegende Plattform des zu implementierenden Systems gegeben werden.
6.6.1. Netzwerkstruktur
Die Infrastruktur des Verteilernetzwerkes wird durch ein WLAN-Adhoc-Netzwerk nach
dem Standard 802.11b bestimmt. Mehrere Netzwerkknoten sind in diesem Netzwerk
drahtlos, dynamisch, teilvermascht miteinander verbunden. Jedem Netzwerkknoten sind
seine aktuellen Nachbarn direkt bekannt. Die Adressen der Nachbarn werden von jedem
Knoten in einer Addressenliste verwaltet, die als Datei im Textformat lokal angelegt wird.
6.6.2. Netzwerkknoten
Die Netzwerkknoten werden, wie im Entwurf gefordert (siehe 4.2), in Hauptquelle und
Verteilerquelle unterschieden.
Die Hauptquelle des Systems besteht aus folgenden Hardware- und Softwarekomponenten:
Hardwareübersicht:
•
Kamera:
Canon Digital Video Camcorder PAL MVX100
•
Mikrofon:
in der Kamera enthalten
•
Capturekarte:
Haupauge WINTV Primio FM (Chipsatz: BT878)
•
Prozessor:
AMD Athlon 1GHz
•
Hauptspeicher:
256 MB SDRAM
•
Grafikkarte:
ATI Xpert 2000 Pro 64MB SDRAM
•
Netzwerkkarte:
LAN-Karte Realtek RTL8139-PCI-Fast Ethernet
Softwareübersicht:
•
Betriebssystem:
Linux Debian (Kernel 2.6.8.1)
•
Encoder video:
(VBR)
MPEG4IP XVID1.0 / MPEG4 - System / 25fps / 500kbps
•
Encoder audio:
MPEG4IP AAC / MPEG4 - System / 128kbps (CBR)
•
Stream-Server:
MPEG4IP-MP4LIVE
Verfasser: Holger Kärst
106
Diplomarbeit
•
Verteiler Server:
Inv.Nr.: 2004-11-03/096/IN99/2253
MultiSourceHq (eigene Implementierung)
Die Funktionalität der Hauptquelle kann folgendermaßen kurz beschrieben werden:
Eine digitale Kamera liefert einen Composit-Datenstrom und einen PCM-Datenstrom an
das Capture-Device der Hauptquelle. Der Composit-Datenstrom wird von dem CaptureDevice in einen YUV-Datenstrom transformiert. Der YUV-Datenstrom und der PCMDatenstrom werden vom Capture-Device an den MP4Live-Encoder weitergeleitet. Der
Encoder erzeugt ein MPEG4-Objekt mit zwei unabhängig verteilbaren MPEG4-SystemElementarströmen - einen XVID-kodierten Video-Elementarstrom und einen AACkodierten Audio-Elementarstrom. Der Video-Elementarstrom wird mit einer variablen
durchschnittlichen Bitrate von 500KBit/s und einer Framerate von 25 Frames/s kodiert.
Der kodierte Audio-Elementarstrom besitzt eine konstante Bitrate von 128KBit/s.
Wie bereits erwähnt, kann der MP4Live-Stream-Server die Elementarströme und die
Konfigurationsinformationen immer nur einem Netzwerkknoten anbieten. Um mehreren
Nutzern gleichzeitig den Zugriff auf den Live-Stream zu ermöglichen, ist ein zusätzlicher
Verteilerserver notwendig, der dem MP4Live-Stream-Server nachgeschaltet werden muss.
Der Darwin Server ist in der Lage diese Aufgabe zu übernehmen. Jedoch bietet er zu viele
Funktionalitäten an, die für diese Implementierung nicht benötigt werden. Entsprechend
groß sind deshalb auch die Hard- und die Softwareanforderungen des Darwin Servers an
einen Netzwerkknoten. Für die Aufgabe der Verteilung der Elementarströme ist es deshalb
besser, eine eigene, ressourcenschonendere Lösung zu entwickeln, die gleichzeitig in der
Hauptquelle und in den Verteilerquellen eingesetzt werden kann. Die eigene
Implementierung eines Verteilerservers wird „MultisourceHq“ (Hq=Hauptquelle) genannt.
Der MP4Live-Stream-Server übergibt die kodierten Daten der Elementarströme, paketiert
als RTP-Transportströme zum MultisourceHq-Verteilerserver. Der Verteilerserver bietet
die Transportdatenströme als Service im Adhoc-Netzwerk an. Der MultisourceHQVerteilerserver tritt gegenüber dem MP4Live Stream-Server als Client und den
Verteilerquellen des Netzwerks gegenüber als Server auf. Die nachfolgende Abbildung
stellt den Prozess grafisch dar:
Abb. 59) Architektur der implementierten Hauptquelle
Verfasser: Holger Kärst
107
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Die Verteilerquellen sind mobile Rechner
Hardwarekomponenten und Betriebssystemen.
(Laptop)
mit
unterschiedlichen
Hardwareübersicht:
•
Prozessor: Intel/AMD , Taktrate > 1GHz
•
Hauptspeicher: SDRAM > 256MB
•
Netzwerk-Karte (PCMCIA):
•
WLAN D-Link DWL 650G+ (802.11g)
•
WLAN RoamAbout (802.11b)
Softwareübersicht:
•
Betriebssystem:
•
Suse Linux 9.0 (Linux Kernel 2.4.x)
•
Suse Linux 9.1 (Linux Kernel 2.6.4)
•
Debian (Linux Kernel 2.6.8)
•
Windows XP
•
Decoder/Wiedergabeeinheit:
•
MPlayer (Linux)
•
QuickTime Player (Windows)
•
MPEG4IP MP4Player (Linux, Windows)
•
Stream-Client: Multisource
•
Verteiler Server: Multisource
Je nach Betriebssystem des Netzwerkknotens wird der MPLayer, der QuickTime-Player
oder der MP4Player als Wiedergabeeinheit und Decoder verwendet. Der
Kommunikationsprozess zwischen einer Verteilerquelle und der Hauptquelle bzw.
zwischen den Verteilerquellen untereinander, wird durch eine eigene Implementierung
realisiert. Sie enthält zusätzlich die Funktionen für die Annahme und die Verteilung der
Transportdateneinheiten und der Konfigurationsinformationen. Diese Implementierung
wird mit „Multisource“ bezeichnet. Mit der Abb. 60) wird die Architektur der
Implementierung einer Verteilerquelle grafisch dargestellt.
Verfasser: Holger Kärst
108
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Abb. 60) Architektur der implementierten Verteilerquelle
6.6.3. Protokolle
Mit der Wahl des Encoders stehen gleichzeitig die zu verwendenden Protokolle der
Anwendungsschicht und der Transportschicht fest.
MP4Live verwendet in der Anwendungsschicht für die Kodierung der Metainformationen,
wie z.B. Objekt-Deskriptoren, BIFS-Deskriptoren oder netzwerk- und encoderspezifische
Informationen das Stream Description Protocol (SDP). Diese Informationen werden in
einer Konfigurationsdatei im SDP-Format abgelegt, das dem Decoder für die
Initialisierung zugänglich gemacht werden muss. Aufgrund der Wichtigkeit dieser
Konfigurationsdaten, werden sie mit TCP zu den Netzwerkknoten der Dienstnutzer
transportiert.
Die visuellen und die auditiven Daten werden vom MP4Live-Stream-Server jeweils als
unabhängiger RTP-Datenstrom bereitgestellt. Für die Übermittlung dieser zeitkritischen
Daten wird UDP als geeignetes Transportprotokoll eingesetzt. Die Paketierung der
multimedialen Daten erfolgt gemäß der „ISMA-Specification“ 1.1.
Verfasser: Holger Kärst
109
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
6.6.4. Entwicklungsumgebung
Da in der Verteilerquelle und in der Hauptquelle unterschiedliche Betriebssysteme genutzt
werden, ist eine plattformunabhängige, höhere Programmiersprache für die Entwicklung
erforderlich. Zudem soll die Implementierung objektorientiert erfolgen, um spätere
Erweiterungen und Veränderungen des Systems leicht zu ermöglichen. Deshalb wurde
entschieden, für die Implementierung eine Java-Entwicklungsumgebung zu verwenden.
Die Entwicklungsumgebung Eclipse 3.0 erwies sich als sehr effizient und funktionell. Sie
bietet neben den grundlegenden programmiertechnischen Funktionen eine sehr gute
Online-Hilfe, ein übersichtliches Debug-System und sogar ein UML-PlugIn für ein
Softwaredesign an. Eclipse 3.0 kann mit allen Java-SDKs von Sun Microsystems
eingesetzt werden. Für diese Implementierung wird Java 1.4.2_05 verwendet.
Verfasser: Holger Kärst
110
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
7. Implementierung
Dieses Kapitel beschreibt detailliert die Implementierung des spezifizierten Systems.
Grundsätzlich werden die Funktionen der entwickelten Klassen dokumentiert. Die
Beschreibung der Algorithmen erfolgt nicht vollständig, sondern es werden nur die
zentralen Stellen erläutert. Die Schilderung des Funktionsablaufs soll mit Zitaten aus dem
Programmcode und Skizzen verständlicher dargelegt werden.
Die Implementierung des neuen Multisource-Streaming-Ansatzes gliedert sich in drei
Funktionsgruppen: Hauptquelle, Verteilerquelle und Kernsystem. Die Gruppen sind durch
Kommunikationsbeziehungen mit einander verknüpft und sie stellen gruppeninterne
Funktionen untereinander bereit. Die nächsten Abschnitte des Kapitels beschreiben
ausführlich die Eigenschaften und die Aufgaben dieser Funktionsgruppen.
7.1. Hauptquelle
Im Abschnitt 6.6 wurde die grundlegende Plattform der spezifizierten Hauptquelle
beschrieben. Die Funktionen für die Erstellung und die Kodierung der multimedialen
Daten konnten durch frei verfügbare, ausgewählte Komponenten in die Hauptquelle
integriert werden. Die noch fehlenden funktionalen Elemente für die Bereitstellung und die
Verteilung der multimedialen Daten im hochdynamischen Netzwerk, wird durch die in
diesem Abschnitt beschriebene Implementierung eines Verteilerservers integriert. Die
Implementierung dieses Servers besteht aus den Klassen „MultisourceHq“,
„ServerHauptquelle“ und „ClientHauptquelle“. Die Funktionen dieser Klassen werden in
den folgenden Abschnitten dokumentiert.
7.1.1. MultisourceHq
Die Klasse MultisourceHq definiert das funktionale Gerüst des Verteilerservers der
Hauptquelle. Sie enthält die Mainmethode, die die Initialisierung und den Start der
MultisourceHq-Komponenten ServerHauptquelle, ClientHauptquelle und BufferManager
festlegt. Der Verteilerserver besteht aus einer Client- und einer Serverkomponente. Die
Clientkomponente (ClientHauptquelle) sorgt für die Datenverbindung zum MP4LiveStream-Server. Sie nimmt die MPEG4-kodierten multimedialen Elemente von dem
Stream-Server entgegen. Die Serverkomponente (ServerHauptquelle) des Verteilerservers
stellt die MPEG4-Sequenz als Service im Netzwerk bereit. Der Datenfluss der zu
vermittelnden Elementarströme im Verteilerserver ist in Abb. 61) dargestellt.
Verfasser: Holger Kärst
111
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Abb. 61) Grundgerüst der Implementierung des Verteilerservers „MultisourceHq“
In der Initialisierungsphase werden die Komponenten des Verteilerservers für die
Bereitstellung und die Verteilung multimedialer Daten vorbereitet. Zunächst wird eine
Instanz der Klasse „BufferManager“ erzeugt. Durch Referenzen auf diese Instanz können
die Client- und die Serverkomponente mit dem zentralen Puffermanager kommunizieren
(siehe Abb. 61). Danach wird der global gültige Parameterwert für das Homeverzeichnis
des Verteilerservers gesetzt. Im Homeverzeichnis ist die Konfigurationsdatei der kodierten
MPEG4-Sequenz von MP4Live abgelegt. Diese Konfigurationsdatei wird durch die
Methode parseSDPFile () einmalig ausgelesen, um die Eigenschaften und die Lokalität der
Elementarströme, die vom Stream-Server angeboten werden, zu ermitteln. Der
Puffermanager unterhält eine Wissensbasis, die alle notwendigen Informationen über
verfügbare Elementarströme zusammenfasst. Für jeden vom Stream-Server bereitgestellten
Elementarstrom wird ein Serviceeintrag in dieser Wissensbasis generiert. Ein
Serviceeintrag enthält elementarstromspezifische Informationen, die aus der
Konfigurationsdatei ausgelesen wurden. Solche Informationen sind z.B. der Name der
Multimediasequenz (Servicename), die Elementarstrom-ID und die durchschnittliche
Datenrate, mit der der Elementarstrom kodiert wurde. Die Kombination aus dem Namen
der Multimediasequenz und der Elementarstrom-ID kennzeichnet einen Elementarstrom
eindeutig.
Der Puffermanager richtet jeweils ein Pufferfeldelement für die zu erwartenden Daten
eines Elementarstroms und ein Pufferfeldelement für Signalisierungsdaten des zugehörigen
Verfasser: Holger Kärst
112
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Transportkontrollprotokollkanals ein. Die Nummern der Pufferfeldelemente werden
ebenfalls als elementarstromspezifische Informationen in die Wissensbasis eingetragen So
ist eine eindeutige Zuordnung zwischen dem Schlüssel, Servicename/Elementarstrom-ID
und der Pufferfeldelementnummer gegeben.
Nach dieser Initialisierungsphase ist der Verteilerserver bereit, die verfügbaren MPEG4Sequenzen im hochdynamischen Netzwerk anzubieten.
Der Nutzer kann mit dem Konsolenkommando „close“ den MultisourceHq-Verteilerserver
beenden. Nach dem close-Kommando wird das Pufferfeld geleert und es werden alle
Einträge aus der Serviceinformationstabelle entfernt.
7.1.2. ClientHauptquelle
Die Klasse „ClientHauptquelle“ implementiert die Funktionalität der Clientkomponente
des Verteilerservers. Die Aufgabe der Klasse besteht darin, die Daten der Elementarströme
und die zugehörigen Transportkontrollinformationen vom Stream-Server (MP4Live)
entgegenzunehmen und in den definierten Pufferfeldelementen abzulegen. Die
Elementarströme werden vom Stream-Server lokal auf fest definierten Ports bereitgestellt.
Die Portnummer für den ersten Elementarstrom beginnt bei 20000. Für jeden weiteren
Elementarstrom erhöht sich die Portnummer um zwei. Die Portnummer muss gemäß der
„ISMA-Specification“ geradzahlig sein, da sich für jeden Elementarstrom auf der nächsten,
folgenden ungeradzahligen Portnummer der zugehörige Signalisierungskanal des
Transportkontrollprotokolls befindet.
Der Client ermittelt aus der Wissensbasis des Puffermanagers alle Elementarströme, die
vom Stream-Server angeboten werden. Der Zugriff auf diese Tabelle erfolgt über die
Referenz des BufferManager-Objekts, das in der MultisourceHq-Klasse generiert wurde.
Für jeden Elementarstrom startet der Client zwei Empfänger-Threads. Einer der Threads
sorgt für den kontinuierlichen Datenempfang und die kontinuierliche Pufferung der
empfangenen Transportdateneinheiten des Elementarstroms im entsprechenden
Pufferfeldelement. Der zweite Thread ist für den Empfang und die Pufferung von
Transportkontrollinformationen (RTCP-Senderreport-Pakete) verantwortlich, die durch
den MP4Live-Stream-Server erzeugt und versendet wurden. Die Threads sind Instanzen
der Klasse „StreamRequest“. Diese Klasse ist eine Komponente des Kernsystems. Sie
enthält alle Funktionen für die Realisierung des kontinuierlichen Datenempfangs. Von
jedem Thread wird eine Referenz gebildet, die in eine global gültige Threadliste
eingetragen wird. Mit dieser Threadliste können alle erzeugten Threads verwaltet werden.
Die Funktionalität der Threadliste wird durch die statische Klasse „ThreadList“
bereitgestellt.
Verfasser: Holger Kärst
113
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
7.1.3. ServerHauptquelle
Die Klasse „ServerHauptquelle“ enthält alle funktionalen Elemente der Serverkomponente
des Verteilerservers. Sie hat die Aufgabe, die gepufferten Elementarströme den
benachbarten Netzwerkknoten zur Verfügung zu stellen. Zudem enthält die Klasse die
Algorithmen, die die externen Kommunikationsprozesse zu Netzwerkknoten im
hochdynamischen Netzwerk definieren.
Für die Kommunikation ist ein exklusiver Signalisierungskanal vorgesehen. Die
Signalisierungsinformationen sind nicht zeitkritisch aber empfindlich bei
Übertragungsfehlern. Deshalb werden sie mit dem sicheren Transport Control Protocol
übertragen. Der Signalisierungskanal wird serverseitig durch ein Serversocket mit dem
definierten TCP-Port 5566 initialisiert. Dort erwartet der Server asynchron eintreffende
Clientanfragen. Damit das kontinuierliche Abhören des Serversockets nicht den
Programmablauf blockiert, ist jede Instanz der Klasse „ServerHauptquelle“ ein Thread.
Nach dem erfolgreichen Verbindungsprozess zwischen dem Client und dem Server, wird
eine neue Instanz der internen Klasse „ClientThread“ erzeugt (siehe Abb. 62). Dem
Konstruktor der Klasse wird ein neues Clientsocket übergeben. Die Klasse „ClientThread“
enthält die gesamte Funktionalität für die Signalisierung zwischen dem Server und einem
Client.
Abb. 62) Initialisierung von Threads für jede eintreffende Clientanfrage
Zunächst erwartet das „ClientThread“-Objekt vom Client einen „Service-Request“. Mit
dieser Anfrage überprüft der Client die Verfügbarkeit einer Multimediasequenz mit
bestimmtem Namen (Servicename). Der angefragte Servicename wird vom Server an das
„BufferManager“-Objekt weitergeleitet. Der Puffermanager durchsucht die Wissensbasis
nach dem Servicenamen. Existieren lokal gepufferte Daten eines oder mehrerer
Elementarströme für eine Multimediasequenz mit diesem Namen, dann liefert der
Puffermanager eine Liste mit allen Informationen über die verfügbaren
Elementarstromteile an den Server zurück. Solange diese Liste nicht leer ist, entnimmt der
Verfasser: Holger Kärst
114
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Server die Informationen über einen Elementarstrom aus der Liste und übermittelt sie an
den Client. In den Angaben sind die Elementarstrom-ID, der Medientyp, die
durchschnittliche Datenrate des Elementarstroms sowie die Sequenznummer und der
Zeitstempel der ersten und der letzten gepufferten Dateneinheit enthalten. Das Ende der
Informationsübertragung wird dem Client durch die Zeichenfolge „NoData“ signalisiert.
Besitzt die Hauptquelle keine Elementarstromteile der gewünschten Multimediasequenz,
dann sendet der Server sofort die Zeichenfolge „NoData“ an den Client. Der
Kommunikationsprozess ist in der folgenden Abbildung grafisch dargestellt.
Abb. 63) Zeitablaufdiagramm für einen Service-Request
Nach diesem Informationsaustausch ermittelt der Client die Linkgüte der Verbindung zum
Server (siehe Abb. 64). Der Server erhält für die Initialisierung dieses Prozesses einen
„Ping-Request“ über den Signalisierungskanal vom Client. Auf diese Anfrage antwortet
der Server mit seiner aktuell verfügbaren Uplink-Kapazität. Der Wert der Kapazität wird
vom Linkmanager des Servers verwaltet und geliefert. Die Funktionalität des
Linkmanagers definiert die Klasse „LinkmanagerServer“, die ein Teil des Kernsystems ist.
Nach der Übermittlung der verfügbaren Uplink-Kapazität erzeugt der Server, mit der
Methode Ping() der internen Klasse ClientThread, ein UDP-Socket mit der festgelegten
Portnummer 5556. Dort erwartet der Server zehn aufeinander folgende UDP-Pakete vom
Client. Die UDP-Pakete enthalten den Zeitwert des Zeitpunktes, an dem sie vom Client
erzeugt und an den Server übertragen wurden. Der Server sendet die UDP-Pakete direkt
nach dem Empfang an den Client zurück. Der Client kann mit Hilfe der Pakete, die er
wieder zurückbekommen hat, einfach die durchschnittliche Umlaufzeit (RTT) und die
Anzahl der Paketverluste für die Verbindung zum Server ermitteln.
Verfasser: Holger Kärst
115
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Abb. 64) Kommunikationsprozess zur Abschätzung der Verbindungsqualität
Warum wird UDP für die Abschätzung der Linkgüte verwendet? Das „User Datagram
Protocol“ garantiert die erfolgreiche, fehlerfreie Übertragung von Paketen nicht. Nur so
kann man gut ermitteln, wie stark die Fehler- und Verlusthäufigkeit der Verbindung
zwischen Client und Server ist.
Sollte der Server vom Client als Kandidat für die Übermittlung der
Konfigurationsinformationen einer Multimediasequenz ausgewählt werden, dann erhält er
über den Signalisierungskanal einen „Describe Request“. Diese Anfrage enthält den
Namen der Multimediasequenz, für die die Konfigurationsinformationen angefordert
wurden.
Die Konfigurationsinformationen für jede der in der Hauptquelle verfügbaren
Multimediasequenzen sind jeweils in einer Datei im Homeverzeichnis des Servers
abgelegt. Der Bezeichner der Datei ist identisch mit dem Namen der korrespondierenden
Multimediasequenz. Die Dateiendung „sdp“ verweist auf das SDP-Format, der
Informationen, die in der Datei enthalten sind. Ein Beispiel für SDP-formatierte
Konfigurationsinformationen ist im Anhang F gegeben.
Der Server durchsucht das Homeverzeichnis nach einer Konfigurationsdatei mit dem
Namen der gewünschten Multimediasequenz. Existiert diese Datei und sie ist vom Server
lesbar, dann bestätigt der Server die Verfügbarkeit der Konfigurationsinformationen durch
die Zeichenfolge „OK\n“. Sollte die geforderte Datei nicht verfügbar sein, dann wird die
Zeichenfolge „NEG\n“ vom Server an den Client gesendet.
Verfasser: Holger Kärst
116
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Nach einem positiven Ergebnis dieser Überprüfung, fordert
Konfigurationsinformationen beim Server an (siehe Abb. 65).
der
Client
die
Die Anforderung erfolgt mit einem „SDP-Request“. Der Server öffnet die
Konfigurationsdatei,
liest
sie
zeilenweise
aus
und
übermittelt
die
Konfigurationsinformationen ebenfalls zeilenweise, als String an den Client. Das Ende der
Informationsübertragung wird dem Client durch den String "END OF FILE\n" mitgeteilt.
Abb. 65) Anforderung der Konfigurationsinformationen
Der Client benötigt zu den Datenelementen der gewünschten Elementarströme zusätzliche
Transportkontrollprotokollinformationen, in Form von RTCP-Senderreport-Paketen. Jedes
RTCP-Senderreport-Paket enthält einen Zeitstempel des MP4Live-Stream-Servers. Mit
einer Folge dieser Zeitstempel kann der Client die Zeitbasis für die relativen
Zeitinformationen der kodierten Datenelemente der Elementarströme rekonstruieren.
Wenn der Server ausgewählt wurde, um gepufferte Daten eines Elementarstroms zu
vermitteln, dann erhält er über den Signalisierungskanal einen „Stream Request“ (siehe
Abb. 66). In dieser Anforderung ist der Servicename, die Elementarstrom-ID, der
gewünschte Startzeitpunkt für den Elementarstrom und die Portnummer des UDP-Sockets,
auf dem die Daten erwartet werden, enthalten. Der Server öffnet nach dem erhaltenen
„Stream Request“ zwei neue UDP-Sockets. Das erste UDP-Socket dient zur Übertragung
der gepufferten Datenelemente des gewünschten Elementarstroms. Das zweite UDPVerfasser: Holger Kärst
117
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Socket ist für den Transfer der gespeicherten Transportkontrollprotokollinformationen
(RTCP-Sendereportpakete) erforderlich.
Nun wird für jeden angeforderten Elementarstrom eine Instanz der Klasse „Streaming“
erzeugt. Diese Klasse enthält alle Funktionen, um eine zeitkorrekte Vermittlung der
gepufferten Datenelemente und Transportkontrollprotokollinformationen zu gewährleisten.
Abb. 66) Anforderung der Elementarströme
7.2. Verteilerquelle
Die Realisierung der Funktionen der Verteilerquelle für den Datenempfang und die
Datenverteilung erfolgte vollständig durch Neuentwicklungen. Die Verteilerquelle
definiert die Grundlage des neuen Multisource-Streaming-Ansatzes. Für den
Wiedergabeprozess wurde eine ausgewählte, verfügbare Wiedergabeeinheit, mit dem darin
enthaltenen MPEG4-Decoder, als eine eigenständige Komponente in die Verteilerquelle
integriert. Für die Übergabe der multimedialen Datenelemente an diese
Wiedergabekomponente musste eine Schnittstelle entwickelt werden.
Die resultierende Implementierung der Verteilerquelle wird durch die Klassen
„Multisource“, „Server“ und „Client“ funktional definiert.
7.2.1. Multisource
Die Klasse „Multisource“ legt die grundlegende funktionale Architektur der
Verteilerquelle fest. Sie enthält die Mainmethode, die die Initialisierung und den Start der
Komponenten der Verteilerquelle definiert. Die Verteilerquelle besteht aus einer
Clientkomponente, einer Serverkomponente und aus der Wiedergabeeinheit. Die
Clientkomponente sorgt für Datenverbindungen zu meist mehreren Verteilerservern im
Verfasser: Holger Kärst
118
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
hochdynamischen Netzwerk. Sie nimmt die MPEG4-kodierten multimedialen Elemente
von diesen Servern entgegen und leitet sie zur Darstellung an die Wiedergabeeinheit
weiter. Die Serverkomponente der Verteilerquelle stellt die MPEG4-Sequenz als Service
anderen Dienstnutzern im Netzwerk bereit. Der Datenfluss ist in der folgenden Abbildung
dargestellt:
Abb. 67) Grundgerüst der Implementierung der Verteilerquelle „Multisource“
In der Initialisierungsphase werden, entsprechend der Abb. 67), die Komponenten der
Verteilerquelle für den Datenempfang, die Datenvermittlung und die Darstellung der
multimedialen Daten vorbereitet. Zunächst wird eine Instanz der Klasse „BufferManager“
erzeugt, über deren Referenz die Client- und die Serverkomponente mit dem
Puffermanager kommunizieren können. Danach wird der global gültige Parameterwert für
das Homeverzeichnis gesetzt. Im Homeverzeichnis werden die Konfigurationsdateien der
lokal gepufferten MPEG4-Sequenzen und die Datei „serverlist.sdp“, für die Verwaltung
benachbarter Netzwerkknoten, abgelegt.
Nach der Initialisierungsphase wird die Serverkomponente als Instanz der Klasse „Server“
gestartet. Die Verteilerquelle ist nun als Diensterbringer für die Bereitstellung verfügbarer
Elementarströme bereit.
Der Nutzer kann in der Konsole den Namen einer Multimediasequenz eingeben, die für die
Wiedergabe gewünscht wird. Mit der Bestätigung des Wunsches, wird eine neue Instanz
Verfasser: Holger Kärst
119
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
der Klasse „Client“ erzeugt. Dem Konstruktor dieser Klasse werden der Name der
gewünschten Multimediasequenz und eine Referenz auf das erzeugte „BufferManager“Objekt übergeben.
7.2.2. Client
Die Klasse „Client“ implementiert die Clientkomponente der Verteilerquelle. Die
Funktionalität der Klasse besteht darin, die vom Nutzer gewünschte Multimediasequenz
bei benachbarten Netzwerkknoten anzufordern, zwischenzuspeichern und lokal
wiederzugeben. Der Hauptanteil der in dieser Klasse implementierten Funktionen
bestimmt den Kommunikationsprozess zwischen der Clientkomponente und
Diensterbringern.
Zunächst stellt der Client eine Service-Anfrage an alle bekannten benachbarten
Netzwerkknoten. Dazu wird die Methode serviceRequestBroadcast() aufgerufen. Der
Client liest zeilenweise die Datei „serverlist“ aus, in der die Anzahl und die Adressen der
benachbarten Netzwerkknoten verwaltet werden. Er erzeugt ein Feld, das Objekte der
Klasse „ServerType“ aufnehmen kann (siehe Abb. 69). Die Feldgröße entspricht der
Anzahl der bekannten benachbarten Netzwerkknoten. Ein „ServerType“-Objekt bündelt
die Eigenschaften eines Servers. Solche Eigenschaften sind z.B. die Serveradresse, die
Linkgüte zwischen dem Client und diesem Server und die aktuelle Uplink-Kapazität des
Servers. Außerdem enthält das „ServerType“-Objekt eine Liste (serviceList) mit Objekten
der Klasse „StreamType“ (siehe Abb. 70). In einem „StreamType“-Objekt sind alle
Informationen für einen Elementarstrom enthalten, der von dem Server des
korrespondierenden „ServerType“-Objekts angeboten wird (siehe Abb.
71). Die
nachfolgende Abbildung stellt den Ausleseprozess beispielhaft dar.
Abb. 68) Auslesen der Datei „serverlist“ und Anlegen des ServerType-Feldes
Verfasser: Holger Kärst
120
Diplomarbeit
Abb. 69) Definition eines „ServerType“-Objektes
Inv.Nr.: 2004-11-03/096/IN99/2253
Abb. 70) Definition eines „StreamType“-Objektes
Zu jedem dieser Server wird nacheinander eine TCP-Verbindung - der
Signalisierungskanal - eröffnet und ein „Service Request“ gesendet. Die Anfrage enthält
den Namen der gewünschten Multimediasequenz. Der Server übermittelt daraufhin die
Informationen über alle Elementarströme, die er zu diesem Zeitpunkt für die
Multimediasequenz anbieten kann (siehe Abb.
63). Die Eigenschaften dieser
Elementarströme werden, wie bereits beschrieben, in die Liste „serviceList“ eingetragen.
Abb. 71) Beispiel einer „serviceList“
Sollte ein befragter Server keine Daten für die gewünschte Sequenz zur Verfügung stellen,
dann wird die Serveradresse des korrespondierenden „ServerType“-Objekts mit der
Zeichenfolge „NoService“ überschrieben.
Nachdem die Informationen über die verfügbaren Elementarströme für alle befragten
Server ermittelt wurden, wird die Linkgüte zu diesen Dienstanbietern abgeschätzt. Dazu
erzeugt der Client eine neue Instanz der Klasse „LinkmanagerClient“, die als Parameter
das Feld mit den ermittelten Servern erhält. Von jedem angegebenen Server wird die
verfügbare Uplink-Kapazität erfragt. Mit einer Folge von 10 Ping-Paketen schätzt der
Client die Linkgüte zum Server ab (siehe Abb. 64). Die Ergebnisse werden für jeden
Server im korrespondierenden „ServerType“-Objekt als Servereigenschaft eingetragen.
Der Linkmanager sortiert das Feld nach der Linkgüte der Server. Der Dienstanbieter mit
der besten Anbindung ist nach der Sortierung das erste Element des Feldes. Das sortierte
Feld wird vom Linkmanager an die Clientkomponente zurückgeliefert.
Der Client wählt aus diesem Feld den Kandidaten aus, von dem die
Konfigurationsinformationen der gewünschten Multimediasequenz angefordert werden
Verfasser: Holger Kärst
121
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
sollen. Aufgrund der Wichtigkeit dieser Informationen wird der Anbieter mit der besten
(sichersten) Anbindung, also das erste Element des Feldes ausgewählt. Die Serveradresse
des Kandidaten wird als Parameter an die Methode requestConfigurationInformation()
übergeben. Mit dieser Methode werden die Konfigurationsinformationen von dem
gewählten Kandidaten angefordert.
Über den Signalisierungskanal sendet der Client einen „Describe Request“, mit dem
Namen der gewünschten Multimediasequenz, an den Kandidaten. Ist die
Konfigurationsdatei beim Server verfügbar, dann erhält der Client die positive Bestätigung
„OK\n“. Im anderen Fall erhält er die Nachricht „NEG\n“ und bricht den gesamten
Kommunikationsprozess ab. Wird die Anfrage vom Server positiv beantwortet, dann
fordert der Client mit einem „SDP Request“ die Konfigurationsinformationen an. Der
Server sendet zeilenweise die Informationen aus der Konfigurationsdatei an den Client
(siehe Abb. 65).
Der Client legt im definierten Homeverzeichnis eine neue Konfigurationsdatei an. Der
Bezeichner der Datei ist identisch mit dem Namen der gewünschten Multimediasequenz
(Service Name). Die Dateiendung „sdp“ weist auf das Format der Informationen hin, die in
der Datei enthalten sein werden. In diese erzeugte Konfigurationsdatei schreibt der Client
die zeilenweise empfangenen Informationen ein. Gleichzeitig ermittelt er die
Elementarstrom-ID’s, die in den empfangen Daten enthalten sind. Die ID’s geben
Auskunft über die Elementarströme, die für die korrekte Dekodierung und Wiedergabe der
Multimediasequenz erforderlich sind. Sie werden in der Liste „ServiceWeNeed“
abgespeichert. Nach der empfangenen Zeichenfolge „END OF FILE“ hat der Client alle
Konfigurationsinformationen erhalten und die Datei wird geschlossen.
Verfasser: Holger Kärst
122
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Entsprechend der folgenden Abbildung wird die Auswahl der geeigneten Server
vorgenommen, von denen Elementarströme angefordert werden sollen.
Abb. 72) Auswahl der Diensterbringer
Der Client besitzt einerseits mit der Liste „ServiceWeNeed“ die Informationen über die
benötigten Elementarströme. Andererseits sind die serverseitig verfügbaren
Elementarströme durch die „ServerType“-Objekte des sortierten Serverfeldes bekannt. Die
Auswahl der Datenlieferanten wird nun folgendermaßen ermittelt:
Die erste Elementarstrom-ID aus der Liste „ServiceWeNeed“ wird mit den Identifikatoren
der Elementarströme verglichen, die von den Servern des sortierten Serverfeldes angeboten
werden. Beginnend bei dem ersten Element durchläuft der Algorithmus schrittweise das
sortierte Serverfeld, solange bis ein Server gefunden ist, der den Elementarstrom mit der
gesuchten ID anbietet. Zudem überprüft er, ob die Uplink-Kapazität des Servers
ausreichend ist, damit der Server die Daten des Elementarstroms korrekt an den Client
übertragen kann. Existiert ein solcher Server, dann erzeugt der Client eine Instanz der
Klasse „StreamRequest“. Ein „StreamRequest“-Objekt definiert den Ablauf für den
Empfang von Datenelementen eines Elementarstroms und wird als Thread erzeugt. Der
Client parkt dieses Objekt in dem Vektor „StreamRequestList“. Der Auswahlprozess wird
solange wiederholt, bis alle Elemente der Liste „ServiceWeNeed“ durchlaufen sind. Am
Ende enthält der Vektor „StreamRequestList“ eine Folge von Abbildungen, von den
verfügbaren Elementarströmen auf die ausgewählten Datenlieferanten.
Durch den Auswahlalgorithmus wird garantiert, dass immer zuerst die Server mit der
besten Verbindung zum Client als Diensterbringer ausgewählt werden.
Verfasser: Holger Kärst
123
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Es ist möglich, dass für die Auslieferung aller Elementarströme der gleiche Server
ausgewählt wird. Ebenso können auch mehrere verschiedene Datenlieferanten für die
Anforderung der Elementarströme gewählt werden. Eine Auswahl verschiedener
Kandidaten für die Anforderung eines Elementarstroms ist nicht möglich.
Ein Elementarstrom wird nicht vollständig von einem Netzwerkknoten gepuffert, sondern
nur ein zeitliches Intervall eines Elementarstroms. Da die Elementarströme von
unterschiedlichen Quellen angefordert werden können, differieren die Zeitintervalle der
angeforderten Elementarstromteile. Somit muss nach der erfolgreichen Auswahl der
Diensterbringer ein gemeinsamer Startzeitpunkt für die Auslieferung der Elementarströme
gefunden werden. Dafür ist die Methode SearchStartTimeStamp() zuständig.
Abb. 73) Ermittlung eines gemeinsamen Startzeitpunkts für den Anforderungsprozess der Elementarströme
Der Client ermittelt jeweils den Zeitstempel des jüngsten Datenelements der
Elementarstromteile, die von den verschiedenen Quellen angebotenen werden. Eine
erneute Anfrage an die Server ist nicht erforderlich, da diese Information bereits in den
gespeicherten „Stream-Type“-Objekten jedes ausgewählten Servers enthalten ist. Der
Älteste dieser ermittelten jüngsten Zeitstempel definiert den für alle Elementarströme
gemeinsam gültigen Startzeitpunkt (siehe Abb. 73).
Nun kann es jedoch passieren, dass die Zeitintervalle der Elementarstromteile so
verschieden sind, sodass es keine zeitlichen Überlappungen zwischen den
Elementarstromteilen gibt. Hierfür sind zwei Fälle unterscheidbar:
Entweder ist der erste Elementarstromteil dem zweiten Elementarstromteil zeitlich zu weit
voraus (siehe Abb.
74), oder der erste Elementarstromteil hängt dem zweiten
Elementarstromteil zeitlich zu weit hinterher (siehe Abb. 75).
Verfasser: Holger Kärst
124
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Abb. 74) Puffer- Asynchronität erster Fall
Abb. 75) Puffer - Asynchronität zweiter Fall
Diese beiden Fälle müssen abgefangen werden, da solche Elementarstromteile nicht
miteinander synchronisiert werden können.
Deshalb erfolgt bei der Auswahl des Startzeitpunkts immer der Vergleich, ob das älteste
Datenelement des einen Elementarstroms nicht jünger ist als das jüngste Datenelement des
anderen Elementarstroms bzw. ob das jüngste Datenelement des einen Elementarstroms
nicht älter ist als das älteste Element des anderen Elementarstroms. Kann kein
gemeinsamer Startzeitpunkt gefunden werden, dann wird einer der beiden
Elementarströme nicht angefordert.
Wenn für alle Elementarströme ein gemeinsamer Startzeitpunkt ermittelt werden konnte,
dann wird dieser Zeitwert in allen geparkten „StreamRequest“-Objekten der Liste
„StreamRequestList“ eingetragen. Die Anforderung der Elementarströme erfolgt nun
entsprechend der Abb. 66), indem die „StreamRequest“-Objekte dieser Liste aufgerufen
werden. Referenzen der gestarteten Threads werden in die Threadliste eingetragen.
Verfasser: Holger Kärst
125
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
7.2.3. Server
Die Klasse „Server“ ist mit der Klasse „ServerHauptquelle“ identisch. Aus strukturellen
Gründen wurde die gleiche Klasse einmal für die Hauptquelle und einmal für die
Verteilerquelle implementiert. Beide Serverkomponenten besitzen die gleiche
Funktionalität (siehe Abschnitt 7.1.3).
7.3. Kernsystem
Die implementierten Klassen des Kernsystems werden von den Komponenten der
Hauptquelle und der Verteilerquelle gemeinsam benutzt. Hier sind die spezifizierten
Komponenten Puffer, Puffermanager und Linkmanager sowie alle abstrakten Datentypen
(StreamType, ServerType, RTPPacket, RTCPPacket, ESID) und alle internen
Schnittstellen für die Kommunikation zwischen den Komponenten enthalten.
Die wichtigsten Elemente des Kernsystems sind die Klassen „BufferManager“, „Buffer“,
„CircularQueue“,
„Streaming“,
„StreamRequest“,
„LinkManagerClient“
und
„LinkManagerServer“.
7.3.1. BufferManager
Von der Klasse „BufferManager“ wird in jedem Netzwerkknoten genau eine Instanz
erzeugt. Die Klasse implementiert die Funktionen des spezifizierten Puffermanagers. Der
Puffermanager besitzt Kommunikationsbeziehungen zum Client, zum Server und zum
Puffer des Systems. Er ist für die Initialisierung und die Verwaltung des Pufferfeldes
zuständig und unterhält eine Wissensbasis über alle im Netzwerkknoten verfügbaren
Anteile von Multimediasequenzen und ihren Eigenschaften.
Bei der Initialisierung eines „BufferManager“-Objekts wird zunächst eine
Serviceinformationstabelle, die Wissensbasis des Puffermanagers, angelegt. Die
Serviceinformationstabelle ist ein Vektor, der Objekte des Typs „StreamType“ aufnehmen
kann (siehe Abb. 71). Solch ein Objekt enthält, wie bereits beschrieben, alle Eigenschaften
eines Elementarstroms einer Multimediasequenz.
Mit der Methode addNewService() können die Informationen neuer, verfügbarer
Elementarströme in die Tabelle eingetragen werden.
Der Aufruf der Methode deleteOldService() entfernt Informationen von Elementarströmen,
die von dem Netzwerkknoten nicht mehr angeboten werden.
Die Methode request() hat die Aufgabe, Serveranfragen nach der Verfügbarkeit von
Elementarströmen einer Multimediasequenz zu beantworten. Sind Elementarströme für
Verfasser: Holger Kärst
126
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
diese Sequenz vorhanden, dann liefert die Methode eine Liste mit den angeforderten
Informationen zurück.
Informationselemente eines lokal verfügbaren Elementarstroms können sich mit der Zeit
ändern. Im Besonderen verändern sich die Zeitinformationen für das erste und das letzte
gepufferte Element eines Elementarstroms. Neue Daten werden in den Puffer
aufgenommen, alte Daten werden aus dem Puffer entfernt. Um die Aktualität der
Serviceinformationstabelle zu gewährleisten, können mit der Methode update() die
eingetragenen Informationen aktualisiert werden.
Nach der Einrichtung der Wissensbasis wird das Pufferfeld vom Puffermanager erzeugt
und initialisiert. Das Pufferfeld ist eine Instanz der Klasse „Buffer“.
Mit der Methode addNewService() wird nicht nur ein Informationseintrag für einen neuen
lokal zu speichernden Elementarstrom erzeugt. Mit dem Aufruf der Methode sendet der
Puffermanager dem „Buffer“-Objekt eine Anweisung zur Initialisierung eines neuen
Pufferfeldelements mit einer definierten Größe. Die Pufferfeldelementgröße wird vom
Puffermanager berechnet. Sie ist abhängig von der durchschnittlichen Datenrate und der
Größe des zu speichernden Zeitintervalls des gewünschten Elementarstromteiles.
Der Wert berechnet sich wie folgt:
Datenrate ∗ Pufferzeit
Pufferfeldelementgröße =
Datenelementgröße
Bit ∗ s
s
Bit
Die Datenrate entspricht der durchschnittlichen Kodierrate des Elementarstroms. Die
Pufferzeit ist aktuell auf 10 Sekunden festgelegt. Sie ist theoretisch unmittelbar von der
Größe des dynamischen Netzwerkes abhängig und soll später variabel an diese Größe
angepasst werden können. Die Datenelementgröße entspricht der MTU des Netzwerks.
Das Ergebnis dieser Berechnung ist eine Abschätzung der Anzahl der Datenelemente, die
das Pufferfeldelement für eine Pufferzeit von 10 Sekunden speichern können muss.
Der Puffermanager erlaubt den Zugriff auf ein bestimmtes Pufferfeldelement mit der
Methode getQueue(). Die Methode erwartet als Eingabeparameter die
Pufferfeldelementnummer für das gewünschte Pufferfeldelement.
Um die Pufferfeldelementnummer für einen Elementarstrom zu ermitteln, kann die
Methode getQueueNr() aufgerufen werden. Sie erwartet als Eingabeparameter den Namen
der Multimediasequenz und die Elementarstrom-ID des Elementarstromteils, das in dem
Pufferfeldelement mit der gesuchten Pufferfeldelementnummer gespeichert ist. Nach dem
Aufruf dieser Methode durchsucht der Puffermanager die Serviceinformationstabelle nach
dem eindeutigen Schlüssel Sequenzname/Elementarstrom-ID. Die zu diesem Schlüssel
eingetragene Pufferfeldelementnummer wird zurückgeliefert.
Verfasser: Holger Kärst
127
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
7.3.2. Buffer
Die Klasse „Buffer“ stellt das Pufferfeld zur Verfügung. Das Pufferfeld ist eine Liste, die
aus meist mehreren Objekten der Klasse „CircularQueue“ besteht. Jedes dieser Objekte ist
ein Pufferfeldelement, das für die Speicherung der Daten eines Datenstroms verantwortlich
ist. Ein Datenstrom ist entweder ein Elementarstrom einer Multimediasequenz oder ein
Strom von Transportkontrollinformationen.
7.3.3. CircularQueue
„CircularQueue“ implementiert die Funktionen für die effiziente Speicherung von Daten
bzw. den Zugriff auf die Daten eines Pufferfeldelements.
Jedes Pufferfeldelement ist ein Ringpuffer (Schlange) mit einer Speicherkapazität, die vom
Puffermanager definiert wurde. In einem Pufferfeldelement können entweder Objekte des
Typs „RTPpacket“ (Datenelement) oder Objekte des Typs „RTCPpacket“
(Transportkontrollprotokollinformation) gespeichert werden. Ihre Funktionalitäten werden
in den gleichnamigen Klassen definiert. Die Syntax der Objekte entspricht den
Empfehlungen der RFC 3550 (siehe [1]).
Für die Datenspeicherung wurde ein Ringpuffer gewählt, da durch diese Pufferart
kontinuierlich in unbegrenzter Zeit Datenelemente in den Puffer aufgenommen werden
können. Die benötigte Speicherkapazität wird einmal festgelegt und nie überschritten. Alte
Datenelemente können einfach durch neue Elemente überschrieben werden. Der
Ringpuffer arbeitet dabei nach dem First-In-First-Out-Prinzip (FIFO). Ein Beispiel eines
Ringpuffers wird in Abb. 76) gezeigt.
Der Puffer wird bei der Initialisierung einmalig mit leeren Datenelementen gefüllt. Mit der
Initialisierung werden zwei Begrenzungszeiger erzeugt. Der Zeiger „Front“ referenziert
das erste, älteste Datenelement des Ringpuffers. Der Zeiger „Back“ verweist auf das letzte,
jüngste Element des Ringpuffers. Für jeden Ringpuffer können „beliebig“ viele Lesezeiger
existieren.
Abb. 76) Ringpuffer
Verfasser: Holger Kärst
128
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Die Klasse besitzt verschiedene Methoden für den Zugriff auf den Ringpuffer. Die
Methode add() legt neue Datenelemente im Ringpuffer ab. Vor der Speicherung eines
neuen Elements wird der „Front“-Zeiger um eine Stelle im Uhrzeigersinn verschoben.
„Front“ zeigt nun auf das zweitälteste Element des Puffers. Der vorher von „Front“
referenzierte Speicherplatz ist nun zum Überschreiben freigegeben. Danach wird die
Referenz des „Back“-Zeigers um eine Stelle im Uhrzeigersinn verschoben. „Back“
referenziert jetzt den Speicherplatz, auf den „Front“ vorher verwiesen hat. In der von
„Back“ referenzierten Stelle überschreibt das neue Datenelement die alte Dateneinheit. Das
von „Front“ referenzierte Datenelement ist nun automatisch wieder das Älteste des Puffers.
Idealerweise erreichen die neuen Datenelemente den Puffer in der richtigen Reihenfolge.
Durch den Transportprozess kann die Ordnung der Datenelemente verloren gehen, oder es
treten Datenverluste oder Datenverdoppelungen auf. Um die Datenelemente in der
korrekten Ordnung abspeichern zu können, müssen sie sortiert werden. Alle RTP-Pakete
besitzen eine eindeutige Sequenznummer. Durch diese Sequenznummer existiert ein
Parameter, mit dem die Ordnung der Datensequenz wiederhergestellt werden kann. Es gibt
verschiedene Möglichkeiten, den Sortierprozess zu gestalten. Man kann z.B. den gesamten
Puffer sortieren wenn ein neues Datenelement gespeichert wurde. Intelligenter ist es
jedoch, eine Abbildung zwischen der Sequenznummer der Dateneinheit und der Nummer
des Speicherplatzes für diese Einheit zu generieren. So kann das neue Element direkt an
der richtigen Stelle im Puffer abgelegt werden. Dieser Speicheralgorithmus hat folgende
Vorteile:
•
der Sortierprozess hat eine lineare Laufzeit
•
Duplikate von Datenelementen werden einfach überschrieben
•
auf Datenelemente mit bekannter Sequenznummer kann direkt zugegriffen werden
Für diese Lösung müssen aber verschiedene Ausnahmefälle beachtet werden.
Die Ordnung der gespeicherten Sequenz ist nur dann korrekt, wenn keine Datenverluste
während des Transports aufgetreten sind (siehe Abb. 77). Eine „Lücke“ in der
Sequenznummernfolge bewirkt, dass auch eine Lücke im Ringpuffer entsteht (siehe
Konfigurationsdatei Abb.
78). In dieser Lücke bleiben die alten gespeicherten
Datenelemente erhalten, auch wenn der Puffer bereits mit neuen Datenelementen
überschrieben wurde.
Verfasser: Holger Kärst
129
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Abb. 78)
Abb. 77) Korrekt gefüllter Ringpuffer
Ringpuffer teilweise überschrieben, mit
„Fehlerlücke“ durch Transportverlust der
Elemente 18-21
Dieser fehlerhafte Pufferzustand muss im Ausleseprozess beachten werden.
Die Sequenznummern der Datenelemente liegen im Wertebereich von 0 bis 65536. Da
bedeutend mehr Datenelemente nummeriert werden müssen, werden die Sequenznummern
durch einen Modulo-Zähler erzeugt. Nach dem Datenelement mit der Sequenznummer
65536 folgt somit korrekterweise das Datenelement mit der Sequenznummer 0. Ohne eine
Anpassung des Speicherprozesses, würden bei einem solchen Überlauf Fehler in der
Datenspeicherung auftreten. Um die Korrektheit des Speicherprozesses wieder
herzustellen, muss die Modulo-Operation auch bei der Abbildung der Sequenznummer auf
die Speicherplatznummer angewendet werden. Die Operation führt nur dann zum
korrekten Ergebnis, wenn die Puffergröße ein Vielfaches der Größe des Wertebereichs der
Sequenznummern ist. Jede Zweierpotenz ist ein Vielfaches dieses Wertebereichs. Die vom
Puffermanager geforderte Puffergröße wird deshalb bei der Initialisierung auf die nächste,
größere Zweierpotenz aufgerundet.
Damit zu Beginn des Speicherprozesses der Ringpuffer von der ersten Speicherstelle an
gefüllt wird, muss die Sequenznummer der ersten eintreffenden Dateneinheit gespeichert
werden. Dieses Datenelement wird in der ersten Speicherstelle des Puffers abgelegt. Für
alle folgenden Datenelemente muss nun die Differenz zwischen ihrer Sequenznummer und
der gespeicherten Sequenznummer gebildet werden. Der Wert der Differenz bestimmt
direkt den Speicherplatz des jeweiligen Elements.
Der endgültige Rechenweg für die Ermittlung des korrekten Speicherplatzes einer
Dateneinheit ist folgender:
(( AktuelleSe quenznumme r − StartSeque nznummer ) + SeqWertebe reich ) mod Puffergröß e
Verfasser: Holger Kärst
130
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Die Variable „SeqWertebereich“ stellt den Wertebereich der Sequenznummern dar. Die
Addition dieser Variable mit der Differenz entspricht einer Betragsbildung des
Differenzwertes in der Modulo-Operation.
Aufgrund der Möglichkeit eines Sequenznummernüberlaufs, kann anhand der
Sequenznummer nicht mehr auf die zeitliche Aktualität eines eintreffenden Datenelements
geschlossen werden. Deshalb ist ein weiterer Parameter erforderlich, um überprüfen zu
können, ob das eingetroffene Datenelement zeitlich in das Pufferintervall passt. RTP- und
RTCP-Pakete liefern, wie bereits analysiert, die zeitliche Relevanz der in den Paketen
enthaltenen Daten mit. Dieser Zeitstempel kann als geeigneter Parameter für die
notwendige Überprüfung verwendet werden. Es wird verglichen, ob der Zeitstempel des zu
speichernden Datenelements jünger als der Zeitstempel des ältesten gespeicherten
Elements und gleichzeitig älter als der Zeitstempel des jüngsten gespeicherten Elements
ist. Bei einem positiven Ergebnis des Vergleichs kann das Datenelement korrekt in das
Pufferintervall eingegliedert werden. Ist das Ergebnis negativ, dann wird das Element
verworfen.
„CircularQueue“ bietet neben der Methode add() noch folgende weitere Methoden an:
•
reset() - Lesezeiger initialisieren
•
succ() - Lesezeiger verschieben
•
getBack() - Wert des Begrenzungszeigers „Back“ zurückliefern
•
getFront() - Wert des Begrenzungszeigers „Front“ zurückliefern
•
current(Speicherstelle) - Datenelement von der angegebenen Speicherstelle
auslesen
•
bufferOverRun() - Überprüfung auf Pufferüberlauf
•
bufferUnderRun() - Überprüfung auf Pufferleerlauf
•
size() - Anzahl der gepufferten Datenelemente zurückliefern
•
clear () - den Ringpuffer leeren
Ein Pufferleerlauf tritt in dem Moment auf, wenn ein Lesezeiger den Begrenzungszeiger
„Back“ überspringt. In diesem Fall würde der Lesezeiger auf veraltete Datenelemente
verweisen. Ein Pufferüberlauf entsteht, wenn ein Lesezeiger den Begrenzungszeiger
„Front“ unterschreitet. Der Lesezeiger verweist dann auf Datenelemente, die dem aktuellen
Leseprozesszustand vorauseilen. Beide Ereignisse führen zu Fehlern im
Wiedergabeprozess und müssen unbedingt verhindert werden.
Verfasser: Holger Kärst
131
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
7.3.4. Streaming
Die Klasse „Streaming“ implementiert den Prozess für den Datenversand der
Datenelemente eines Elementarstroms. Instanzen der Klasse werden von der
Serverkomponente und von der Clientkomponente erzeugt. Der Server benötigt diese
Objekte, um die Datenelemente angeforderter Elementarströme an einen entfernten Client
zu übermitteln. Die Clientkomponente eines Netzwerkknotens übergibt, mit Hilfe eines
„Streaming“-Objekts, Datenelemente eines lokal gespeicherten Elementarstroms an die
lokale Wiedergabeeinheit weiter.
Zunächst müssen die Pufferfeldelemente ermittelt werden, in dem die Datenelemente des
gewünschten Elementarstroms bzw. die Transportkontrollinformationen gespeichert sind.
Dazu sendet das „Streaming“-Objekt eine Anfrage an den Puffermanager, mit Angabe des
Namens der Multimediasequenz und der Elementarstrom-ID. Existiert ein
Pufferfeldelement für den Elementarstrom, dann liefert der Puffermanager die Nummer
des Feldes zurück. Die zum Datenstrom gehörenden Transportkontrollinformationen
befinden sich im darauf folgenden Pufferfeldelement. Das Objekt kann nun die ermittelten
Pufferfeldelemente zugreifen. Für den Zugriff auf ein Datenelement oder ein Element mit
Transportkontrollinformationen eines Pufferfeldelements wird ein Lesezeiger initialisiert.
Mit dem Parameter „offset“ kann die Position des Lesezeigers im Ringpuffer, relativ zur
Position des Begrenzungszeigers „Back“, festgelegt werden. Der Lesezeiger sollte nie
direkt auf die Position eines Begrenzungszeigers initialisiert werden, da sonst sofort ein
Pufferüberlauf bzw. ein Pufferleerlauf entstehen kann. Während der Testphase des
implementierten Systems stellte sich heraus, dass für die Vermittlung der Elementarströme
an entfernte Netzwerkknoten, der Lesezeiger auf sehr aktuelle Daten, also nahe am
Begrenzungszeiger „Back“ initialisiert werden sollte (siehe Abb. 79).
Im Verteilungsprozess entsteht an jeder Verteilungsstufe eine Verzögerungszeit durch das
Puffern der Elementarströme in den Verteilerquellen. Die Verzögerungszeit zwischen der
Hauptquelle und einer Verteilerquelle der letzten Verteilungsstufe erhöht sich linear mit
der Anzahl der Verteilungsstufen. Die Verzögerungszeit kann minimalisiert werden, indem
der Datenversand an jeder Verteilerquelle mit den aktuellsten verfügbaren Datenelementen
beginnt.
Für die von einem entfernten Client angeforderten Elementarströme wurden jedoch
Startzeitpunkte für den Vermittlungsbeginn festgelegt. Nur die Datenelemente, die eine
relative Zeitinformation enthalten, die größer oder gleich diesem Startzeitpunkt ist, sollen
an den anfragenden Client übermittelt werden. Der Lesezeiger wird deshalb so lange im
Uhrzeigersinn verschoben, bis diese Bedingung von einem Datenelement erfüllt wird.
Für die lokale Datenvermittlung an die Wiedergabeeinheit eines Netzwerkknotens ist es
besser, den Lesezeiger auf ältere Datenelemente, also nahe am Begrenzungszeiger „Front“
Verfasser: Holger Kärst
132
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
zu initialisieren (siehe Abb. 80). Für den Netzwerkknoten besteht somit die Chance, einen
Verbindungsausfall über einen begrenzten Zeitraum vor dem Wiedergabeprozess
verstecken zu können. Der Zeitraum ist natürlich direkt von der Puffergröße abhängig.
Abb. 79)
Ringpuffer mit Lesezeiger für Streaming zu
Abb. 80)
Ringpuffer mit Lesezeiger für lokales Streaming
einem entfernten Client
Nach der Initialisierung des Lesezeigers ist das „Streaming“-Objekt bereit, Datenelemente
aus dem Puffer auszulesen.
Im nächsten Schritt muss die Auslesegeschwindigkeit bzw. die Vermittlungsgeschwindigkeit für die Elemente des Elementarstroms ermittelt werden. Die
Datenelemente besitzen eine fest definierte Zeitrelevanz. Die Geschwindigkeit muss
deshalb so gewählt sein, dass alle Datenelemente rechtzeitig den Empfänger bzw. den
Decoder erreichen. Die bekannte Datenrate, mit der der Elementarstrom an einer
Hauptquelle erzeugt wurde, kann nicht direkt für die Geschwindigkeitsbestimmung
verwendet werden, da die Rate nur als Mittelwert angegeben ist und den Overhead durch
die Transportinformationen nicht beachtet. Deshalb benutzt der implementierte
Algorithmus für die Geschwindigkeitsabschätzung die relativen Zeitinformationen der
Datenelemente. Der Algorithmus bildet die Differenz zwischen den Zeitstempeln zweier
aufeinander folgender Datenelemente. Vom letzten, bereits vermittelten Datenelement
merkt sich der Algorithmus den Zeitstempel. Der Wert dieses Zeitstempels wird von dem
Zeitwert des aktuell zu vermittelnden Elements abgezogen. Das aktuelle Datenelement
wird erst nach dem Ablauf der errechneten Zeitdifferenz vermittelt. Es dient nun wiederum
als Grundlage für die Berechnung des Vermittlungszeitpunkts für die nächste Dateneinheit.
Diese Nachbildung der originalen Vermittlungsgeschwindigkeit kann nur ein Schätzwert
sein. Durch Berechnungs- und Verarbeitungszeiten weicht die berechnete Geschwindigkeit
von der originalen Geschwindigkeit ab. Der Wert dieser Abweichung ist nicht konstant.
Damit die Differenz zwischen der originalen und der berechneten Geschwindigkeit nicht
Verfasser: Holger Kärst
133
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
zu groß wird, werden Korrekturkoeffizienten eingesetzt. Diese Koeffizienten können die
Lese- und Vermittlungsgeschwindigkeit geringfügig beschleunigen oder abbremsen. Da
die Originalgeschwindigkeit nicht bekannt ist, kann die Differenz zur berechneten
Geschwindigkeit nicht ermittelt werden. Deshalb wird mit Hilfe der bekannten mittleren
Datenrate des Elementarstroms ein Intervall im Puffer festgelegt, zwischen dessen
Grenzwerten die Lesezeigerposition schwanken darf. Die Grenzwerte berechnen sich wie
folgt:
IntervallUntergrenze = ZeitwertUntergrenze *
bit
DatenrateAVG s ∗ s
PaketgrößeAVG bit
IntervallObergrenze = Zeitwert Obergrenze *
bit
Datenrate AVG s ∗ s
PaketgrößeAVG bit
Der Zeitwert definiert die zeitliche Position eines Grenzwertes im Puffer. Durch die
Multiplikation mit dem Quotienten aus Datenrate und Paketgröße, wird die zeitliche
Position in eine räumliche Position des Grenzwertes im Puffer transformiert.
Die Position des Lesezeigers im Puffer wird kontinuierlich mit einem Sensor ermittelt. Der
Sensorwert entspricht dem Abstand des Lesezeigers zum Begrenzungszeiger „Front“.
Dieser Abstand erhöht sich, für jedes ausgelesene Datenelement und verringert sich für
jedes neu im Puffer abgelegte Datenelement. Erreicht der Sensorwert eine der
Intervallgrenzen, dann wird der entsprechende Korrekturkoeffizient für die
Geschwindigkeitsanpassung aktiviert. Die folgende Abbildung stellt den Prozess grafisch
dar.
Abb. 81) Geschwindigkeitskorrektur im Auslesevorgang
Verfasser: Holger Kärst
134
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Die Lese- und Vermittlungsgeschwindigkeit ist von der Schreibgeschwindigkeit und von
den relativen Zeitinformationen der Datenelemente abhängig. Der Vermittlungszeitpunkt
eines Datenelements wird letztendlich folgendermaßen berechnet:
VZ = (( Zeitstempe lAktuell − Zeitstempe lAlt ) − Korrekturk oeffizient ) + Systemzeit Aktuell
Der Wert des Korrekturkoeffizienten entspricht der halben, mittleren Differenzzeit zweier
aufeinander folgender Datenelemente eines Elementarstroms. Die mittlere Differenzzeit
kann mit dem Quotienten aus der mittleren Datenelementgröße und der bekannten
mittleren Datenrate abgeschätzt werden.
Korrekturkoeffizient =
1
MTU
bit
∗
2 Datenrate AVG bit
s
Die Datenelemente werden in der Hauptquelle, gemäß der „ISMA-Specification“, während
des Kodierprozesses und bei der Paketierung, an die Größe der MTU des Netzwerkes
angepasst. Für die mittlere Datenelementgröße wurde deshalb die MTU des Netzwerks
gewählt.
Für das Lesen aus dem Puffer sind noch einige Besonderheiten zu beachten.
Wenn ein Pufferleerlauf erkannt wurde, dann wird der Auslesevorgang für ein Zeitintervall
von 200 ms gestoppt. In dieser Zeit können neue Daten in den Puffer aufgenommen
werden.
Tritt ein Pufferüberlauf auf, dann werden zwei Datenelemente im Lesevorgang
übersprungen.
Für die Erkennung eines Pufferüberlaufs oder Pufferleerlaufs wird der bereits definierte
Sensor genutzt. Der Sensorwert=0 signalisiert einen Pufferüberlauf. Entspricht der
Sensorwert der maximalen Puffergröße, dann ist ein Pufferleerlauf aufgetreten.
Aufgrund des definierten Speicherungsprozesses können Fehlerlücken im Ringpuffer
existieren. Um die Korrektheit der Ordnung der ausgelesenen Daten zu garantieren,
werden diese Lücken im Auslesevorgang übersprungen. Die Fehlerlücken sind leicht
erkennbar, da sie nur veraltete Datenelemente enthalten. Während des Auslesens wird
kontinuierlich überprüft, ob das gerade gelesene Element zeitlich aktueller ist als das
vorher gelesene Element. Dieser Zeitvergleich ist aufgrund der in den Datenelementen
enthaltenen Zeitinformationen möglich. Ist der Vergleich negativ, dann wurde eine
Fehlerlücke erkannt.
Nachdem dieser relativ aufwändige Initialisierungsvorgang abgeschlossen ist, werden
Transportverbindungen zu dem anfragenden Client, bzw. zur Wiedergabeeinheit
aufgebaut. Der Datentransport erfolgt mit UDP.
Verfasser: Holger Kärst
135
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Entsprechend der Information aus der Konfigurationsdatei, erwartet die Wiedergabeeinheit
die Elementarströme an lokalen UDP-Sockets mit definierten Portnummern. Der erste
Elementarstrom wird an den lokalen Port mit der Nummer 20000 weitergeleitet. Für jeden
weiteren Elementarstrom erhöht sich die Portnummer um zwei. Die
Transportkontrollinformationen erwartet die Wiedergabeeinheit immer an der nächsten
Portnummer des zugehörigen Elementarstroms. Für den ersten Elementarstrom werden
beispielsweise die Transportkontrollinformationen an den lokalen Port mit der Nummer
20001 übertragen.
Die Übermittlung der Transportkontrollinformationen übernimmt eine Instanz der Klasse
„RTCPServer“.
Für den Transport der Daten an einen entfernten Client sind die Socketadressen nicht
festgelegt. Sie werden in der Signalisierungsphase zwischen den Kommunikationspartnern
ausgetauscht.
Da das unsichere „User Datagram Protocol“ für den Datentransport verwendet wird, kann
das „Streaming“-Objekt nicht erkennen, ob die versendeten Datenelemente den Client
erreichen. Um dennoch die Erreichbarkeit des Kommunikationspartners überprüfen zu
können, wird ein Beobachter für den Streamvorgang generiert. Dieser Beobachter ist eine
Instanz der Klasse „ServerIsAlive“. Der Beobachter erwartet im Abstand von 1,5
Sekunden
„Lebenszeichen“,
in
Form
von
leeren
UDP-Paketen,
vom
Kommunikationspartner. Sollten diese Lebenszeichen über einen Zeitraum von 5
Sekunden ausbleiben, dann wird die Datenübertragung zu diesem Client beendet.
7.3.5. StreamRequest
Die Klasse „StreamRequest“ beschreibt das implementierte funktionale Kernsystem für
den Empfang und die Pufferung von Datenelementen und Transportkontrollinformationen.
Instanzen dieser Klasse werden von der Clientkomponente der Hauptquelle generiert, um
lokale Transportverbindungen zum MP4Live-Stream-Server zu initialisieren und Daten der
ursprünglichen Elementarströme von diesem Server zu empfangen und abzuspeichern. Die
Clientkomponente der Verteilerquelle nutzt Instanzen dieser Klasse, um sich mit
Verteilerservern zu verbinden und Datenelemente bzw. Transportkontrollinformationen
von angeforderten Elementarströmen zu empfangen und zu puffern. Jedes initialisierte
„StreamRequest“-Objekt ist für den Empfang und die Speicherung von Daten eines
Elementarstroms zuständig.
In der Initialisierungsphase fordert das „StreamRequest“-Objekt mit der Methode
addnewService() den Puffermanager auf, zwei neue Pufferfeldelemente für die erwarteten
Datenelemente und Transportkontrollinformationen des Elementarstroms zu generieren.
Der Puffermanager trägt die Eigenschaften des neuen Elementarstroms in der
Verfasser: Holger Kärst
136
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Serviceinformationstabelle ein und liefert die Nummern der neuen Pufferfeldelemente an
das Objekt zurück. Nach der erfolgreichen Initialisierung der Pufferfeldelemente, werden
mit der Methode Connection() zwei UDP-Verbindungen von der Clientkomponente zum
Diensterbringer aufgebaut. Eine Verbindung wird für die Vermittlung der Datenelemente
des Elementarstroms benötigt. Mit der zweiten Verbindung sollen die
Transportkontrollinformationen (RTCP-Senderreport-Pakete) übertragen werden.
Die Clientkomponente der Hauptquelle erwartet die Elementarströme und die
Transportkontrollinformationen an Ports mit fest definierten Portnummern. Der erste
Elementarstrom wird am Port mit der Nummer 20000 erwartet. Die zu diesem
Elementarstrom
gehörenden
Transportkontrollinformationen
erwartet
die
Clientkomponente der Hauptquelle am Port mit der Nummer 20001. Für jeden weiteren
Elementarstrom und die zugehörigen Transportkontrollinformationen erhöht sich die
Portnummer jeweils um zwei. Diese Festlegung ist notwendig, da die EmpfängerPortnummern für die Elementarströme vom MP4Live-Stream-Server definiert werden.
Die Clientkomponente der Verteilerquelle stellt keine Anforderungen an die Adressen der
Verbindungsendpunkte. Die Portnummern werden in der Signalisierungsphase zwischen
der Clientkomponente der Verteilerquelle und dem Diensterbringer ausgehandelt.
Nach
der
erfolgreichen
Initialisierung
der
Transportverbindungen beginnt der Datenempfang.
Pufferfeldelemente
und
der
Um die Transportkontrollinformationen unabhängig vom Empfang der Datenelemente des
Elementarstroms entgegennehmen und speichern zu können, wird in der Methode
getRTCP() eine Instanz der Klasse „RTCPClient“ als Thread generiert. Diese Instanz
empfängt die Transportkontrollinformationen und puffert sie im entsprechenden
Pufferfeldelement.
Die Methode getData() der Klasse „StreamRequest“ übernimmt den Empfang und die
Speicherung der Datenelemente des Elementarstroms.
Damit die Clientkomponente auf Verbindungsausfälle reagieren kann, überprüft sie die
Kontinuität des Datenempfangs. Durch Verbindungsausfälle oder Datenverluste während
des Transports, entstehen kürzere oder längere Pausen im Empfangsprozess. Ein
Verbindungsausfall wird angenommen, wenn in einer Zeitspanne von mehr als 10
Sekunden kein Paket mehr empfangen wurde.
Auch der Diensterbringer überprüft kontinuierlich die Erreichbarkeit seiner Dienstnutzer.
Deshalb erwartet er von der Clientkomponente in definierten zeitlichen Abständen ein
Lebenszeichen. Mit dem Beginn des Empfangsprozesses wird eine Instanz der Klasse
„ClientIsAlive“ generiert. Dieses Objekt versendet alle 1,5 Sekunden ein leeres UDP-Paket
an den entfernten Kommunikationspartner.
Verfasser: Holger Kärst
137
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Tritt ein Verbindungsausfall auf, oder entfernt sich einer der Kommunikationspartner aus
dem dynamischen Netzwerk, dann kann dieser Zustand durch diese Mechanismen von
beiden Seiten erkannt werden.
Das „StreamRequest“-Objekt einer Verteilerquelle hat zusätzlich zum Datenempfang die
Aufgabe, den empfangenen, gepufferten Elementarstrom an die Wiedergabeeinheit
weiterzuleiten. Nachdem ein definierter Pufferfüllstand für den Elementarstrom erreicht
wurde, wird eine Instanz der Klasse „Streaming“ erzeugt. Dieses „Streaming“-Objekt liest
die gepufferten Datenelemente des Elementarstroms aus und übergibt sie für die
Darstellung an die Wiedergabeeinheit.
7.3.6. LinkmanagerClient
Die Klasse „LinkmanagerClient“ implementiert die Funktionen zur Überprüfung der
Kanalgüte zwischen dem Client und seinen benachbarten Netzwerkknoten. Im Besonderen
wird die durchschnittliche Umlaufzeit (RTT) errechnet und die Häufigkeit von
Datenverlusten ermittelt.
Bei der Initialisierung einer Instanz der Klasse, wird dem Konstruktor eine Liste mit den
Adressen der benachbarten Netzwerkknoten übergeben.
Der Linkmanager überprüft die Verbindungseigenschaften zu jedem dieser angegebenen
Server.
Zunächst wird die serverseitig verfügbare Uplink-Kapazität erfragt.
Danach sendet der Linkmanager zehn Ping-Pakete zu dem Server. In jedem Paket ist ein
Zeitstempel mit der aktuellen Systemzeit des Linkmanagers enthalten. Der Zeitstempel
entspricht dem Versandzeitpunkt des Pakets. Der Linkmanager erwartet, dass alle Pakete
an ihn zurückgesendet werden. Beim Empfang eines Pakets wird wiederum die Systemzeit
des Linkmanagers aufgenommen. Die Umlaufzeit des Pakets kann nun einfach durch die
Differenz zwischen der aktuellen Systemzeit und dem Zeitstempel des Pakes bestimmt
werden.
RTT = Sendezeitp unkt − Empfangsze itpunkt
Um einen genaueren Eindruck über die Verbindungsqualität zur erhalten ist es besser,
einen durchschnittlichen Wert für die Umlaufzeit, über alle korrekt empfangen Pakete zu
berechnen.
RTT AVG = RTT AVG +
RTT Akt
10
RTTAkt entspricht der ermittelten Umlaufzeit des gerade empfangenen Pakets.
Verfasser: Holger Kärst
138
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Wenn mehr als eine Sekunde nach dem Paketversand vergangen ist, ohne dass das Paket
wieder den Linkmanager erreicht hat, dann wird dieses Paket als verloren signalisiert. Für
jeden Paketverlust erhält der getestete Server eine Zeitstrafe von 2 Sekunden.
Konnte zu einem angegebenen Server keine Verbindung aufgebaut werden, dann erhält der
Server die maximale Zeitstrafe von 20 Sekunden, und die Anzahl der Paketverluste wird
auf 10 festgelegt.
Nach dem Test der Verbindungsqualität wird die berechnete Gesamtzeitstrafe, für die
Anzahl der Paketverluste, zu der ermittelten durchschnittlichen Umlaufzeit addiert.
RTT AVG = RTT AVG + n ∗ 2 Sekunden (n = Anzahl der Paketverluste)
Die für jeden Server ermittelten Parameter werden als Servereigenschaften in die
Serverliste (siehe Abb. 72) / erste Tabelle) eingetragen.
Zum Schluss sortiert der Linkmanager die Serverliste nach der Größe des Wertes der
durchschnittlichen Umlaufzeit. Als Sortierverfahren wird Quicksort eingesetzt. Die
resultierende Liste ist aufsteigend geordnet, beginnend mit dem Server, der den kleinsten
Wert für die durchschnittliche Umlaufzeit besitzt.
7.3.7. LinkManagerServer
Die Klasse „LinkManagerServer“ hat die Aufgabe, die Uplink-Kapazität des Servers zu
verwalten. Aktuell wird die Kapazität mit einem definierten Wert initialisiert. Durch die
Vermittlung eines Datenstroms von diesem Server an einen anderen Netzwerkknoten sinkt
die Uplink-Kapazität. Der Kapazitätswert wird um den Betrag der mittleren Datenrate
dieses Datenstroms verringert. Ist die Vermittlung eines Datenstroms beendet, dann wird
der Kapazitätswert um den Betrag der mittleren Datenrate dieses Datenstroms erhöht.
7.3.8. RTPPacket
Die Daten der zu vermittelnden und zu speichernden Elementarströme sind in RTPPaketen gekapselt. Durch eine Instanz der Klasse „RTPPacket“ kann ein Datenelement
eines Elementarstroms abstrakt, als speicherbare und transportierbare Einheit, in Form
eines RTP-Paket-Objektes eindeutig beschrieben werden. Durch die definierten Methoden
der Klasse kann man auf die wichtigsten internen Headerinformationen und den Datenteil
der RTP-Pakete zugreifen. Die wichtigsten Informationen sind die Zeitstempel und die
Sequenznummern der Pakete.
Verfasser: Holger Kärst
139
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
7.3.9. StreamManager
Die Klasse „StreamManager“ sorgt dafür, dass der Verteilungsprozess für
zusammengehörige Elementarströme zur gleichen Zeit gestartet wird. Der Stream Manager
ist also ein Mechanismus, mit dem „Streaming“-Threads synchronisiert werden können.
Dazu werden alle „Streaming“-Objekte in eine Warteliste aufgenommen. Dort werden die
Objekte solange festgehalten, bis der letzte der zusammengehörenden Elementarströme
(„Streaming“-Thread) für den Verteilungsprozess initialisiert und bereit ist.
Verfasser: Holger Kärst
140
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
8. Ergebnisse
In diesem Kapitel werden die Ergebnisse vorgestellt und ausgewertet, die mit dem
implementierten neuen Multisource-Streaming-Ansatz durch verschiedene Experimente
ermittelt werden konnten. Die Untersuchung gliedert sich in fünf Versuchsaufbauten auf,
mit denen jeweils meist mehrere Testreihen generiert wurden.
In den Experimenten wurden multimediale Livedaten von einer Hauptquelle erzeugt und in
einem Netzwerk bereitgestellt.
Die technischen Eigenschaften der Hauptquelle entsprechen den Angaben des Abschnitts
6.6. Die Hautpquelle besitzt keinen WLAN-Adapter und muss deshalb drahtgebunden mit
einer Verteilerquelle verbunden werden.
Die multimedialen Daten bestehen aus zwei MPEG4-kodierten Elementarströmen. Der
Videoelementarstrom wird mit einer durchschnittlichen Datenrate von 500kbs in XViD
kodiert. Der Audioelementarstrom wird mit einer Samplerate von 44,1 kHz und
entsprechend dem MPEG4-AAC-Standard erzeugt.
In der Testumgebung existieren drei Verteilerquellen, die drahtlos im Adhoc-Modus
kommunizieren. Zwei Verteilerquellen arbeiten mit dem Betriebssystem Debian (Linux /
Kernel 2.6.8) und jeweils mit einem drahtlosen Netzzugang (WLAN-RoamAbout
(802.11b)). Bei diesen Verteilerquellen wird der MPlayer als Wiedergabeeinheit/Decoder
verwendet. Die dritte Verteilerquelle nutzt das Microsoft Betriebssystem MS Windows
XP. Sie besitzt einen drahtlosen Netzzugang (WLAN-Karte D-Link DWL 650G+
(802.11g)) zum Adhoc-Netzwerk und eine drahtgebunde Verbindung zur Hauptquelle. Für
diese
Verteilerquelle
wurde
der
WMP4Player
von
MPEG4IP
als
Wiedergabeeinheit/Decoder ausgewählt.
Verfasser: Holger Kärst
141
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
8.1. Test der Ressourcenauslastung (single Source Streaming)
Mit dem ersten Experiment soll die Auslastung der Ressourcen einer Quelle ermittelt
werden, die durch den Verteilungsvorgang multimedialer Daten an vier Empfänger
entsteht.
Im Versuchsaufbau existieren fünf Verteilerquellen und eine Hauptquelle, die
drahtgebunden miteinander vernetzt sind. Die folgende Abbildung stellt die Topologie
grafisch dar:
Abb. 82) Netzwerktopologie im Versuchsaufbau 1: Multiple Anfragen
Durch die Generierung der multimedialen Daten sind die Ressourcen der Hauptquelle
zusätzlich belastet. Da die Ressourcenauslastung für den Verteilungsprozess ermittelt
werden soll, wird das Messergebnis durch diese zusätzliche Belastung verfälscht. Deshalb
werden die Messgrößen Prozessorlast, genutzte Hauptspeicherkapazität, Eingangsdatenrate
und Ausgangsdatenrate an der Verteilerquelle VQ1 ermittelt. Diese Verteilerquelle erhält
die multimedialen Daten von der Hauptquelle und bietet sie im Netzwerk an. In
gleichmäßigen Abständen stellen die Verteilerquellen VQ2, VQ3, VQ4 und VQ5 jeweils
eine Serviceanfrage an die Verteilerquelle VQ1. VQ1 liefert die angeforderten
Elementarströme direkt nach jeder Anfrage aus. Die Abb. 83) stellt die Messergebnisse
dar:
Verfasser: Holger Kärst
142
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Abb. 83) Messergebnis Versuch 1
Das linke obere Bild beschreibt die Prozessorlast in Prozent. Rechts daneben wird die
benötigte Hauptspeicherkapazität in Byte angegeben. Die linke untere Grafik stellt die
Eingangsdatenrate in KByte/s dar. Das rechte untere Messfenster beschreibt den zeitlichen
Verlauf der Ausgangsdatenrate in KByte/s.
Die Prozessorlast und die Hauptspeicherauslastung bleiben während der Messzeit konstant.
Die Ausgangsdatenrate steigt linear mit der Anzahl der Serviceanfragen an. Nach vier
Serviceanfragen wird bereits eine Bandbreite von mehr als 300KByte/s benötigt, um die
multimedialen Daten vom Diensterbringer an die Dienstnutzer zu verteilen. Die kritische
Ressource der Verteilerquelle ist somit die Kapazität der verfügbaren Ausgangsbandbreite.
Der Uplink einer Verteilerquelle ist ohne einen guten Verteilungsmechanismus sehr
schnell ausgelastet.
Verfasser: Holger Kärst
143
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
8.2. Entfernungstest im drahtlosen Adhoc-Netzwerk (single Source
Streaming)
Im zweiten Versuchsaufbau wird die maximale Entfernung ermittelt, bei der multimediale
Daten drahtlos im Adhoc-Netzwerk übertragen werden können. Dabei soll die zu
erwartende Fehlerrate maximal so groß werden, dass die multimedialen Daten am
Verbindungsendpunkt des Dienstnutzers noch darstellbar sind. Es werden vier Testreihen
ausgewertet. Die Entfernung zwischen Diensterbringer und Dienstnutzer beträgt in der
1.Testreihe 1m, in der 2.Testreihe 5m, in der 3.Testreihe 28m und in der 4.Testreihe 30m.
Die Verteilerquelle VQ1 ist drahtgebunden mit der Hauptquelle vernetzt und besitzt eine
drahtlose Verbindung zum Adhoc-Netzwerk. Das Adhoc-Netzwerk besteht aus den
Verteilerquellen VQ1 und VQ2, wobei VQ1 als Diensterbringer und VQ2 als Dienstnutzer
auftreten. Die folgende Abbildung stellt die Topologie der vier Testreihen grafisch dar:
Abb. 84) Netwerktopologie im Versuchsaufbau 2: Entfernungstest
Gemessen wurden die Meßgrößen Entfernung, Zeitdifferenz zwischen gepufferten
Elementarströmen, Paketverluste des Audio-Elementarstroms, Paketverluste des VideoElementarstroms, die Darstellungsqualität (Schätzung) und die mittlere Umlaufzeit von 10
Ping-Paketen. Die Verteilquellen VQ1 und VQ2 wurden als Messpunkte ausgewählt.
Verfasser: Holger Kärst
144
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Folgende Messergebnisse konnten in den vier Testreihen ermittelt werden:
Abstand zum
Zeitdifferenz
Diensterbringer zwischen ES
in m
in ms
Test
Nr.
Mess
punkt
Messzeitraum
in min
1
VQ1
5,00
0
913
0
0
5
VQ2
5,00
1
640
0
0
0
2
3
4
Paketverluste Paketverluste Darstellungs RTT
Audio
Video
qualität
in s
Timeouts
VQ1
5,00
0
956
0
0
3
VQ2
5,00
5
201
1
0
1
VQ1
5,00
0
943
0
0
9
VQ2
5,00
28
343
15
21
57
VQ1
2,00
0
903
0
0
2
VQ2
ca. 0,5
30
247
Verbindungs
abbruch
nach ca 30
sek.
59
128
0,0
sehr gut
0,0
0,0
sehr gut
0,1
0,0
befriedigend
Pixelfehler
Stocken in
der Audiowiedergabe
0,3 +
Time
outs
0,0
schlecht,
Bild bleibt
stehen,
Audio kaum
verstehbar
0,6 +
Time
outs
Tabelle 9: Messergebniss Entfernungstest (single Source)
Wie erwartet, wird die Fehlerhäufigkeit mit zunehmender Entfernung größer und die
Darstellungsqualität der übertragen Multimediasequenz nimmt ab. Bei Entfernungen
zwischen 1m bis 5m treten Übertragungsfehler sehr selten auf und die Darstellungsqualität
ist sehr gut. Mehr als 28m sollte die Strecke zwischen Diensterbringer und Dienstnutzer in
dem gewählten drahtlosen Adhoc-Netzwerk nicht betragen. Bei dieser Entfernung treten
schon häufige Datenverluste während der Übertragung auf, die sich in sichtbaren
Pixelfehlern und Stockungen bei der Tonwiedergabe äußern. Schließlich bricht die
Verbindung bei einem Abstand von 30m zwischen den Kommunikationspartnern ab.
Die hohe Fehlerhäufigkeit im drahtgebundenen Verbindungsabschnitt, zwischen der
Hauptquelle HQ und der Verteilerquelle VQ1, erklärt sich durch die hohe CPU-Auslastung
(95%) der Hauptquelle. Die Hauptquelle wird durch die Generierung (Kodierung) der
multimedialen Datenströme enorm belastet.
Verfasser: Holger Kärst
145
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
8.3. Entfernungstest mit multiplen Anfragen (single Source Streaming)
Der dritte Versuchsaufbau ist ähnlich zum Aufbau des vorigen Abschnittes. Die
Verteilerquelle VQ1 tritt jedoch gegenüber zwei Dienstnutzern (VQ2, VQ3) als
Diensterbringer auf. Die folgende Abbildung verdeutlicht die topologische Struktur:
Abb. 85) Netzwerktopologie im Versuchsaufbau 3: Entfernungstest/Kapazitätsauslastung
Es wurden Messergebnisse für zwei Testreihen ermittelt. In der ersten Testreihe betrug der
Abstand von jedem Dienstnutzer zum Diensterbringer 2m. In der zweiten Testreihe
bewegte sich ein Dienstnutzer in einer Entfernung von 15m - 20m von der Verteilerquelle
VQ1 weg. Der zweite Dienstnutzer bewahrte während des gesamten Messzeitraums einen
Abstand von 15m zu VQ1. Die nachstehende Tabelle gibt die gewonnen Messergebnisse
wieder:
Abstand zum
Zeitdifferenz
Diensterbringer zwischen ES
in m
in ms
Test
Nr.
Mess
punkt
Messzeitraum
in min
5
VQ1
5,00
0
934
0
0
7
k.A.
0,0
VQ2
5,00
2
343
2
0
3
sehr gut
0,0
VQ3
5,00
2
411
0
0
3
sehr gut
0,0
VQ1
5,00
0
970
0
0
2
k.A.
0,0
VQ2
5,00
15
192
2
0
0
sehr gut
0,2
38
gut, wenige
Pixelfehler,
selten Ton
stockungen
0,2
6
VQ3
5,00
15 - 20
224
Paketverluste Paketverluste Darstellungs RTT
Audio
Video
qualität
in s
Timeouts
6
11
Tabelle 10: Messergebnis Entfernungstest mit multiplen Anfragen (single Source)
Verfasser: Holger Kärst
146
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Obwohl die Auslastung der Uplink-Kapazität durch die Existenz zweier Dienstnutzer an
der Verteilerquelle VQ1 gegenüber dem Test aus Abschnitt 8.2 erhöht wurde, hat sich das
Fehlerverhalten des Vermittlungsprozesses nicht wesentlich verändert. Deshalb wird mit
der Messung der Kapazitätsauslastung des Datenein- und Datenausgangs der
Verteilerquelle VQ1 eine weitere Untersuchung vorgenommen.
Die Messergebnisse der zusätzlichen Messgrößen sind in der folgenden Grafik ersichtlich:
Abb. 86) Messergebniss Ressourcenauslastung VQ1 Versuch 3
Das obere Messfenster stellt die Auslastung der Dateneingangskapazität (100Mbit/s) der
Verteilerquelle VQ1 in Prozent dar. Die untere Messkurve beschreibt die Auslastung der
Uplink-Kapazität (11Mbit/s) von VQ1 in Prozent. Zum Zeitpunkt t1 stellt VQ2 eine
Serviceanfrage an die Verteilerquelle VQ1. Daraufhin beginnt VQ1 damit, die
Multimediasequenz an den Dienstnutzer auszuliefern. Die Auslastung der UplinkKapazität steigt von 0% auf ca. 6,25% an. Zum Zeitpunkt t2 erhält die Verteilerquelle VQ1
eine weitere Serviceanfrage vom zweiten Diensnutzer VQ3. Die Auslastung der UplinkKapazität steigt mit der zusätzlichen Auslieferung der multimedialen Daten an den zweiten
Dienstnutzer weiter um ca. 6,25% auf 12,5% an. Auch in diesem Versuch ist erkennbar,
dass die Kapazitätsauslastung linear mit der Anzahl der Serviceanfragen steigt. Zum
Verfasser: Holger Kärst
147
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Zeitpunkt t3 bricht der erste Dienstnutzer die Verbindung zu VQ1 ab. Die
Datenvermittlung zu diesem Netzwerkknoten wird beendet und die Auslastung der UplinkKapazität sinkt um ca. 6,25% ab. Zum Zeitpunkt t4 bricht auch der zweite Dienstnutzer die
Verbindung zu VQ1 ab und der Datenvermittlungsprozess wird beendet. Die Auslastung
der Eingangskapazität bleibt während des gesamten Messzeitraums konstant. Die
Hauptquelle wird, als Diensterbringer an VQ1, durch die Anfragen mehrerer Dienstnutzer
an VQ1 nicht weiter belastet. Durch diese kooperative Art der Datenverteilung kann die
Gesamtlast auf mehrere Netzwerkknoten aufgeteilt werden.
Durch die zusätzlichen Messergebnisse ist ersichtlich, dass die mittlere UplinkKapazitätsauslastung maximal 12,5% beträgt. Aufgrund dieser geringen Auslastung,
unterscheidet sich das Fehlerverhalten des Vermittlungsprozesses nicht wesentlich vom
ermittelten Verhalten in Abschnitt 8.2. Die Mobilität der Verteilerquelle VQ3 hatte geringe
Auswirkungen auf die Fehlerhäufigkeit. Mit zunehmendem Abstand von VQ3 (bis max.
20m) zur Verteilerquelle VQ1 erhöhte sich die Häufigkeit von Übertragungsfehlern
geringfügig. Die Darstellungsqualität nahm ab und musste von „sehr gut“ auf „gut“
herabgestuft werden.
Verfasser: Holger Kärst
148
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
8.4. Entfernungstest im 3-stufigen Verteilersystem (single Source
Streaming)
Das vierte Experiment soll ermitteln, ob die Übertragungsstrecke durch eine Kette von
hintereinander geschalteten Verteilerquellen verlängert werden kann. Dazu werden eine
Hauptquelle und drei Verteilerquellen entsprechend der Abb. 87) miteinander verbunden.
Die in Abschnitt 8.3 definierten Messgrößen sollen auch in diesem Versuch für die
Ermittlung von Testergebnissen verwendet werden.
Abb. 87) Netzwerktopologie Versuch 4: erweiterter Entfernungstest
Folgende Ergebnisse wurden gemessen:
Test
Nr.
Mess
punkt
Messzeitraum
in min
7
VQ1
6,00
8
Abstand zum
Zeitdifferenz
Diensterbringer zwischen ES
in m
in ms
0
Timeouts
933
Paketverluste Paketverluste Darstellungs RTT
Audio
Video
qualität
in s
0
0
2
k.A.
0,0
VQ2
6,00
1
150
0
0
2
sehr gut
0,0
VQ3
5,00
1
152
0
0
2
sehr gut
0,0
VQ1
5,50
0
963
0
0
10
k.A.
0,0
VQ2
5,50
15
224
0
0
2
sehr gut
0,2
8
gut, wenige
Ton
stockungen
0,2
VQ3
5,00
22,00 zu VQ2
37,00 zu VQ1
287
0
6
Tabelle 11: Messergebnis 3-stufiger Entfernungstest (single Source)
Verfasser: Holger Kärst
149
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Aus den Messwerten ist erkennbar, dass durch den Vermittlungsprozess des
implementierten Systems und eine Kettenschaltung von mehreren Verteilerquellen, der
Übertragungsradius für die Verteilung multimedialer Daten im Adhoc-Netzwerk
vergrößert werden kann. Der Gesamtabstand zwischen der Verteilerquelle VQ3 und der
Hauptquelle beträgt bei einer guten Darstellungsqualität 37m. Im Versuchsaufbau 8.2 ist
dagegen die Verbindung in der vierten Testreihe, bei einer Entfernung von 30m zwischen
der Hauptquelle und der Verteilerquelle der letzten Verteilungsstufe, abgebrochen und die
Darstellungsqualität war schlecht.
Während des Testzeitraums wurden an der Verteilerquelle VQ1 die Auslastung der
Eingangsbandbreite und die Auslaustung der Uplink-Kapazität gemessen. Die Messkurven
werden in Abb. 88) wiedergegeben.
Abb. 88) Messergebnis Ressourcenauslastung VQ1 Versuch4
Die Werte der Auslastung sind in Prozent dargestellt. Über den gesamten Messzeitraum
wurde genau eine Dienstanforderung von VQ1 erfüllt. Die Auslastung der UplinkKapazität von 11Mbit/s betrug im Mittel ca. 6,25%. Über den Zeitraum der Messung
konnte eine mittlere Auslastung der Eingangskapazität (100Mbit/s) von weniger als 1%
ermittelt werden. Die Serviceanfrage von der Verteilerquelle VQ3 an die Verteilerquelle
Verfasser: Holger Kärst
150
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
VQ2 hatte keine Auswirkungen auf die Auslastung der Uplink-Kapazität und die
Auslastung der Eingangskapazität von VQ1. Dies zeigt, dass durch das implementierte
Verteilersystem multimediale Daten mehrfach in der Verteilungskette für den
Darstellungsprozess verwendet werden.
8.5. Entfernungstest im 3-stufigen Verteilersystem (multi Source
Streaming)
Im letzten Versuchsaufbau wird die Funktionsweise des Verteilungsprozesses überprüft,
indem Elementarströme von unterschiedlichen Quellen angefordert werden. Eine
Hauptquelle und drei Verteilerquellen sind im Adhoc-Netzwerk drahtlos miteinander
verbunden. Die Abb. 89) zeigt die Netzwerktopologie des Versuchsaufbaus von zwei
Testreihen.
Abb. 89) Netzwerktopologie Versuch5: multi Source Streaming
Die realen Uplink-Kapazitäten (11Mbit/s) der Verteilerquellen erlauben im
implementierten Vermittlungssystem die Übertragung aller Elementarströme von einem
Diensterbringer zu einem Dienstnutzer.
Um den Vermittlungsprozess, wie in Abb. 89) dargestellt, realisieren zu können, mussten
die Werte für die Uplink-Kapazitäten der Verteilerquellen VQ1 und VQ2 künstlich
beschränkt werden. Der Verteilerquelle VQ1 wurde eine Ausgangsvermittlungskapazität
von 1150kBit/s zugewiesen. Die Uplink-Kapazität der Verteilquelle VQ2 wurde auf
Verfasser: Holger Kärst
151
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
600kBit/s festgelegt. VQ1 kann nun eine Dienstanforderung vollständig erfüllen und die
Elementarströme einer zweiten Serviceanfrage nur teilweise ausliefern (entweder VideoES, oder Audio-ES). Die Verteilerquelle VQ2 ist nur in der Lage, eine Dienstanforderung
teilweise zu erfüllen.
Folgende Messergebnisse wurden ermittelt:
Test
Nr.
Mess
punkt
7
VQ1
5,50
VQ2
8
Messzeitraum Abstand zum
in min
Diensterbringer in
m
Zeitdifferenz
zwischen ES
in ms
Timeouts
Paketverluste Paketverluste Darstellungs RTT
Audio
Video
qualität
in s
0
938
0
0
9
k.A.
0,0
5,50
1,5
460
1
0
2
sehr gut
0,0
VQ3
5,00
0,5 zu VQ2
1,5 zu VQ1
1080
1
0
3
sehr gut
0,0
VQ1
5,50
0
931
0
0
2
k.A.
0,0
VQ2
5,50
9
376
0
0
2
sehr gut
0,2
5,00
ES1: 20,00 zu VQ1
ES2: 35,00 zu VQ1
bzw.
ES2: 26,00 zu VQ2
15
gut, wenige
Ton
stockungen
wenige
Pixelfehler
0,2
zu
VQ1
0,3
zu
VQ2
VQ3
1244
1
8
Tabelle 12: Messergebnis 3-stufiger Entfernungstest (multi Source)
Von den ermittelten Ergebnissen hebt sich die Messgröße „Zeitdifferenz zwischen
Elementarströmen“ der Verteilerquelle VQ3 gegenüber den gemessenen Werten voriger
Experimenten ab. Die größere Differenz entsteht teilweise durch die unterschiedlichen
Längen der Übertragungswege, hauptsächlich jedoch durch die unterschiedliche Anzahl
der Verteilungsstufen, über die die Elementarströme übertragen wurden. Ein
Elementarstrom wird an zwei Verteilungsstufen zwischengespeichert, der andere
Elementarstrom an einer Verteilungsstufe weniger. Obwohl diese erhöhte Zeitdifferenz
zwischen den Elementarströmen existiert, ist die Darstellungsqualität der
zusammengesetzten Multimediasequenz in der 1.Testreihe sehr gut und in der zweiten
Testreihe gut. Die Herabstufung der eingeschätzen Darstellungqualität der 2.Testreihe
entsteht weniger durch die Anforderung der Elementarströme von verschiedenen Quellen,
sondern mehr durch die größeren Abstände zwischen den Diensterbringern und dem
Dienstnutzer. Die Nutzung mehrerer Diensterbringer im Verteilungsprozess kann aufgrund
der ermittelten Ergebnisse nur eine geringe Auswirkung auf die Darstellungsqualität
haben.
Auch in diesem letzten Experiment wurden an der Verteilerquelle VQ1 die Auslastungen
der verfügbaren Eingangs- und Ausgangsbandbreite gemessen. Die Abb. 90) stellt den
Messverlauf grafisch dar.
Verfasser: Holger Kärst
152
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Abb. 90) Messergebnis Ressourcenauslastung VQ1 Versuch5
Die Auslastung wird über den gesamten Messzeitraum in Prozent angegeben. Die
Kapazität der Eingangsbandbreite wurde im Mittel weniger als 1% genutzt. Die Auslastung
der Kapazität der Ausgangsbandbreite stieg mit der Anzahl der Serviceanfragen an. Die
Verteilerquelle VQ1 lieferte in diesem Test einen Audio- und einen Videodatenstrom an
VQ2 sowie einen weiteren Videodatenstrom an VQ3 aus. VQ3 erhielt den
Audiodatenstrom von der Verteilerquelle VQ2.
Zum Zeitpunkt t1 bewirkte die Auslieferung der multimedialen Daten an den ersten
Dienstnutzer einen Anstieg der Auslastung der Uplink-Kapazität auf ca. 6,25%. Zum
Zeitpunkt t2 wurde der zweite Videodatenstrom an die Verteilerquelle VQ3 vermittelt. Die
Auslastung erhöhte sich auf ca. 10%. Nach dem Abbruch des Datenempfangs zum
Zeitpunkt t3 durch VQ2 und VQ3 wurde der Vermittlungsprozess beendet.
Die Auslastung der Verteilerquelle VQ1 konnte durch die Lastverteilung zwischen den
Diensterbringern gegenüber dem Experiment aus Abschnitt 8.3 von 12,5% auf 10%
gesenkt werden.
Verfasser: Holger Kärst
153
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
9. Zusammenfassung
Das Ziel dieser Arbeit war die Entwicklung eines Konzepts, dass einen neuen
Verteilungsmechanismus für multimediale Daten in hochdynamischen Netzwerken
beschreibt. Ein ausgewähltes, verfügbares Kodierverfahren sollte dabei die Grundlage für
das Konzept liefern. Die Anforderung an das gewählte Verfahren bestand darin, eine
Multimediasequenz bereits im Kodierprozess so skalierbar zu strukturieren, dass sie
flexibel an alle Endgeräteklassen anpassbar ist und aus mehreren unabhängig verteilbaren
Datenströmen besteht.
Die Datenströme sollten von verschiedenen Quellen anforderbar sein und zu einer
darstellbaren Multimediasequenz zusammengeführt werden können. Dieser Grundgedanke
ermöglicht eine kooperative Lastverteilung bei der Dienstbereitstellung zwischen den
Teilnehmern des Netzwerks. An die Datenströme wurde die zusätzliche Bedingung
gestellt, durch eine definierte Stromstruktur robuster gegenüber Fehlern bei der
Übertragung über verlustbehaftete Kanäle zu sein.
Nach der Anforderungsanalyse wurden für das zu entwickelnde System der Entwurf und
die Spezifikation erstellt. Danach folgte eine Recherche über die verfügbaren
Kodierverfahren, Protokolle und Systeme, die für eine Implementierung des spezifizierten
Konzepts eingesetzt werden können.
Bei der umfassenden Analyse der Kodierverfahren wurde MPEG4 als grundlegendes
Kodierverfahren für den neuen Multisource-Streaming-Ansatz gewählt. Den theoretischen
Angaben des Standards zufolge, erfüllt MPEG4 alle analysierten Anforderungen an das zu
verwendende Kodierverfahren. Während der Untersuchung verfügbarer Encoder, StreamServer und Decoder wurde jedoch festgestellt, dass keine der aktuellen Geräte, die im
MPEG4-Standard ausgewiesenen Techniken für eine skalierbare Kodierung multimedialer
Daten unterstützen. Das Ziel, eine schnelle und effiziente Anpassung multimedialer
Datenelemente an die Anforderungen unterschiedlicher Endgeräteklassen realisieren zu
können, war deshalb zum Zeitpunkt der Implementierung des neuen MultisourceStreaming-Ansatzes nicht erreichbar.
Welche Anforderungen an das neue Verteilungssystem konnten dennoch erfüllt und in
einer prototypischen Implementierung umgesetzt werden?
Mit der Auswahl von MPEG4IP stand ein Gesamtsystem für die Erstellung und die
Darstellung multimedialer Daten und ihrer Vorbereitung auf den Transportprozess zur
Verfügung. Die Struktur der generierten Datenströme entspricht dem MPEG4-Standard im
„Simple-Profile“. Somit wurde die Forderung nach einer fehlerrobusten Struktur der
Datenströme, für eine Vermittlung multimedialer Daten über verlustbehaftete
Verfasser: Holger Kärst
154
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Transportkanäle, vollständig erfüllt. MPEG4IP ermöglicht die Erstellung unabhängig
verteilbarer Datenströme für eine Multimediasequenz. Diese verteilbaren Datenströme
lieferten die grundlegende Datenstruktur und definierten die Art der Verteilbarkeit der
multimedialen Informationen für den implementierten „Multisource-Streaming-Ansatz“.
Nach der Wahl der geeigneten, verfügbaren Plattform, folgte die prototypische
Implementierung des spezifizierten Konzepts. Der implementierte Ansatz unterstützt die
Verteilung multimedialer Daten im hochdynamischen Netzwerk. Dabei wird der
Verteilungsprozess an die Verbindungseigenschaften angepasst, die zwischen den
potentiellen Dienstanbietern und dem Dienstnutzer bestehen. Ebenso haben die
verfügbaren Ressourcenkapazitäten der Dienstanbieter einen Einfluss auf den
Verteilungsprozess.
Die Ergebnisse verschiedener Experimente mit dem implementierten Prototyp zeigten,
dass die Verteilbarkeit von Datenströmen einer Multimediasequenz nicht nur möglich ist,
sondern dass mit dieser Verteilbarkeit der Lastenausgleich zwischen Dienstanbietern
realisiert werden konnte. Die Wiederverwendbarkeit der verteilten multimedialen Daten im
implementierten System erlaubt es, empfangene multimediale Elemente anderen
Dienstnutzern zur Verfügung zu stellen. Die Testergebnisse haben gezeigt, dass durch
dieses Verteilungsprinzip die Reichweite der Datenverteilung erhöht werden konnte. Durch
den neuen implementierten Verteilungsmechanismus können mit mehreren
Verteilerquellen kürzere Übertragungsstrecken realisiert werden, wodurch die
Fehlerhäufigkeit im Übertragungsprozess gesenkt werden kann. Diese Aussage wird durch
experimentell gewonnene Versuchsergebnisse unterstützt.
In dieser Arbeit konnte somit ein Konzept eines neuen Mechanismus für die Verteilung
multimedialer Daten in hochdynamischen Netzwerken entwickelt und prototypisch
implementiert werden.
Verfasser: Holger Kärst
155
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
10. Ausblick
Für die weitere Entwicklung des neuen Verteilungsmechanismus ist die Verfügbarkeit von
Encodern, Stream-Servern und Decodern, die skalierbar kodierte multimediale Daten
erzeugen, verteilen und darstellen können, von größter Bedeutung. Mit der Verwendung
eines Kodiersystems, dass die skalierbare Kodierung multimedialer Daten vollständig,
gemäß dem MPEG4-Standard unterstützt, kann die Verteilbarkeit der Elemente einer
Multimediasequenz bedeutend erweitert werden. Je unabhängiger der korrekte
Dekodiervorgang, mit Hilfe der Skalierbarkeit, von der Forderung nach dem vollständigen
Empfang der Elemente einer Multimediasequenz ist, umso fehlerrobuster ist der
Wiedergabeprozess und umso besser kann der Verteilungsprozess an die verfügbaren
Ressourcen des Netzwerkes und der Endgeräte angepasst werden.
Folgende,
teilweise
bereits
spezifizierte
Erweiterungen
Gesamtfunktionalität des implementierten Prototyps:
verbessern
die
Eine erweiterte Verteilbarkeit multimedialer Daten ist durch Aufteilung von
Datenelementen eines Elementarstroms auf mehrere Transportdatenströme möglich. Diese
Art der Datenverteilung erfordert jedoch den vollständigen Empfang aller
Transportdatenströme eines Elementarstroms, um einen korrekten Dekodiervorgang
garantieren zu können.
Durch die Implementierung von Routing-Mechanismen und mit der Möglichkeit,
optimierte dynamische Multicast-Bäume erstellen zu können, ist der Verteilungsprozess
kooperativer gestaltbar und kann besser an die Dynamik der Ressourcenverfügbarkeit
angepasst werden. Die Ermittlung der benachbarten Dienstanbieter ist somit für einen
Dienstnutzer nicht mehr fest definiert, sondern orientiert sich dynamisch an den
wechselnden Umgebungseigenschaften.
Der Einsatz eines geeigneten Scheduling-Verfahrens im Datenversandprozess verbessert
die Synchronitsation der Datenvermittlung mehrerer zusammengehöriger Elementarströme
von einer Quelle. Mit diesem Scheduling-Verfahren ist gleichzeitig eine vermehrte
Berücksichtigung der Zeitrelevanzen der zu vermittelnden Datenelemente erreichbar.
Somit kann auch dem Problem der Übertragung großer visueller Datenelemente
gegengesteuert werden. Bei der Übertragung solcher Datenelemente, die über mehrere
Transportdateneinheiten verteilt werden müssen, treten die häufigsten Datenverluste auf.
Die Transportdateneinheiten besitzen die gleiche Zeitrelevanz und müssen somit zum
gleichen Zeitpunkt übertragen werden. Für diesen Augenblick übersteigt die Datenrate die
verfügbare Transportkapazität des Netzwerks bzw. die CPU des Versenders kann den
Versandprozess nicht schnell genug abarbeiten.
Verfasser: Holger Kärst
156
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Die
stochastisch
wechselnden
Verbindungseigenschaften
zwischen
Kommunikationspartnern im Adhoc-Netzwerk sollten kontinuierlich überprüft werden. Mit
den protokollierten Informationen können Entscheidungen im Verbindungsmanagement
getroffen werden. So ist ein Umschalten von Verbindungen zwischen Dienstanbietern
während des Empfangs- und Darstellungsprozesses durch den Dienstnutzer denkbar.
Die Abschätzung der Verbindungseigenschaften mit Hilfe der Ermittlung der
Paketumlaufzeit und der Paketverlusthäufigkeit kann durch weitere Messgrößen, wie z.B.
die Jitterbestimmung, verbessert werden.
Ein ganzes Forschungsgebiet eröffnet die Untersuchung der Fehlererkennbarkeit, der
Fehlerkontrolle, der Einsatzmöglichkeiten von Fehlerabsicherungen durch Datenredundanz
und der Entwicklung von Reaktionsmechanismen auf entstandene Fehler für multimediale
Daten. Mit der Implementierung solcher Mechanismen kann die Darstellungsqualität der
verteilten Multimediasequenzen erheblich gesteigert werden.
11. Schlussbemerkung
Der prototypisch implementierte, neue Ansatz bietet die Grundlage für die Entwicklung
eines Gesamtsystems für die Verteilung multimedialer Daten in hochdynamischen
Netzwerken. Diese Basis ist mit neuen Funktionen und Ideen beliebig erweiterbar.
Für das kontinuierlich steigende Interesse an mobiler, multimedialer Kommunikation in
Netzwerken ohne Infrastruktur, beschreibt das entwickelte Konzept einen Vorschlag, der
einige der vorgestellten Probleme lösen kann.
Verfasser: Holger Kärst
157
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
12. Anhang
Anhang A
Geräteklasse
Übersicht über verfügbare mobile Endgeräte
Endgerät
Prozessorleistung
Displayeigenschaften
(Displayauflösung/Farbauflös
ung)
Speicherkapazität
Akkulaufzeit
Handy
Smart
Phone
Samsung 200 MHz
i600
PXA250
XScale
processor
Displayauflösung:
176x220 Pixel
Farbauflösung: 65k
Farben
32MB Flash ROM
32 MB SDRAM
Speichererweiterung
über SD- und MMCKarten
Betriebssystem /
Multimediafähigkeit
Netzwerkanbindung
Handys ohne
Betriebssystem
haben keine
Funktionen um
Multimediasequen
zen (Video)
abspielen zu
können
GSM,
GPRS,
Bluetooth
, HSCSD
BS: Microsoft
Windows Mobile
for Smartphone
OS 2002
GSM,
GPRS
Kopfhörer- und
Mikrofonanschluss
(stereo)
POP3, IMAP,
SMTP,WAP,
HTML, cHTML
über SDKarten
zusätzlic
h WLAN,
Bluetooth
, GPS
Windows Media
Player for
Smartphone
(Wiedergabe von
gespeicherten
oder gestreamten
WM9-kodierten
Multimediasequen
zen und MP3
Audio)
Orange
SPV
E200
GSM
Phone
132 MHz Ti
OMAP 710
processor
Verfasser: Holger Kärst
Displayauflösung:
176x220 Pixel
Farbauflösung: 65k
Farben
32MB Flash ROM
32 MB SDRAM
Speichererweiterung
über SD- und MMCKarten
BS: Microsoft
Windows Mobile
for Smartphone
OS 2003
GSM,
GPRS,
Bluetooth
Kamera zur
Aufnahme von
Videos mit einer
Aufl. von 352 x
288 oder 176 x
144 und Audio.
Video files werden
im AVI format
gespeichert
Kopfhörer- und
Mikrofonanschluss
(stereo)
POP3, IMAP,
SMTP,WAP2.0,
HTML4.0, CSS
über SDKarten
zusätzlic
h WLAN,
GPS
158
Diplomarbeit
Geräteklasse
Endgerät
Inv.Nr.: 2004-11-03/096/IN99/2253
Prozessorleistung
Nokia
7610
Displayeigenschaften
(Displayauflösung/Farbauflösung)
Speicherkapazität
Akkulaufzeit
Betriebssystem /
Multimediafähigkeit
Netzwerkanbindung
Displayauflösung: 176x208
Pixel Farbauflösung: 65k
Farben
8MB für Daten
(Multimedia,
Telefonbuch,...)
Speichererweite
rung über SDund MMCKarten
BS:
GSM,
Betriebssystem:
GPRS,
Symbian OS 7.0s Bluetooth
RealPlayer:
OfflineWiedergabe und
Online-Streaming
von
Musikdateien(MP3
, AAC, RealAudio,
WAV) und
Videoclips(MPEG
4, H.263)
Akkulaufzeit:
Sprechzeit bis
zu 180 Minuten
VideokameraFunktion mit
Tonaufnahme und
4-fachem
Digitalzoom zum
Aufzeichnen von
bis zu 10 Minuten
langen Videoclips
(128x96 oder
176x144) in
MPEG4, H.263,
3GGP
Kopfhörer- und
Mikrofonanschluss
(stereo)
POP3, IMAP,
SMTP,WAP2.0,
HTML4.0, CSS
Nokia
7700
Verfasser: Holger Kärst
Displayauflösung: 640x320
Pixel Farbauflösung: 65k
Farben
20-25MB für
Daten
(Multimedia,
Telefonbuch,...)
Speichererweite
rung über SDund MMCKarten
RealPlayer:
OfflineWiedergabe und
Online-Streaming
von
Musikdateien(MP3
, AAC, RealAudio,
WAV) und
Videoclips(MPEG
4, H.263) UKW
Radio
Kopfhörer- und
Mikrofonanschluss
(stereo)
POP3, IMAP,
SMTP,WAP2.0,
HTML4.0, CSS
Akkulaufzeit:
Sprechzeit bis
zu 4 Stunden
Kamera zur
Aufnahme von
Videos mit einer
Aufl. von 640 x
480 und Audio.
Video files werden
in MPEG4 oder
H.263 gespeichert
GSM,
GPRS,
HSCSD,
Bluetooth
, DVB-H
159
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Geräteklasse
Endgerät
Prozessorleistung
Displayeigenschaften
(Displayauflösung/Farbauflösung)
Pocket PC
Phone
T-Mobile
Pocket
PC
Phone
Edition
StrongARM Displayauflösung: 240x320
206 MHz
Pixel Farbauflösung: 4k
processor
Farben
Speicherkapazität
Akkulaufzeit
Betriebssystem /
Multimediafähigkeit
Netzwerkanbindung
32MB Flash
ROM 32 MB
SDRAM
Speichererweite
rung über SDund MMCKarten
BS: Pocket PC
GSM,
2002 / Windows
GPRS
Mobile 2003
Kopfhörer- und
Mikrofonanschluss
(stereo)
Windows Media
Player
(Wiedergabe von
gespeicherten
oder gestreamten
WM9-kodierten
Multimediasequen
zen und MP3
Audio)
Pocket PC
PDA
Fujitsu
Siemens
Pocket
LOOX
610
BT/WLA
N
Toshiba
Pocket
PC e800
WiFi
XScaleProzessor
(PXA255)
mit 400
MHz
XScaleProzessor
(PXA263)
mit 400
MHz
Verfasser: Holger Kärst
Displayauflösung: 240x320
Pixel Farbauflösung: 65k
Farben
Displayauflösung: 480x640
Pixel aber Betriebssystem
unterstützt nur 240x320 Pixel
Farbauflösung: 65k Farben
64MB Flash
ROM 128 MB
SDRAM
Speichererweite
rung über SDund MMCKarten
BS: Pocket PC
Bluetooth
2003 (Windows
, WLAN
Mobile 2003)
802.11b
Kopfhörer- und
Mikrofonanschluss
(stereo)
Akkulaufzeit:
224min (volle
Leistung)
126min (mit
WLAN)
Windows Media
Player
(Wiedergabe von
gespeicherten
oder gestreamten
WM9-kodierten
Multimediasequen
zen und MP3
Audio)
32MB Flash
ROM 128 MB
SDRAM
32MB NAND
Flash
Speichererweite
rung über SDund MMCKarten
Akkulaufzeit:
223min (volle
Leistung)
119min (mit
WLAN)
BS: Pocket PC
WLAN
2003 (Windows
802.11b
Mobile 2003)
Kopfhörer- und
Mikrofonanschluss
(stereo)
Windows Media
Player
(Wiedergabe von
gespeicherten
oder gestreamten
WM9-kodierten
Multimediasequen
zen und MP3
Audio)
160
Diplomarbeit
Geräteklasse
Inv.Nr.: 2004-11-03/096/IN99/2253
Endgerät
Prozessorleistung
Displayeigenschaften
(Displayauflösung/Farbauflösung)
Speicherkapazität
Akkulaufzeit
Betriebssystem /
Multimediafähigkeit
Netzwerk
JVC MPPV332
XScaleProzessor
(PXA255)
mit 400
MHz
Displayauflösung: 240x320
Pixel Farbauflösung: 65k
Farben
32MB Flash ROM
128 MB SDRAM
Speichererweiteru
ng über SD- und
MMC-Karten
BS: Pocket PC
WLAN
2003 (Windows
802.11b
Mobile 2003)
Kopfhörer- und
Mikrofonanschluss
(stereo)
JVC eigener AV
Player unterstützt
das Abspielen von
MPEG4 (AVI,
AFS-Videofiles),
mp3, wav und ogg
komprimierte
audio Files.
Ermöglicht das
erstellen und
streamen von
MPEG4 video,
jedoch nur mit
kompatiblen JVC
Mini DV digital
Camcordern
Linux
PDA
Sharp
Zaurus
C760
XScaleProzessor
(PXA255)
mit 400
MHz
Displayauflösung: 480x640
Pixel
Farbauflösung:
65k Farben
64MB System
SDRAM
128
MB Storage
SDRAM
Speichererweiteru
ng über SD- und
MMC-Karten
Linux-based
WLAN
operating system
802.11b
(OpenPDA)
Kopfhörer- und
Mikrofonanschluss
(stereo)
POP3, IMAP,
SMTP,WAP,
HTML, cHTML
Video Player
(MPEG4), Music
Player for MP3s,
Palm OS
PDA
Sony
Clié
model
UX50 &
UX40
Sony
CXD2330G
A ARM
family
processor
8-123MHz
Verfasser: Holger Kärst
Displayauflösung: 480x320
Pixel
Farbauflösung:
65k Farben
8MB CPUinterner
Speicher
32MB DRAM
64MB NAND Flash
davon 16MB für
Programme und
29MB für
Multimediadaten
BS: Palm OS 5.2
WLAN
eine 320x240
802.11b
MPEG1 Sequenz Bluetooth
mit 15fps
abspielbar , MP3
Player Kopfhörerund
Mikrofonanschluss
(stereo)
POP3, IMAP,
SMTP,WAP2.0,
HTML4.0, CSS
Akkulaufzeit:
210min (volle
Leistung) 150min
(mit WLAN)
Kamera zur
Aufnahme von
Videos mit einer
Aufl. von 160 x
112 und Audio.
Videoformat
unbekannt(wahrsc
hnl. MPEG1)
161
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Geräteklasse
Endgerät
Prozessorleistung
Tablet PC
Acer
Pentium M
TravelMa Centrino
te
1600MHz
C302XMi
Displayeigenschaften
(Displayauflösung/Farbauflösung)
Speicher-kapazität
Akkulaufzeit
Betriebssystem /
Multimediafähigkeit
Netzwerk
Displayauflösung: 1024x768
Pixel
Farbauflösung:
32bit True Color
512 MB RAM,
max. 2048MB
60GB Festplatte
Grafikkarte Intel
DVMT mit
64MB RAM
BS: Windows XP
Tablet PC Edition
oder GNU/LINUX
Software
Kodierung/Dekodi
erung aller
MultimediaFormate möglich,
Stereo
Lautsprecher und
Mikrofon, digit.
Ausgang für 5.1
Soundsysteme
WLAN
802.11b
Bluetooth
, 1Gbit
Ethernet,
56k V.92
Modem,
IEEE
1394
BS: Windows XP
Tablet PC Edition
Software
Kodierung/Dekodi
erung der meisten
MultimediaFormate möglich,
Stereo
Lautsprecher und
Mikrofon
WLAN
802.11b
Bluetooth
, 100Mbit
Ethernet,
56k V.90
Modem,
IEEE
1394
BS: Windows XP
Professional
Software
Kodierung/Dekodi
erung der meisten
MultimediaFormate möglich,
Stereo
Lautsprecher und
Mikrofon
WLAN
802.11g,
100Mbit
Ethernet,
56k V.92
Modem,
IEEE
1394
BS: Windows XP
Home / Media
Center / LINUX
Software
Kodierung/Dekodi
erung aller
MultimediaFormate möglich,
Stereo
Lautsprecher und
Mikrofon
TV-Karte
WLAN
802.11g,
100Mbit
Ethernet,
56k V.92
Modem,
IEEE
1394
Akkulaufzeit:
7 Stunden
Ultra Low Pentium M
Voltage
933MHz
Mobile
Intel®
Pentium
® III
Processo
r
933MHz
Displayauflösung: 10.4" XGA
TFT 1024x768 Pixel
Farbauflösung: 32bit True
Color
256 MB RAM,
max. 768MB
60GB Festplatte
Grafikkarte Intel
830MG mit
48MB Shared
RAM
Akkulaufzeit:
4 Stunden, 3
Stunden mit
WLAN
Laptop
Sony
Vaio
VGNX505VP
Ultra Low
Voltage
Intel®
Pentium® M
Prozessor
mit 1,1 GHz
Displayauflösung: 10.4" XGA
TFT 1024x768 Pixel
Farbauflösung: 32bit True
Color
512 MB RAM,
max. 512MB
20GB Festplatte
Grafikkarte Intel
855GM mit
64MB Shared
RAM
Akkulaufzeit:
3 Stunden mit
WLAN
HP
ZD7000
Mobile Intel®
Pentium®
Prozessor
mit 3,4 GHz
Displayauflösung: 17.0" WVA
WSXGA+ BrightView
1680x1050 Pixel
Farbauflösung: 32bit True
Color
512 MB RAM,
max. 2,048GB
100GB
Festplatte
Grafikkarte
NVIDIA(R)
GeForce(TM)
FX Go5700 mit
128MB SDRAM
Akkulaufzeit:
1,5 Stunden mit
WLAN
Verfasser: Holger Kärst
162
Diplomarbeit
Anhang B
Inv.Nr.: 2004-11-03/096/IN99/2253
Überblick über MPEG2 Profile und Level
Level
Layer
High
Base
Simple
samples/line
1920
lines/frame
1152
frames/sec
-
bitrate
VbVBuffersize
Chroma Format
Base +
Enhancement 1
Main
60
Profile
SNR
Spatial
und SNR
960
576
-
-
25 Mbit/s
9,781 Mbit
3,047 Mbit
4:2:0
4:2:0
1920
1152
lines/frame
-
-
-
-
9,781 Mbit
VbVBuffersize
Chroma Format
4:2:0
samples/line
1920
Enhancement 1 +
lines/frame
Enhancement 2
frames/sec
1152
-
-
-
-
12,222 Mbit
VbVBuffersize
4:2:2
Chroma Format
Base
1440
samples/line
1152
lines/frame
frames/sec
-
bitrate
VbVBuffersize
Enhancement 1
720
720
576
576
30
30
60 Mbit/s
15 Mbit/s
20 Mbit/s
7,340 Mbit
1,835 Mbit
2,441 Mbit
60
-
4:2:0
4:2:0
Chroma Format
Base +
samples/line
1440
1440
lines/frame
1152
1152
frames/sec
-
-
-
bitrate
VbVBuffersize
30
60
40 Mbit/s
60 Mbit/s
4,882 Mbit
7,340 Mbit
4:2:0
Chroma Format
samples/line
1440
1440
Enhancement 1 +
lines/frame
1152
1152
Enhancement 2
frames/sec
Base +
-
-
-
bitrate
VbVBuffersize
30
60
60 Mbit/s
80 Mbit/s
7,340 Mbit
9,781 Mbit
4:2:2
Chroma Format
Main
60
100 Mbit/s
bitrate
High-1440
60
80 Mbit/s
bitrate
Base +
30
80 Mbit/s
samples/line
frames/sec
High
Base
720
720
720
lines/frame
576
576
576
frames/sec
30
30
30
15 Mbit/s
15 Mbit/s
10 Mbit/s
4 Mbit/s
1,835 Mbit
1,835 Mbit
1,212 Mbit
475,14 Kbit
4:2:0
4:2:0
4:2:0
4:2:0
bitrate
VbVBuffersize
Chroma Format
Verfasser: Holger Kärst
352
samples/line
288
-
30
163
Diplomarbeit
Level
Inv.Nr.: 2004-11-03/096/IN99/2253
Layer
Base +
Enhancement 1
Simple
Main
samples/line
720
lines/frame
576
frames/sec
-
-
bitrate
VbVBuffersize
Chroma Format
Base +
Profile
SNR
30
Spatial
und SNR
720
576
-
lines/frame
Enhancement 2
frames/sec
15 Mbit/s
1,835 Mbit
1,835 Mbit
4:2:0
4:2:0
720
576
-
-
-
-
2,441 Mbit
VbVBuffersize
4:2:2
Chroma Format
Base
samples/line
lines/frame
frames/sec
-
bitrate
VbVBuffersize
Chroma Format
Base +
Enhancement 1
352
352
288
288
30
30
4 Mbit/s
3 Mbit/s
475,14 Kbit
360,45 Mbit
4:2:0
4:2:0
-
-
-
-
-
288
lines/frame
-
-
30
4 Mbit/s
bitrate
475,14 Mbit
VbVBuffersize
4:2:0
Chroma Format
Base +
-
352
samples/line
frames/sec
30
20 Mbit/s
bitrate
Low
30
15 Mbit/s
samples/line
Enhancement 1 +
High
samples/line
Enhancement 1 +
lines/frame
Enhancement 2
frames/sec
-
-
-
bitrate
VbVBuffersize
Chroma Format
Verfasser: Holger Kärst
164
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Anhang C Optimale Einsatzmöglichkeiten für Fehlerverschleierungstechniken in MPEG2
Kategorie
Technik
Einsatzgebiete
Concealment
Temporal predictive concmt.
Substitution beschädigter,
bzw. verlorener Makroblöcke
durch Makroblöcke
benachbarter Bilder
In jedem Profil einsetzbar, gut geeignet für relativ
statische Videosequenzen (geringe Bewegung)
Abschätzung der
Bewegungsvektoren eines
beschädigten Bildes durch
Bewegungsvektoren
benachbarter Bilder.
In jedem Profil einsetzbar, verbesserte zeitliche
Fehlerverschleierung in Videosequenzen möglich, in
denen sich die Bildinhalte schnell verändern.
Concealment Motion Vector’s In jedem Profil einsetzbar, jedoch zusätzlicher
werden mit I-Picture kodiert
Overhead, höhere geforderte Rechenkapazitäten beim
und übertragen
Encoder und Decoder.
Spatial predictive
concealment
In jedem Profil einsetzbar, nicht gut geeignet für
statische Bilder mit hohen Kontrasten und vielen
verschiedenen
Bildelementen.
Gute
Einsatzmöglichkeit in Videosequenzen mit schnellen
Informations-veränderungen zwischen benachbarten
Bildern
verbesserte
Fehlerverschleierung durch
Data Partitioning
In keinem Profil benutzt, kann jedoch als Post-oder
Preprozessing eingesetzt werden. Gut geeignet bei der
Übertragung von Videosequenzen über verschieden
gestörte Kanäle.
Geringer Overhead und geringe zusätzliche geforderte
Rechenkapazität.
verbesserte
Fehlerverschleierung durch
SNR Scalability
Einsatz in den Profilen SNR SCALABLE,
SPATIALLY SCALABLE, und HIGH. Gut geeignet
für
die
Übertragung
von
Daten
der
Erweiterungsschicht in einem Kanal mit hoher
Fehlerrate oder zwischenzeitlichem Ausfall bei
paralleler Übertragung von Daten der Basisschicht in
einem störsicheren, zuverlässigen Kanal. Relativ
einfach zu implementieren.
verbesserte
Fehlerverschleierung durch
Spatial Scalability
Einsatz in den Profilen SNR SCALABLE,
SPATIALLY SCALABLE, und HIGH. Gut geeignet
für
die
Übertragung
von
Daten
der
Erweiterungsschicht in einem Kanal mit hoher
Fehlerrate oder zwischenzeitlichem Ausfall bei
paralleler Übertragung von Daten der Basisschicht in
einem störsicheren, zuverlässigen Kanal. Hohe
Komplexität bei der Implementierung, sehr
rechenintensiv.
Verfasser: Holger Kärst
165
Diplomarbeit
Kategorie
Spatial Localisation
Temporal Localisation
Inv.Nr.: 2004-11-03/096/IN99/2253
Technik
Einsatzgebiete
verbesserte
Fehlerverschleierung durch
Temporal Scalability
Gut geeignet für die Übertragung von Daten der
Erweiterungsschicht in einem Kanal mit hoher
Fehlerrate oder zwischenzeitlichem Ausfall bei
paralleler Übertragung von Daten der Basisschicht in
einem störsicheren, zuverlässigen Kanal.
kleinere Slices
In
jedem
Profil
einsetzbar.
Schnellere
Resynchronisation des Decoders möglich, jedoch
zusätzlicher Overhead durch häufigere Übertragung
von Sliceheadern.
Adaptive Slicelängen
In jedem Profil einsetzbar, Informationen über die
Transfercharakteristiken erforderlich, um Slicelängen
und damit Paketgrößen definieren zu können.
zusätzliche I-Picture
In jedem Profil einsetzbar, I-Picture sind aufgrund der
großen Datenmenge selbst sehr fehleranfällig bei der
Übertragung
Intra slices
In jedem Profil einsetzbar, Intra Slice’s sind weniger
fehleranfällig als I-Picture, aufgetretene Fehler werden
jedoch eine längere Zeit weiterpropagiert (mind. ein
Intervall von P-Picture)
Verfasser: Holger Kärst
166
Diplomarbeit
Anhang D
Inv.Nr.: 2004-11-03/096/IN99/2253
Beispiel für die Binäre Kodierung eines MPEG4-IOD
Headerfeld
InitialObjectDeskriptor tag
Deskriptor size
ObjectDeskriptorID
URL_Flag
includeInlineProfilesFlag
Reserved
Wert
2
81
1
0
0
15
Binäre Kodierung
0000 0010
0101 0001
0000 0000 01
0
0
1111
ODProfileLevelIndication
255 1111 1111
sceneProfileLevelIndication
audioProfileLevelIndication
255 1111 1111
1 0000 0001
visualProfileLevelIndication
255 1111 1111
graphicsProfileLevelIndication
ES_Deskriptor OD-Stream
ES_Deskriptor tag
Deskriptor size
ES_ID
streamDependenceFlag
URL_Flag
OCRstreamFlag
streamPriority
DecoderConfigDeskriptor
OD-Stream
DecoderConfigDeskriptor tag
Deskriptor size
objectTypeIndication
streamType
upStream
Reserved
bufferSizeDB
255 1111 1111
maxBitrate
avgBitrate
SLConfigDeskriptor OD
Stream
SLConfigDeskriptor tag
Deskriptor size
Verfasser: Holger Kärst
3
34
1
0
0
0
32
4
15
1
1
0
1
3000
0000 0011
0010 0010
0000 0000 0000 0001
0
0
0
11111
0000 0100
0000 1111
0000 0001
0000 01
0
1
0000 0000 0000 1011 1011 1000
0000 0000 0000 0000 0000 0000
0000 0000
0000 0000 0000 0000 0000 0000
0000 0000
Kommentar
keinem definierten Profil
zuzuordnen
keinem definierten Profil
zuzuordnen
AAC-Main Profile/Level
keinem definierten Profil
zuzuordnen
keinem definierten Profil
zuzuordnen
höchste Priorität
Typ: Systems
Typ: OD-Stream
0 =variable Bitrate
0 =variable Bitrate
6 0000 0110
19 0001 0011
167
Diplomarbeit
Headerfeld
Predefined
Use Access Unit Start Flag
Use Access Unit End Flag
Use Random Access Point
Flag
has Random Access Unit
Only Flag
Use Padding Flag
Use TimeStamps Flag
Use Idle Flag
Duration Flag
Inv.Nr.: 2004-11-03/096/IN99/2253
Wert Binäre Kodierung
0 (2) 0000 0000
1 1
1 1
0
0
1
0
0
90000
OCR Resolution
TimeStamp Length
OCR Length
AU-Length
instant Bitrate Length
degradation Priority Length
AU-Seq-Length
packet Seq Length
Reserved
ES_Deskriptor BIFS
ES_Deskriptor tag
Deskriptor size
ES_ID
StreamDependenceFlag
URL_Flag
OCRstreamFlag
StreamPriority
DecoderConfigDeskriptor
BIFS
DecoderConfigDeskriptor tag
Deskriptor size
ObjectTypeIndication
90000
32
32
12
0
0
32
0
3
MaxBitrate
AvgBitrate
Verfasser: Holger Kärst
0=Benutzerdefinierter SLPaket-Header
2=SL-Paket-Header für
MP4-Files
0 0
TimeStamp Resolution
StreamType
Upstream
Reserved
BufferSizeDB
Kommentar
0
0
1
0
0
0000 0000 0000 0001 0101 1111
1001 0000
0000 0000 0000 0001 0101 1111
1001 0000
0010 0000
0010 0000
0000 1100
0000 0000
0000
0010 0000
0000 0000
11
90KHz
90KHz
3 0000 0011
38 0010 0110
0000 0010
0 0
0 0
0 0
32 11111
4 0000 0100
19 0001 0011
1 0000 0001
3
0
1
100
0000 11
0
1
0000 0000 0000 0000 0110 0100
0000 0000 0000 0000 0000 0000
0000 0000
0000 0000 0000 0000 0000 0000
0000 0000
System:BIFS-Config
Typ: Scene Description
Stream
0=variable Bitrate
0=variable Bitrate
168
Diplomarbeit
Headerfeld
Decoder Specific
Deskriptor (BIFSConfig)
Decoder Specific Deskriptor
Tag
Deskriptor size
Inv.Nr.: 2004-11-03/096/IN99/2253
Wert Binäre Kodierung
5 0000 0101
4 0000 0100
NodeIDbits
3 00011
RouteIDbits
IsCommandStream
PixelMetric
3 00011
1 1
1 1
HasSize
SLConfigDeskriptor BIFS
SLConfigDeskriptor tag
Deskriptor size
0 0
Predefined
Use Access Unit Start Flag
Use Access Unit End Flag
Use Random Access Point
Flag
has Random Access Unit
Only Flag
Use Padding Flag
Use TimeStamps Flag
Use Idle Flag
Duration Flag
3-bit zur Identifikation der
Node ID => max 8 Nodes
3-bit zur Identifikation der
Route ID => max 8 Routes
keine Größe für die Szene
definiert
6 0000 0110
19 0001 0010
0 (2) 0000 0000
1 1
1 1
0=Benutzerdefinierter SLPaket-Header
2=SL-Paket-Header für
MP4-Files
0 0
0
0
1
0
0
TimeStamp Resolution
90000
OCR Resolution
TimeStamp Length
OCR Length
AU-Length
instant Bitrate Length
degradation Priority Length
AU-Seq-Length
packet Seq Length
Reserved
90000
32
32
12
0
0
32
0
3
Verfasser: Holger Kärst
Kommentar
0
0
1
0
0
0000 0000 0000 0001 0101 1111
1001 0000
0000 0000 0000 0001 0101 1111
1001 0000
0010 0000
0010 0000
0000 1100
0000 0000
0000
0010 0000
0000 0000
11
90KHz
90KHz
169
Diplomarbeit
Anhang E
Inv.Nr.: 2004-11-03/096/IN99/2253
DMIF-Funktionalität
Verfasser: Holger Kärst
170
Diplomarbeit
Anhang F
Inv.Nr.: 2004-11-03/096/IN99/2253
Beispiel einer vollständigen SDP-Präsentationsbeschreibung
Beschrieben wird eine Multimediasequenz, die nach dem MPEG4-System-Standard
kodiert wurde. Sie besteht aus zwei Elementarströmen. Das benutzerdefinierte Attribut
„a=mpeg4-iod“ definiert den Objekt-Deskriptor und die Szenenbeschreibung für die
MPEG4-Sequenz. Diese Information ist im Format BASE64 kodiert. Die Definition des
BASE64 Formats wird in [6] und [7] erläutert.
Die erste Media Level Description beschreibt einen Video-Elementarstrom. Der VideoElementarstrom ist im „Simple-Profile“ des MPEG4-Standards kodiert. Der Parameter
„Config“ im Attribut „a=fmtp“ in der Media Level Description des Video-Elementarstroms
Verfasser: Holger Kärst
171
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
enthält Konfigurationsinformationen für den Videodecoder (Sequenz-Header, VO-Header,
VOP-Header).
Die zweite Media Level Description beschreibt einen Audio-Elementarstrom. Dieser
Elementarstrom ist MPEG4-AAC-kodiert.
Beide Elementarströme werden mit Hilfe des Transportprotokolls RTP übertragen.
Verfasser: Holger Kärst
172
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
13. Literaturverzeichnis
[1]
RFC 3550 - RTP: A Transport Protocol for Real-Time Applications
[2]
RFC 3551 - RTP Profile for Audio and Video Conferences with Minimal Control
[3]
RFC 2326 - Real Time Streaming Protocol (RTSP)
[4]
RFC 2327 - SDP: Session Description Protocol
[5]
RFC 2279 - UTF-8, a transformation format of ISO 10646
[6]
RFC 1521 - MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms
for Specifying and Describing the Format of Internet Message Bodies (S. 21)
[7]
RFC 2045 - Multipurpose Internet Mail Extensions (MIME) Part One: Format of
Internet Message Bodies (S. 24)
[8]
RFC 2250 - RTP Payload Format for MPEG1/MPEG2 Video
[9]
RFC 3119 - A More Loss-Tolerant RTP Payload Format for MP3 Audio
[10]
RFC 3640 - RTP Payload Format for Transport of MPEG-4 Elementary Streams
[11]
RFC 3016 - RTP Payload Format for MPEG-4 Audio/Visual Streams
[12]
FKT „Fachzeitschrift für Fernsehen, Film und elektronische Medien“ 58.Jahrgang /
Ausgabe 5/2004 ISSN 1430-9947 Fachverlag Schiele & Schön GmbH Berlin
[13]
MPEG Video Compression Standard Joan L. Mitchel, William B. Pennebaker,
Chad E. Fogg, Didier J. LeGall 1997 Verleger: Chapman & Hall
[14]
MPEG2 John Watkinson 1999 ISBN: 0 240 51510 2 Verleger: Focal Press
[15]
IEEE J.Langham Thompson Prize / Electronics and Communication Engineering
Journal 1995
[16]
MPEG2-Standard Paper ISO/IEC 13818-2 Draft International Standard März 1994
[17]
The MPEG4 Book / Fernando Pereira und Touradj Ebrahimi / Verlag IMSC Press
Multimedia Series 2002
[18]
http://www.rhrk.uni-kl.de/MML/Anleitung/helix.unicasting.html
[19]
www.microsoft.com/windows2000/ en/server/help/ns_glossary_epcb.htm
[20]
www.microsoft.com/windows/ windowsmedia/technologies/services.aspx
[21]
http://developer.apple.com/darwin/projects/streaming/
[22]
http://developer.apple.com/darwin/projects/streaming/faq.html / Question: “What is
the Reflector, and how does it work?”
Verfasser: Holger Kärst
173
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
[23]
http://developer.apple.com/documentation/Darwin/Darwin.html
[24]
http://www.divx.com
[25]
http://www.xvid.org
[26]
http://www.doom9.org
[27]
http://www.mpegable.com
[28]
http://www.iis.fraunhofer.de/amm
[29]
http://sourceforge.net/projects/mpeg4ip/
[30]
ISO/IEC 11721-1:1991 (MPEG1-Systems)
[31]
ISO/IEC 11721-2:1991 (MPEG1-Visual)
[32]
ISO/IEC 11721-3:1991 (MPEG1-Audio)
[33]
ISO/IEC 13818-1:1994 Document N0801 (MPEG2-Systems)
[34]
ISO/IEC 13818-2:1995 (E) (MPEG2-Visual)
[35]
ISO/IEC 13818-3:1994 (MPEG2-Audio)
[36]
ISO/IEC 14496-1:2002 Document N4848 (MPEG4-Systems)
[37]
ISO/IEC 14496-2:2003 Document N5546 (MPEG4-Visual)
[38]
ISO/IEC 14496-3:2001 Document W3995 Subpart 1 (MPEG4-Audio)
[39]
ISO/IEC 14496-3:2001 Document W3995 Subpart 4 (MPEG4 - General Audio
Coding)
[40]
ISO/IEC 14496-8 FDIS Document N4427 (14496-Content over IP-Networks)
[41]
ISO/IEC 14496-10:2000 (E) Document W3713 (MPEG4-DMIF)
[42]
ISO/IEC 14496-14 FDIS :2003 Document W5298 (MP4-File Format)
[43]
Internet Streaming Media Alliance Implementation Specification Version 1.0 + 1.1
Corrigenda June 3, 2004 / www.isma.tv
Verfasser: Holger Kärst
174
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
14. Abkürzungen
AAC
Advanced Audio Coding
AAC-LC
Advanced Audio Coding – Low Complexity
ADPCM
Adaptive Differential Pulse Code Modulation
ARQ
Automatic Repeat on reQuest
AU
Access Unit
BAB
Binary Alpha Block
BSAC
Bit Sliced Arithmetic Coding
CAE
Context specific Arithmetic Encoding
CAT
Channel Association Tag
CCITT
Comitée Consultativ International Télégraphique et Telephonique
CELP
Code Excited Linear Prediction
CIF
Common Intermediat Format
CRC
Cyclic Redundancy Check
CTS
Composition Timestamp
DAI
Delivery Application Interface
DMIF
Delivery Multimedia Integration Framework
DNI
DMIF Network Interface
DPCM
Differential Pulse Code Modulation
DTS
Decoding Timestamp
EP
Error Protection
ES
Elementary Stream
ESC
Error Sensitivity Categories
ESD
Elementary Stream Deskriptor
FEC
Forward Error Correction
FGS
Fine Granularity Scalability
FIFO
First-in First-out
FTP
File Transfer Protocol
GOV
Group of Visual Object Planes
Verfasser: Holger Kärst
175
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
HCR
Huffman Codewort Reordering
HDTV
High Definition Television
HEC
Header Extension Code
HILN
Harmonic and Individual Lines and Noise
HVXC
Harmonic Vector Excitation Coding
IOD
Initial Objekt-Deskriptor
IPMP
Interoperable Protection of Multimedia Content
ITU
International Telecommunication Union
LSB
Lowest Significant Bit
MPEG
Moving Picture Expert Group
MSB
Most Significant Bit
OCI
Object Content Information
OCR
Object Clock Reference
OD
Objekt-Deskriptor
PCM
Pulse Code Modulation
PCR
Program Clock Reference
PES
Packetized Elementary Stream
PS
Programmstrom (MPEG2)
PTS
Presentation Timestamp
QCIF
Quarter Common Intermediat Format
RTP
Realtime Transmission Protocol
RTSP
Realtime Specification Protocol
RTT
Round Trip Time
RVLC
Reverse Variable Length Coding
SC
Synchronisation Layer
SCR
System Clock Reference
SDP
Stream Description Protocol
SLD
Session Level Description
SNR
Signal to Noise Ratio
SQCIF
Sub Quarter Common Intermediat Format
TAT
Transmux Association Tag
Verfasser: Holger Kärst
176
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
TCP
Transport Control Protocol
TRANSMUX
Transport Multiplexer
TS
Transportstrom (MPEG2)
TwinVQ
Transform Domain Weighted Interleave Vector Quantization
UDP
User Datagram Protocol
UEP
Unequal Error Protection
URL
Uniform Resource Locator
VLC
Variable Length Coding
VO
Visual Object
VOL
Visual Object Layer
VOP
Visual Object Plane
VOS
Visual Object Sequence
Verfasser: Holger Kärst
177
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
Thesen
1. Durch die skalierbare Kodierung multimedialer Daten ist eine flexible Anpassung von
Multimediasequenzen für die Übertragung in hochdynamischen Netzwerken mit
heterogenen Netzwerkknoten möglich, ohne eine Transkodierung der Multimediadaten
vornehmen zu müssen.
2. Skalierbar kodierte Multimediasequenzen lassen sich fehlerrobust, in Form von
mehreren, unabhängig übertragbaren Datenströmen im Netzwerk verteilen und beim
Dienstnutzer mit einer empfangenen Teilmenge der verteilten Datenströme korrekt
darstellen.
3. Der MPEG4-Standard erfüllt alle Anforderungen an ein geeignetes Kodierverfahren für
die Verteilung multimedialer Daten in hochdynamischen Netzwerken mit heterogenen
Endgeräten. MPEG4 ist deshalb als Kodierverfahren für den Einsatz im neuen
Multisource-Streaming-Ansatz auszuwählen.
4. Für die vollständige Realisierbarkeit des neuen Multisource-Streaming-Ansatzes wird
ein Gesamtsystem gefordert, dass skalierbar kodierte multimediale Daten bereitstellen
und wiedergeben kann. Es existieren jedoch aktuell keine Encoder, keine StreamServer und keine Decoder, die diese Anforderung erfüllen können.
5. Der neue Multisource-Streaming-Ansatz erlaubt einen kooperativen Verteilungsprozess
für multimediale Daten, sodass die entstehende Gesamtlast für die Bereitstellung und
die Auslieferung der Daten auf mehrere Netzwerkknoten verteilt wird.
6. Mit dem neu entwickelten Verteilungskonzept kann die Reichweite für die
Datenvermittlung durch Verkettung mehrerer Verteilerquellen vergrößert werden.
7. Mit dem Multisource-Streaming-Ansatz ist es möglich, Verbindungsabbrüche in einem
definierten Zeitraum vor dem Wiedergabeprozess zu verstecken, in dem in diesem
Zeitraum eine neue Verbindung zu einem anderen Diensterbringer aufgebaut wird.
8. Um auf Übertragungsfehler im hochdynamischen Netzwerk mit verlustbehafteten
Transportkanälen reagieren zu können, ist ein Puffer an jeder Verteilerquelle des
Netzwerks erforderlich. Mit diesem Puffer müssen Jitter ausgeglichen und die
eintreffenden Daten sortiert werden.
9. Durch das Zwischenspeichern der multimedialen Daten an jeder Verteilerquelle sowie
durch den Verteilungsprozess akkumulieren sich Verzögerungszeiten, sodass die
Aktualität der verteilten Multimediasequenz mit zunehmender Entfernung von ihrem
Ursprung immer weiter abnimmt.
Verfasser: Holger Kärst
179
Diplomarbeit
Inv.Nr.: 2004-11-03/096/IN99/2253
10. Mit der Verkettung von mehreren Verteilerquellen können kürzere Punkt-zu-PunktVerbindungen im Netzwerk realisiert werden, wodurch die Fehlerhäufigkeit gesenkt
werden kann. Da die Stärke von Funksignalen quadratisch mit zunehmender
Entfernung abnimmt, ist die Fehlerhäufigkeit bei kurzen Punkt-zu-Punkt-Verbindungen
geringer als bei langen Verbindungswegen.
11. Bei der Übertragung großer visueller Datenelemente, die über mehrere
Transportdateneinheiten verteilt wurden, treten die häufigsten Datenverluste auf. Die
Transportdateneinheiten besitzen die gleiche Zeitrelevanz und müssen somit zum
gleichen Zeitpunkt übertragen werden. Für diesen Augenblick übersteigt die Datenrate
die verfügbare Transportkapazität des Netzwerks bzw. die CPU des Versenders kann
den Versandprozess nicht schnell genug abarbeiten.
_____________________
__________________
_____________________
Ort
Datum
Unterschrift
Verfasser: Holger Kärst
180
Eidesstattliche Erklärung
Ich versichere an Eides statt, die von mir vorgelegte Arbeit selbständig verfasst zu haben.
Alle Stellen, die wörtlich oder sinngemäß aus veröffentlichten oder nicht veröffentlichten
Arbeiten Anderer entnommen sind, habe ich kenntlich gemacht. Sämtliche Quellen und
Hilfsmittel, die ich für die Arbeit benutzt habe, sind angegeben. Die Arbeit hat mit
gleichem Inhalt bzw. in wesentlichen Teilen noch keiner anderen Prüfungsbehörde
vorgelegen.
_____________________
__________________
_____________________
Ort
Datum
Unterschrift