Author Archives: Multimedia Mike

GSoC 2007 Wrap Up

Thanks to Michael for his Google Summer of Code 2007 wrap up. Technically, I was the FFmpeg mentor administrator. But Michael kept a keen eye on all 8 of our projects. Thanks to all the students who came through with the code this year. FFmpeg is building a good track record which should help our prospects in future GSoC efforts.

Special notices go out to my student, Kostya, who had to pick up my slack in figuring out the RV40 algorithm while at the same time re-implementing it; and to Marco Gerards, for writing both a Dirac decoder and the beginnings of a Dirac encoder, despite what certain GStreamer naysayers had to say about the initiative:

Considering how long we have spent on getting Schrodinger up to scratch I am amazed that anyone even manage to believe they can create both a decoder and an encoder for Dirac in 3 Months.

Go Marco!

Duck Hieroglyphics

It’s like digital archaeology– understanding the ancient (by internet time) workings of less advanced engineering efforts. Pop culture depictions of archaeology would have us believe that those who toil in the field are searching for that one artifact that would neatly solve the entire puzzle at hand. Historically, perhaps the artifact that came closest to fitting this archetype was the Rosetta Stone, and even that was incomplete (if I’m observing the pictures correctly).

So it is with my current investigation. Much like Sean Connery playing Indiana Jones’ dad searching for the Holy Grail in The Last Crusade, I run the risk of making the Duck TrueMotion 1 algorithm my lifelong obsession. I got that Duck TM1 source code into a state where I could compile it against a standalone program. It only required 38 C source files from the original vpvision source tree and a mess of attendant header files to boot.

Continue reading

Famous Photo

I was catching up on recent Cracked.com articles when I noticed a familiar photo on their front page:


Gobots vs. Transformers

The right half of this picture looks awfully familiar. I looked back in the archives, and sure enough:


Gobots batch #1, robot form
Click for larger image

Eh, it doesn’t bother me. If a site is going to rip off one of my photos, I guess I prefer that it be one of my favorite sites. So it’s all good. They also cleaned up the photo nicely; no shadows or anything. I imagine they found it since that picture is one of the top Google image search hits for “gobots”. And at least they didn’t hotlink the photo, as many sites (and particularly forum posters) are wont to do. Chalk it up to my mad metadata skillz, which simply entails clearly titling image files and giving them proper ALT text.

It’s weird to think that that might be the most famous photo I will ever take.

Quacking Like Duck

I don’t learn very quickly. A good illustration of this personal shortcoming is my ongoing battle with the Duck TrueMotion 1 video codec, a conflict that is well into its 8th year at this point. This was one of my first exposures to the field of multimedia hacking as I discovered some Duck TM1-encoded AVI files on select Sega Saturn console games all the way back in 1998. I found a few Japanese Windows programs that could play the files. Early in my multimedia hacking career, I worked hard to reverse engineer the TM1 algorithm.


Duck TrueMotion logo

In 2002, On2 (formerly Duck) open sourced their VP3 codec (which would later become Theora). I kept stubbornly trying to RE TM1 from the binary when Alex notified me that On2’s open source VpVision package contains the decoders for TrueMotion 1 and 2. It also included the decoders for Duck DK3 and DK4 ADPCM, both of which I successfully had RE’d from binary code, and at around the time that VpVision had been released as open source.

The VpVision source has been quite valuable in RE’ing both the TM1 and TM2 algorithms. It’s extremely difficult to understand, however, as is often the case with code produced on a deadline. Some TM1 files still fail to work correctly with the native FFmpeg decoder. I always thought it would be useful if I could compile the code and run it in a step debugger, or perhaps profile it with other tools, in order to sort out the correct operation when decoding certain files. But the code seemed like such a mess that I didn’t think it would compile on Linux. It looked like it would only compile on Windows or maybe Mac, and only with some effort.

Continue reading