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