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.