# Level of Conformance

Gnash is a capable of reading up to SWF v9 files and opcodes, but primarily supports SWF v7, with better SWF v8 and v9 support under heavy developement. Since the 0.8.2 release, Gnash includes initial parser support for SWF v8 and v9. Not all ActionScript 2 classes are implemented yet, but all of the most heavily used ones are. Many ActionScript 2 classes are partially implemented; there is support for all of the commonly used methods of each class.

As ActionsScript 3 is a more developed version of ActionScript 2, many of the same classes work for both. Support has been added to Gnash's ActionScript library to support the new ActionScript 3 filters, which get applied to every class. Implementing ActionScript classes is often the easiest way for new Gnash developers to make a contribution without a deep internal knowledge of Gnash.

Gnash has included video support since early 2007, but this is an ever changing field of reverse engineering. Many of the popular video sharing sites use SWF v8 or v9, which Gnash supports imperfectly. This is improving all the time, so often builds from a development snapshot will work when using the older release packaged in your distribution doesn't. You can find daily snapshots of the latest CVS tree at: http://www.gnashdev.org/dev_snapshots.

Gnash uses FFmpeg for codecs, so any file supported by Mplayer should work with Gnash. Gnash supports the loading of patent free codecs like Ogg Vorbis or Theora from disk based files, while work is being done to support these codecs when embedded in a SWF file. FFmpeg contains the codecs used by the current SWF definition, FLV, VP6 (ON2), H.263, H.264, and MP3.

This is a quick list of what is currently implemented in Gnash as of May, 2008.

Class Name | When Added | Conformance
--- | --- | ---
_global |  | Partially implemented.
Accessibility | swf v7 ??? | Unimplemented.
Array | swf v6 | Fully Implemented.
Boolean | swf v5 | Fully implemented.
Button | swf v6 | Most of the functionality is implemented.
Camera | swf v6 | Unimplemented.
Color | swf v5 | Partially Implemented.
ContextMenu | swf v7 | Unimplemented.
CustomActions | swf v6 | Unimplemented.
Date | swf v5 | Fully implemented.
Error | swf v7 | Unimplemented.
Function | swf v6 | Fully implemented..
Implements | swf v6 | Fully implemented.
Key | swf v6 | Fully implemented.
LoadVars | swf v6 | Fully implemented.
LocalConnection | swf v6 | Partially implemented.
Math | swf v4 | Fully implemented.
Microphone | swf v6 | Unimplemented.
Mouse | swf v5 | Most of the functionality is implemented.
MovieClip | swf v3 | Partially implemented.
MovieClipLoader | swf v7 | Barely implemented.
NetConnection | swf v7 | Fully implemented.
NetStream | swf v7 | Partially implemented.
Number | swf v5 | Fully implemented.
Object | swf v5 | Fully implemented.
Selection | swf v5 | Unimplemented.
SharedObject | swf v6 | Fully implemented.
Sound | swf v5 | Partially implemented.
Stage | swf v6 | Partially implemented.
String | swf v5 | Partially implemented.
System | swf v6 | Partially implemented.
TextField | swf v6 | Partially implemented.
TextFormat | swf v6 | Partially implemented.
Video | swf v6 | Partially implemented.
XML | swf v5 | Fully implemented.
XMLNode | swf v5 | Fully implemented.
XMLSocket | swf v5 | Fully implemented.