Gnash

From OLPC
Jump to: navigation, search

Gnash is a GNU Flash movie player and as a plugin to Browse is the default Flash player on the XO. It is the free software counterpart to the Adobe Flash player.

About Flash

Wikipedia has a good overview of the various Flash technologies. Flash animations and games typically have the .swf extension, while Flash videos typically use the .flv extension. Flash technologies include the ActionScript virtual machine, as well as many proprietary codecs that are covered by patents.

Differences between Gnash (XO) and Adobe Flash

Many flash applications and movies that work with Adobe Flash will not work on the XO. This can be frustrating due to the large and growing base of animations, tutors, and other content available for Flash. These include:

The Gnash team faces several challenges. The primary challenge is the number of basic encoding schemes, such as MP3, that are covered by patents. While Gnash supports these proprietary codecs, the OLPC cannot or will not ship codecs to support the proprietary schemes. As such, the version of Gnash that ships with the OLPC XO-1 has no sound playback by default. Another challenge is that Adobe had not provided full information about SWF files, though a recent Stanford class and contributions to Mozilla's Tamarin project points towards some additional openness.

Note that SWF files continue to evolve. While Gnash provides good support for SWF version 7, support for later version is more challenging. Gnash emulates Adobe Flash's Actionscript Virtual Machine 1 (AVM1 - used by Actionscript 1.0 and 2.0), but not Actionscript Virtual Machine 2 (AVM2) and thus cannot play Flash 9 & 10 content that has been authored in Actionscript 3.0. Finally, Gnash depends on a number of rapidly evolving libraries, such as Gstreamer which hamper stability.

The easiest way to get Flash to work with Gnash is to get developers of the Flash content to test with Gnash. See also Game Development with Flash on the XO-1.

No sound in Gnash

Gnash requires additional software libraries for GStreamer to play sounds in .swf files (<trac>8504</trac>). The relevant software has patent encumbrances, see Restricted formats. The issue persists in release 10.1.2.

It is possible to install packages containing the needed software using yum or rpm; the Talk:Gnash page has steps that have worked for users. In release 8.2.0 the task is made more complicated because it uses an earlier version of GStreamer.

Gnash bugs

Gnash 0.8.3 (ships with release 8.2.0)

[[Click to play]] is invisible

Unlike the Adobe Flash Player, Gnash doesn't immediately play Flash content (this is a feature). You need to click its "[[Click to play]]" text. But this text is often invisible when the mouse cursor is inside the Flash movie.

Other issues

  • If sound is enabled, there are some sound incompatibility bugs when playing Flash 7 or 8 content
  • Looping background sound in Flash Lite 2.0 (which is based on Flash 7) content plays back incorrectly. It breaks up with a lot of noise & hissing, and the volume levels change throughout sound playback.
  • The onSoundComplete event does not seem to fire properly - thus sound that is looped using onSoundComplete as a trigger to start looping again will only play once and will not loop.

Gnash 0.8.2 (ships with release 8.1.2 (build 711))

  • _x, _y & _rotation problems when rendering fonts
  • If sound is enabled, there are some sound incompatibility bugs when compared to Flash 7 & 8.

Shipping Adobe Flash controversy

Adobe provides Flash under a free, but somewhat restrictive license. Adobe's license clearly restricts any party besides Adobe from making Flash libraries available on the Internet, and may make it possible to distribute within an Intranet. Some, such as Bryan Berry, have speculated that providing Flash plug-ins as downloads in certain deployments would further the educational goals of the overall project.

Other voices suggest that providing more incentives, better tools, and more complete implementations for Flash developers may help them to embrace open formats. There is some undesirability of a long term dependence on a commercial entity for core functionality or core file formats.

Example videos

Playable in Gnash on the XO

Playable on the XO using neither Gnash nor Flash

Not playable in Gnash on the XO

Upgrading Gnash

Enabling and disabling Gnash

You can uninstall or reinstall Gnash as you would any package: from the Terminal Activity, sudo yum remove gnash -y or sudo yum install gnash -y After which you will want to reboot.

Development builds

There are rpms of later Gnash versions at http://www.getgnash.org. Version 8.5 adds XVideo support, just add et XVideo true to your $HOME/.gnashrc file. Some of these builds dynamically link ffmpeg to avoid problems with the non-standard GStreamer in 8.2.x releases. See mailing list message.

Links