prev up next


Das Shockwave Flash (SWF) Dateiformat

Um dem Gebrauch im World Wide Web zu genügen und eine ausreichende Funktionalität und Designmöglichkeit zu bieten, muß das SWF-Format unterschiedliche Anforderungen erfüllen.
Im wesentlichen gibt es sieben Punkte, die das SWF-Format von Macromedia entscheidend prägen [Oswf2001]:
1. Bildschirmdarstellung
Das SWF Format ist in erster Linie für die Bildschirmdarstellung optimiert. Deshalb werden Antialiasing3, schnelles Rendern4 und Animationen unterstützt.
2. Erweiterbarkeit
Da das SWF-Format tagbasiert ist, können ohne weiteres neue Tags mit neuen Features hinzugefügt werden.
3. Netzwerkübertragung
Die Dateien sollen auch bei stark limitierter oder schwankender Bandbreite gut übertragbar sein. Daher ist das SWF Format komprimiert und durch den Aufbau wird die Streambarkeit der Datei gewährleistet.
4. Einfachheit
Durch die Einfachheit des SWF-Formates kann der Flash Player sehr klein gehalten und dadurch einfach auf verschiedene Betriebssysteme portiert werden. Zusätzlich wird so erreicht, daß der Flash Player nur wenige systemspezifische Operationen durchführen muß.
5. Dateiunabhängigkeit
Alle nötigen Informationen werden platzsparend in der Flashdatei untergebracht, so daß keine weiteren externen Dateiabhängigkeiten entstehen.
6. Skalierungsfähigkeit
Da Flashfilme auf den unterschiedlichsten Rechnern betrachtet werden, ist es wichtig, daß verschiedene Monitorauflösungen oder Farbanzahlen sowie unterschiedliche Rechnerleistung berücksichtigt werden.
7. Geschwindigkeit
Das SWF Format ist so aufgebaut, daß die Filme schnell gerendert werden können.
Es wurde bereits erwähnt, daß das SWF Dateiformat ein tagbasiertes Binärformat ist. Das SWF Dateiformat ist in einzelne Datenblöcke eingeteilt, die Tag, bzw. Record genannt werden. Tags sind einzelne Objekte, die durch Records näher spezifiziert werden. Records enthalten also alle notwendigen Attribute für ein Tag. Tags kennt man üblicherweise von HTML oder der Extensible Markup Language (XML). Einzelne Codes leiten einen Abschnitt mit einer bestimmten Bedeutung ein und gegebenenfalls gibt es einen Code für das Ende eines Tags.
In SWF werden zwei grundlegende Arten von Tags unterschieden. Zum einen gibt es Definitionstags und zum anderen Kontrolltags. Definitionstags dienen der Erstellung von Objekten, so können z.B. Kreise, Polygone, Sound oder ähnliches angelegt werden. Mit den Kontrolltags können die vorher definierten Objekte manipuliert werden, z.B. können Objekte in ihrer Position, Größe oder Farbe verändert, Sounds gesteuert oder Framewechsel vorgenommen werden. Hierbei ist es besonders wichtig, daß ein Control Tag sich stets auf ein vorher definiertes Objekt bezieht, da sonst die Streambarkeit nicht mehr gewährleistet wäre. Die Tagstruktur bietet außerdem den Vorteil, daß das Dateiformat ohne Probleme erweitert werden kann. Sollte sich herausstellen, daß ein bestimmtes Objekt oder eine neue Transformation in den Standard aufgenommen werden soll, wird einfach ein neues Tag zu den bereits bestehenden hinzugefügt. Dieser Vorgang wird bei den verschiedenen Flash Versionen deutlich. Es wurden stets weitere Tags hinzugefügt und die alten Tags blieben bestehen, wodurch eine bedingte Abwärtskompatibilität erreicht wurde. Ein Flash Player der Version vier kann einen Film im Flash 5 Format einlesen und wiedergeben, da unbekannte Tags einfach übersprungen werden, dies ist aber nicht immer erfolgreich. Werden wesentliche Filmbestandteile dabei übersprungen, kann es im schlimmsten Fall zu einem Absturz des Flash Players kommen. Dies tritt vor allem dann ein, wenn in den Film Flash 5 spezifische Script Elemente eingebunden werden und ein derartiger Film mit einem älteren Flash Player betrachtet wird.
Es wurde bereits erwähnt, daß das SWF Format ein komprimiertes Binärformat ist. In SWF werden im wesentlichen die folgenden sechs verschiedenen Strategien angewandt:
1. Wiederverwendung:
Jedes Objekt erhält innerhalb eines Filmes eine eindeutige 16 Bit lange numerische ID, anhand derer es referenziert werden kann. So ist es möglich, daß ein Objekt einmal definiert wird, aber mehrmals in dem Flashfilm referenziert werden kann. Sollen in einem Film drei Quadrate erscheinen, wird nur einmal ein Quadrat definiert und die anderen zwei werden durch einen Verweis auf das erste erstellt. Zusätzlich können verschiedene Farbänderungen oder Transformationen angewandt werden. Dadurch erspart man sich den Speicherplatz für das mehrmalige Definieren eines Objektes.
2. Komprimierung:
Die Inhalte der Tags sind komprimiert. Shapes5 werden mit einem effizienten delta encoding scheme, bei dem nur relative Änderungen abgespeichert werden und nicht die absoluten Werte, komprimiert. Bitmaps werden mit dem JPEG Algorithmus und Sounds mit verschiedenen Leveln der Adaptive Differential Pulse Code Modulation (ADPCM)6 Kompression verkleinert.
3. Bit Verdichtung:
Wenn möglich werden Zahlen in der kleinst möglichen Anzahl von Bits abgelegt. So werden z.B. Koordinaten in Feldern variabler Länge gehalten, wobei die Länge durch wenige Bits codiert wird.
4. Standardwerte:
Einige Strukturen, wie z.B. Matrizen oder Farbtransformationen, enthalten Matrixelemente, welche häufiger benötigt werden als andere. Ein Beispiel: Betrachtet man eine Transformationsmatrix, so sind die bedeutendsten Felder die Translationsfelder7. Skalierungen und Rotationen sind weit seltener nötig. Falls ein Skalierungs- oder Rotationsfeld nicht vorhanden ist wird davon ausgegangen, daß die Skalierung 100% und die Rotation null Grad beträgt.
5. Änderungskodierung:
In SWF werden lediglich die relativen Änderungen zwischen einzelnen Bildern abgespeichert. Ändert sich ein Objekt von einem Frame zum nächsten nicht, werden keine Informationen für dieses Objekt benötigt. Nur wenn sich die Lage, Farbe oder Größe ändern werden entsprechende Tags in dieses Frame übernommen.
6. Shape-Datenstruktur:
Die Datenstruktur verschiedener Shapes (Kreise, Polygone, etc.) wird sehr einheitlich gehalten, so daß für verschiedene Shapes die gleiche Datenbasis gewählt werden kann. Dies minimiert die Anzahl verschiedener Shapestrukturen, was aber keine Einschränkung bezüglich der Vielfalt der grafischen Objekte nach sich zieht, und erleichtert damit das Rendern. Zusätzlich bewirkt diese Struktur, daß Shapes platzsparender codiert werden können.
Diese sechs Punkte bewirken eine starke Reduzierung der Dateigröße. Es muß aber beachtet werden, daß keine generelle Komprimierung der gesamten Datei vorgenommen wird. Die Komprimierung bezieht sich immer nur auf einzelne Tags. Dies ermöglicht, daß der Flash Player die Datei direkt verarbeiten kann, ohne erst eine Dekomprimierung vorzunehmen, wodurch ein Geschwindigkeitsvorteil erzielt wird. Bitmaps oder Sounds können je nach Bedarf dekomprimiert werden.
Das Dateiformat ist aber nicht nur so angelegt, daß es besonders platzsparend ist, sondern es wurde auch für eine hochwertige Darstellungsqualität optimiert. Das SWF Koordinatensystem wurde so definiert, daß eine Einheit 1/1440 inch entspricht. Wenn man ein typisches Wiedergabegerät mit 72dpi8 betrachtet, wäre dies äquivalent zu einem zwanzigstel Pixel. Eine derartige Einheit wird TWIP genannt. Wird ein Flashfilm in der höchsten Zoomstufe wiedergegeben entspricht ein TWIP genau einem Pixel. Durch die Wahl dieser Einheit ist es möglich eine hohe Auflösung beim Hineinzoomen zu erreichen und Objekte genau zu platzieren.


Unterabschnitte
prev up next