Monthly Archives: April 2010

Google Funding VP3 On ARM

Some news is making the rounds that Google is funding ARM improvements for the Theora video decoder. It gives the free software faithful renewed hope. However, reading this news makes me wonder: Doesn’t FFmpeg already have ARM optimizations for Theora? In fact, it does, as indicated by the existence of the file libavcodec/arm/vp3dsp_neon.S. This has optimized IDCT transform/get/put and loop filter functions for NEON instruction sets. I know there are several different types of SIMD for ARM chips and I don’t know if NEON is the most common variety.

The most pressing reason for funding this effort is, of course, license purity.

Intentional Time-Consuming Work

A woman sat down across from me on the train, pulled out her knitting needles and went to work on what appeared to be a scarf. I briefly pondered the fact that she chose to busy herself with constructing a scarf the hard way when it’s obviously faster and cheaper to buy a scarf off the shelf.



Then I immediately pondered how many of my personal programming projects fall into this same category of wheels that don’t need to be reinvented. There are still plenty of projects I want to take on that would surely serve no practical purpose in the grand scheme of things, particularly when evaluated against what I could be spending my time on.

Video game console programming springs immediately to mind. I was interested in Sega Dreamcast programming long after the system had become obsolete. For that matter, I’m still interested in Sony PlayStation 3 programming, even though that community is about to be driven underground. I have long been interested in the technical aspects of the 8-bit Nintendo Entertainment System (NES) and have always wanted to write software for that console as well. A few years ago, I even purchased RetroUSB’s PowerPak, a CompactFlash-based game cartridge, probably the easiest method for testing code on an actual system. Mercifully, I recently gave away that item (and the console, an SNES-style top loader), so that’s one less area on which I can waste my spare dev time. I still have the DC and the PS3, though.

My FFmpeg colleagues should be pleased to hear that I do try to make my FATE work a priority above these arguably more frivolous pursuits.

Kega Video In FFmpeg

Thanks to Daniel Verkamp for contributing a Kega video (KGV1) decoder to FFmpeg. I was about to demand samples for testing until I looked up what Kega is — a Sega game console emulator — when I realized that it would be more fun to create my own (be advised that only the Windows version of Kega presently supports the AVI encoding option). Then I looked up the Wiki page and realized that there is, in fact, one sample on record at the archive. Well, I went ahead and made my own sample anyway. I used the mountainside attract-mode scene from the Genesis game Strider, one of my favorite sequences in any video game. It’s in the samples directory.



I am holding off on adding a FATE test; there’s still an endian issue (PPC configs disagree with x86 configs). I’m also a little puzzled as to why FFplay insists on playing the video as 320×240 even though the video is encoded as 640×480. For that matter, I’m also bewildered trying to understand why Kega renders video as 640×480 by default; that’s not a native resolution for any of its emulated consoles.

An Improved Web Frontend

I learned basic HTML tags circa 1995 and my knowledge of web presentation never really advanced beyond that. For the most part, I didn’t really need to care. I had WordPress and MediaWiki to take care of my more sophisticated CMS needs. Then along came FATE. My lack of prowess regarding modern web presentation became quite the liability.

I’ve been resisting updating this skillset for some time since it just seems, well… I’ll just go ahead and say it: Web programming feels beneath me. Come on, I do low-level stuff, performance-minded C and ASM, you know: “real” programming. The QuirksMode blog phrased it best:

They dismiss Web technologies as toys for children. JavaScript is just this little language that cannot possibly compare to real technologies such as the one they’re using. HTML is too simple. Real programmers don’t do that stuff. As to Web developers, they are just glorified pixel-pushers that should in no circumstance be taken seriously.

That pretty much summed up my sentiment (for context, in must be noted that the author of that post was railing against that this mindset). However, my old way wasn’t working and I needed a new way forward. Fortunately, a breakthrough came when I discovered Google’s visualization library. I was able to invoke Google’s widget in my web page which would in turn call a script on my server which would provide some table for charting. What a relief: I wouldn’t have to do a lot of heavy lifting myself. The rework wasn’t perfect but it was a start.

With my offline RSS reader project, I find myself requiring a more sophisticated web presentation again. As you might imagine, this is what the whole thing looks like so far:




Continue reading