See a YouTube video of Gnash running on a cortex-A8 board (courtesy of Daniel Amor Martin).
The news that the BBC has started "encrypting" its RTMP streams came, in one of those coincidences, just as I'd decided to work on adding RTMP support to Gnash. So even when Gnash's RTMP video streaming works, it will still be legally difficult, if not impossible, for licence fee payers who care about software freedom to use the BBC's iPlayer.
Gnash will certainly be better in six months for our next release. It already has one major new feature - LocalConnection support - and RTMP video streaming is also planned.
But as Gnash is currently unfunded, many important features that could easily be added will be left out.
Here is an incomplete list of things that I can improve or newly implement in Gnash in a relatively short space of time (between 1 and 4 weeks):
- Reliable text handling (HTML text, text formatting, positioning etc). Currently this is not correct and fails in many cases.
- BitmapData functions. Rendering to an internal buffer for use in ActionScript. This is used for image handling in many SWF8 movies.
- RTMP. A basic implementation for video streaming and remoting should be ready for 0.8.8. But ironing out bugs and getting a really high-quality implementation will take longer.
Improvements and features in Gnash since the last release are:
- Automatic and spontaneous screenshots in all GUIs.
- Significant memory savings in ActionScript execution.
- Non-blocking load of bitmaps and movies.
This week I implemented the LocalConnection ActionScript class in Gnash. It is too late for Gnash 0.8.7, which should be released imminently. But the six months of testing before the next release are certainly a good thing where this code is concerned.
LocalConnection allows the player to communicate with other players or instances using shared memory. It is even used for communication between AS2 and AS3 loaded in the same SWF, since they can't otherwise talk to each other.
The next version of Gnash has the ability to save screenshots in PNG format. You can either do this through a GUI (Ctrl-O) or by specifying frames on the command line. For the command line, there are two new options:
I've taken advantage of Gnash's new screenshot ability and made some screenshots of various movies running in what will become Gnash 0.8.7. See the screenshots here.
Since SWF6 it has been possible to generate gradient fills dynamically using ActionScript. Version 0.8.7 of Gnash will have support for these gradients.
The attached screenshot shows them working in Gnash, or see the original code and SWF.
SWF8 added more options to gradient fills. Gnash 0.8.7 does not support these, but it would be possible to add some or all of that support. If you are interested in having this functionality, please contact me!
Gnash 0.8.7 comes with memory optimized XML parsing and much improved compatibility.
The XML and XMLNode classes in ActionScript 2 enable parsing and handling of XML trees. Mostly they are used for configuration data or bits of dynamically loaded content. But sometimes - one example is openstreetmap.org's "potlatch" editor - the XML can have thousands of nodes.
Even a simple XML tree with so many nodes has significant memory requirements. We have to store not only the node type, node value and, if appropriate, the node content and attributes, but also links to parent and child nodes.