The following is my wish list for Flash Player 11. Â My agenda is making my job easier, and making the job of those who need to work with me, such as designers & middle-tier developers, easier. Â Additionally, I’d like to do things I couldn’t do in the past, or had to “fake” in the past.
Flash Player Core Features
- Lower Level Access to Video/Audio
- Alchemy Optimizations
What:Â I’d like the ability to spawn a new process/thread that I can perform data operations on. Â This thread should not have the capability to lock up the Flash Player, nor interfere with animation.
Why: I had a project where I was visually showing lots of data using charts and images. Â I had to do a lot of pre-processing on the data first. Â Doing this via green threads was really hard to architect and test.
How:Â Currently, the only way to do this is to utilize Hydra & Pixel Bender, and off-load to the GPU. Â That way is too hard. Â I do not mind if I’m limited to only process non-DisplayList data within this process/thread, as long as I get an event later to know what it is available, similar to how ShaderJob.start works.
2. Lower Level Access to Video/Audio
What: I’d like byte level access to NetStream. Â I want to be able to extract bytes from a stream as well as inject bytes into it.
Why: I have many video projects where NetStream breaks, and I need to fix it. Â Additionally, I have many cool video scrubbing, pausing, and DVD like controls I’d like to do that I currently cannot. Â Silverlight can do some of this (see Netflix.com’s Silverlight player – if you can’t, basically during scrubbing it’ll show a few frames ahead and behind really quickly). Â I cannot scrub frame by frame without playing the video back first, recording each frame into a BitmapData object, and then showing them. Â Finally, I have video projects that do unorthodox things with FLV files. Â The FLV/F4V container itself has a lot of fun things you can do with it (custom callbacks, metadata, etc), but it’s challenging to use these custom changes using just NetStream.client and callbacks.
How: The Sound sample data event Â is a start, but I need 2 way access. Â So, not just injecting ByteArray data, but also extracting.
3. Alchemy Optimizations
What: Alchemy allows you to run C and C++ compiled code targetted at the Flash Player. Â The point is to leverage speed gains that you cannot get with ActionScript alone. Â I want those speed gains using just ActionScript.
Why: I shouldn’t have to learn C or C++ to obtain this immense speed gains when many smart individuals claim that if time was spent optimizing mxmlc, we could get many of these speed gains in ActionScript.
How: I don’t care how you do it, I just don’t want to have to immensely change my workflow. Â If my compilation has an extra flag that takes longer to compile for a production build, fine.