1 comment

[ 0.20 ms ] story [ 13.2 ms ] thread
It's interesting how Adobe's excuses have been shifting since Apple kicked Flash criticism in to high gear.

A year ago, they were complaining that they needed low-level access to GPU decoding engines in order to make Flash play videos with acceptable CPU load. Apple gave them exactly the API they asked for, and Flash performance on OS X still sucked, especially for people who didn't have one of the supported GPUs.

They've mostly settled now on the excuse being that Flash has to do color-space conversions and compositing on the CPU, though this post adds the extra apologetic twist that they never intended Flash to become the standard way of delivering streaming video over the web.

The compositing excuse strikes me as pure bullshit, because a Flash video that is playing with no non-video elements overlaid and doesn't have input focus still eats up too much CPU, despite the compositing stage being a no-op.

The YUV to RGB conversion is obviously not complicated enough to make much difference to the CPU load, because standalone players that do all the decoding and color space conversions in software easily achieve less than 1/5 the CPU load of Flash, and the actual decoding has got to be at least 70% of that work.

Last spring, we were told that Flash's inefficiencies were partly due to browser plugin APIs being poorly suited to the task. There has been no intervening revolution in such APIs, so that can't be the source of the new improvements enabled by this StageVideo feature.

The only documentation that seems to be available at the moment for StageVideo is a flash video tutorial, and the text in that video uses subpixel rendering with the opposite subpixel ordering from my monitor, so I can't read it without getting a headache. That said, it appears that this StageVideo feature requires the flash object to be modified, so it won't provide any immediate real-world benefits, and it requires the flash designer to code in the fallback rendering path for people who don't have the right kind of GPU.

Meanwhile, OS X still has an API for playing videos that will automatically decide whether to use hardware-accelerated decoding, and an OpenGL-backed vector graphics API that can handle all the compositing needs for Flash. These APIs have broader hardware support than StageVideo.

One gets the feeling that Adobe doesn't want to fix any of the suck, just to move past it.