Monthly Archives: September 2006

FFmpeg Autobuilds

I have been sitting on this for at least a month. As brainstormed in this post, I have developed a system on a spare, headless, always-on x86 Linux box that automatically updates its FFmpeg SVN copy and compiles it with 6 different gcc versions, essentially the latest in each of the 2.95, 3.2, 3.3, 3.4, 4.0, and 4.1 series. That’s all working quite well. The part that I’m trying to resolve right now is what to do with the results. I would like to aggregate the results into a concise format for easy web reading. Plus, it would be good to have a history of build successes/failures. I think an RSS aggregation would be useful as well. And for bonus points, some halfway intelligent system that figures out which warnings occur in all or most builds. This would reveal good code janitor work for aspiring FFmpeg developers.

This is just the first phase. Of course, I want to add functional tests later, such as the standard regression. I am still trying to get the infrastructure up.

Related post:

Branching Out

Cyril Zorin wanted a good place to document a 3D model format used in a LucasArts computer game. I thought this might be a good time to expand the charter of the MultimediaWiki to include more general game formats, not just the FMV-oriented ones. That is, unless there are other wikis devoted to that same charter. Perhaps I’m not asking the right questions, but a quick Google for “game format wiki” brings up this domain and the XentaxWiki in the first page.


BTW, Cyril wants to know if anyone has anything to add to the inaugural 3D format page in the MultimediaWiki.

Reverse Engineering Artwork

VAG directed me to some curious visualization of console game disassemblies filed under distellamap. This particular experiment targets Atari games and helps to highlight some of the graphics contained inside. Nearer and dearer to my heart is some of the research upon which this was based called dismap which maps the flow of selected Nintendo Entertainment System games.

Investigating Hachoir

In response to yesterday’s brainstorm, Mjules tipped me off regarding another tool that falls squarely into the “I wish I had thought of that” category– Hachoir (wish I knew how to pronounce it). It’s a Python-based framework for writing file parsers.

Hachoir mascot appliance

Finally! I have a compelling reason to learn Python.*** Python has long been on my list of languages to figure out, along with Prolog. Tonight, I wrote a very basic extension to Hachoir to parse the BIN FMV format discovered in my most recent exploration journal entry. And look– this WordPress plugin for code syntax highlighting also does Python:

Right now, this produces the output:

root (The Amazing Spider-Man vs. The Kingpin (Sega CD) FMV)
0) chunk type= "CONF": FourCC (size 4 bytes)
4) chunk length= 0x00000028: 4 bytes (size 4 bytes)
8) raw[]= "\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0(...)" (size 3.3 MB)
[ q to quit - move with arrows, page up/down, home/end ]

I still have a lot to learn about both Python and the existing framework facilities provided by Hachoir for parsing chunked file formats. The program already includes parsers for an impressive array of file format types. One that is of particular interest to me is a QuickTime file parser that the authors concede is rather incomplete. I see real promise for this parser as a research and troubleshooting tool for one of the most involved multimedia formats available.

*** (Proviso: No disrespect meant to anyone’s favorite language. I’m as fascinated with new programming languages as the next hardcore Linux geek. But it always helps me to learn a new language when I have a clear goal outlined for doing so.)