Flash 9 API Review
Mike Melanson has posted a list of the API’s/libraries that they are using in the development version of Flash 9. Hopefully this content does not get swatted out of existence by the powers that be at Macradobe.
From the [blog entry][apireview]:
- General graphics: X11
- GUI elements (dialog boxes): GTK
- Audio I/O: ALSA
- Camera input: Video4Linux, API version 1
- Threads: POSIX threads
- non-HTTP Networking: BSD sockets
- SSL: OpenSSL
- IME: you know what? I don’t think we’ve settled on this one yet…
So far everything looks good. I really have to wonder what API’s they are having trouble getting to work together. It seems that most of these API’s should work together nicely. As pointed out in my previous posting, it seems that it was just a nasty side-effect of choosing a source-based Linux distribution as their development platform. The comments from Tinic Uro (another “Adobe Insider”) offer insights into what they are dealing with.
Apparently, they want to maintain backward compatibility so as a result, they cannot use Cairo for rendering vector-based graphics. It would be interesting to see if they come up with their own vector-rendering library and release it as open source.
Using GTK instead of GTK2 and V4L instead of the more recent V4L2 is a bad idea. Those API’s are ancient (GTK) and soon to be deprecated (V4L) in favor of newer versions. Also questionable is their direct use of the ALSA API’s when they can use an abstraction library such as:
- OpenAL – provides 3D sound stuff, released under LGPL
- PortAudio – portable audio capture and playback, released under LGPL (I use this in one of my projects)
- Libsndfile – provides playback for multiple audio formats, released under LGPL (I also use this in conjuction with portaudio)
As for sockets programming, there are plenty of good abstraction libraries out there. Since they are using GTK, they might as well use its companion library GLib which provides a socket abstraction layer.
For IME, SCIM is pretty much standard for most distributions these days. On Ubuntu, this is the default input method. Plus it’s not as if there are a lot of input method libraries to choose from.
From the looks of things, all the dependencies needed to run the new Flash player seems to be pretty standard on today’s Linux distros.
[apireview]: http://blogs.adobe.com/penguin.swf/2006/07/api_review.html “Penguin.SWF: API Review”
