Ustream, Flash Player Hardware Acceleration Part 2
I wrote a while back about my/our ongoing struggles trying to figure out what was causing some Ustream videos to be jittery only on Macbook laptops. At the time I posted this, we had figured out what encoding settings could recreate the jitter and that the root cause was when hardware acceleration kicked in to assist with the H.264 decoding on the macbooks, something wasn’t working right. I just chalked this up to apple/flash unfriendliness.
I had the chance to test and evaluate a Digital Rapids Touchstream encoder a few weeks ago. The first thing I learned is that Digital Rapids has their own?* AVC(H.264) codec on the Touchstream called DRAVC for Web. There was something noticeably different about the video, compared to the FMLE and Ustream Producer streams at which I spend so many hours staring. I can’t necessarily say it was better or worse or describe what exactly was different, but there was a tangible difference in the look of the video. It had a similar UI to the Kulabyte software, where all of your encoding configuration is done within a separate preset-maker application. I guess I understand it, but I’m not a big fan of that setup.
After having success streaming with a low-res test preset, I decided to push the frame size and bit rate a bit. To my dismay, the video would not load on my macbook, but played fine on my windows machine. I send out a call on Yammer for people to check out the stream and report back with their OS and browser and whether or not the video loaded. The results came trickling in and it seemed most people on macs just had a player constantly trying to load and never saw the video. All but 1 person on a windows computer could see the video without issue or incident. Having dealt with the mysterious mac jittery issue, I tried disabling the hardware acceleration and the video immediately played upon refresh. So when the decoding was left up to the Flash Player software, the video played perfectly, but with acceleration enabled, the graphics card in my macbook(NVIDIA GeForce 320M) was unable to decode the video that had been encoded using the DRAVC codec.
I spoke with my contacts at Digital Rapids and they said they were aware of the issue and that it had only recently started happening on Macbook laptops. I went back to my coworker who had been unable to see the video on his windows laptop and it turned out his PC had an NVIDIA graphics card, and disabling FP hardware acceleration solved his issue as well.
All of this made me reevaluate my previous conclusion that the jittery video was an issue between apple and flash. It seemed to be more of an issue with H.264 decoding and NVIDIA, considering we had now observed 2 distinct decoding failures from different encoding implementations. Coincidentally, in the 2 weeks I had the Touchstream and figured all of this out, Apple released the newest generation of Macbook Pro laptops and NVIDIA was nowhere to be found, having been replaced by AMD. It’s good to know there aren’t more of them being made, but from a streaming perspective, it is a bit troubling how many of those Macbooks with the NVIDIA cards are out in the wild. From the broadcaster end, the only way I know to ensure your H.264 stream will not be jittery on those macs is to use Baseline Profile, or to limit your frame size to 512 x 288 or smaller when using Main Profile. Certainly not ideal, but it is something to consider and if you are getting complaints from a client or viewers about the stream being jittery, it’s good to know that a quick switch to Baseline Profile H.264 can fix the problem.
*I think I read somewhere that Digital Rapids used the Nero H.264 codec, but can’t find it now and it may have been outdated anyhow. I don’t see anywhere in Digital Rapids’ current documentation that gives Nero(or anyone else) any credit for the H.264 encoding.
No trackbacks yet.