Wish List for Flash Player 11

Wish List for Flash Player 11

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

  1. Multi-Threading
  2. Lower Level Access to Video/Audio
  3. Alchemy Optimizations

1. Multi-Threading

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.

17 Responses

  1. Hey Jesse,

    Are you aware of the Sound.extract() function? It does exactly what you seem to be wishing for in terms of “reading” a stream of sound from a Sound class instance.

    I’m not sure whether I’m understanding your wish correctly, though, but here’s a link to the method in the ASLR:
    http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/media/Sound.html#extract%28%29

    Cheers
    /R

  2. You can also get super-speed using haXe:

    http://ncannasse.fr/blog/virtual_memory_api

    It’s kind of funny that none of the 2 methods to get super-speed are official.

  3. jun

    Why not a global catch exception ?

    The others are for me in the wish list.

  4. @Richard I know about Sound.extract, but he doesn’t do NetStream video data.

    @jun Global exception handling would be huge for the existing programmers who think it’s bad that Flash Player doens’t have it. For me, while it’s frustrating and I would like it, there are only a few I can’t catch. Mainly, though, Macromedia/Adobe typically wants you to prioritize your feature requests. They make you do the work in knowing what you want, and what you believe is important. There are 10 billion other things I want, but those are the big 3 that I feel the community needs.

  5. Hi Jesse,
    That’s a great and well documented wish list. Better than I could have said it and, FWIW, I completely agree.
    Cheers,
    -Brian

  6. 4. SEO improvements?

    I know about tools like swfaddress but I think it good be great to have a built in solution.

    The same way new properties were added with the flash player 10 ( z, rotationZ, … ) why not to make searchable label and text properties for the crawlers. Or maybe adding a property to text components called metatags with main tags?

    What do you think?

  7. I build applications that A) are behind the firewall or B) are in an existing larger HTML website. I don’t build full Flash sites anymore. Using SWFAddress like you said, SEO friendly HTML genning such as Gaia does, and the work Adobe has already done working with the search engines on their headless player, I fail to see what else is needed. I’m pretty sure the headless player gives more than enough context for search engines to use, and if you look at Adobe & industry blogs, there is enough evidence traditional models + the new endeavors are in fact working.

    I’m not an SEO expert, though. Regardless, I feel those 3 are more important than additional development into SEO. Searchability is the future for sure, but I’d prefer to have a better app that I struggle to market vs. one that is easy to find but isn’t that great. I know it’s not as black and white as that, but you know what I mean.

  8. mloncaric

    AS should have class destructors (at least), and something (like delete, but for sealed objects) to trigger them, because it’s impossible to clean the mess thats produced after some period of time. Or at least something like “release” / “autorelease” in Obj – C.
    I’d like to use C++ instead of AS (which I don’t think will happen anytime soon), because, really, AS is useless compared to C++ – lack of overloading, generics, pointers, threads (even Ruby have them!!), multiple inheritance, better OO concept, etc.

    I’m loosing my patience so if Adobe won’t change AS anytime soon I think it will be the time to find something “better”, maybe C# which is really nice :).

  9. @mloncaric Man, harsh! I specifically wrote this about Flash Player features, and not about the ActionScript language. However, it’s only natural (currently) to see the 2 intermingled. Growing up with things like Lingo, JavaScript, and pre-ActionScript 1, AS3 to me is wonderful. While my expectations are low, I would very much like the suggestions others are making as well as some of things I saw in the now defunct ECMAScript 4 proposal.

  10. Just a detail but I think that Pixel Bender is not run on the GPU but on the CPU in Flash: http://www.kaourantin.net/2008/05/adobe-pixel-bender-in-flash-player-10.html

  11. @Marc Yes, but using GPU in your wmode does benefit games/apps that need them, and there IS a software renderer GPU. Most importantly, it IS another thread that doesn’t lock up the main one.

    The main reason cited is that they couldn’t get a consistent rendering experience, hence using a software GPU as the base being a great idea. When they do, code will be forward compatible.

  12. Jesse-

    It’s nice list. Yesterday, I was thinking about low-level Video API, as you described. Nice to see, you already mentioned.

  13. JTtheGeek

    Global exception handling / management would be nice, but It hurts to even ask for this, since we should have had it 6+ years ago…. And call me crazy, but I really think the flash IDE should be upgraded to allow for auto generated code-behind partials and auto even t wiring like asp.net. I know that’s an IDE feature and not the player, but hey I can dream!

  14. MIDI Man

    if I could only make one request:

    MIDI! MIDI! MIDI! MIDI!

    Sheesh, even Director has MIDI support (albeit via pugins).

    I can’t imagine it would be the most difficult thing to implement, seeing how it’s a fairly basic standard, over 25 years old now.

  15. [...] that Google’s V8 is faster than ActionScript which in his view is ridiculous. Jesse Warden also complains about performance and asks for the performance gains from the amazing Alchemy (which compiles C/C++ to ActionScript) [...]

  16. To tell you the truth, I could make do 1 more year if they fixed some of the more longstanding annoying bugs that are in the Bugbase first. Maybe if they followed apples lead and just cleared bugs and went for performance++ for just one release :)

  17. Gabriela

    I’d like streaming of live content over RTSP/RTP

  18. Alex Rosano

    I agree on all points. Multi-threading would make flash much more competitive.