Category Archives: Open Source Multimedia

News regarding open source multimedia projects.

MPlayer 1.0rc1 Reviewed

MPlayer recently blessed their latest 1.0 release candidate. As some readers may know, MPlayer is where I cut my teeth in practical multimedia hacking– that was 5 years ago, right about this time of year. Makes me sentimental just to think about it.


MPlayer logo

Other commitments have kept me from coming up with anything interesting for this blog. Instead, I thought I would see how well this release fulfills my original goals from when I embarked on this multimedia hacking adventure so many years ago. It runs on Linux, is free, and is open source, so all of those bases are covered. Now let’s see if it’s simple to install and can handle any file I throw at it (I’ll defer on the GUI goal for the time being).

Continue reading

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:

My App A Day

This ambitious software developer, the Software Jedi, wants to write an app a day for a month and he is soliciting suggestions.


bright idea

Here is one idea that I dreamed up just the other day as I was plodding through the hex dump of yet another freshly discovered, FourCC-chunked multimedia file format. This is the proposal– maybe he will find it interesting enough to write up in C#, maybe I will have to do it instead, or maybe someone else will beat me to it:

A lot of multimedia files use what I like to call the “chunked-FourCC” format:

  chunk 0
  chunk 1
   ..
  chunk n

Chunks are formatted as:

  preamble
  payload

The preamble invariably consists of:

  chunk identifier-- usually 4 ASCII chars (FourCC)
  length

When I stumble on a new chunked-FourCC-type file format, I want to know all of the possible chunk types. I want a simple tool that could walk through all the chunks in the file and print the various types.

At issue is the preamble format– sometimes the FourCC is first, sometimes the length is first; sometimes the length is big endian, sometimes it’s little endian; sometimes there is an extra “flags” component to the preamble; sometimes the length includes the preamble chunk, sometimes it doesn’t.

So I am thinking of a utility where I can specify all of these parameters from the command line and the tool would print info about the chunks based on those instructions. A good starting point would be any Apple QuickTime (.mov) file. The chunk (“atom”) format is (and all multi-byte numbers are big endian):

  bytes 0-3    atom size (including 8-byte size and type preamble)
  bytes 4-7    atom type (ASCII chars, usually)
  bytes 8..    data

There is also a special case for large atoms:

  bytes 0-3    always 0x00000001
  bytes 4-7    atom type
  bytes 8-15   atom size (including 16-byte size and type preamble)
  bytes 16..n  data

gcfuse, With Executable Support

I upgraded my gcfuse utility tonight. The main change was to expose the primary game executable file when browsing a GameCube filesystem. The primary executable is stored as an implicit part of the filesystem, separate from the directory structure. Being able to easily read this file is a useful feature if, for example, someone wishes to get at these executables for the purpose of disassembly.

For example, when mounting the first disc image of one of my few GC games that I have actually completed, Metal Gear Solid:

$ ls -al mount/
total 1
dr-xr-xr-x 4 melanson users         0 Jul 15  2005 .
drwxr-xr-x 7 melanson users       760 Aug 26 21:48 ..
-r--r--r-- 1 melanson users        95 Jul 15  2005 .metadata
dr-xr-xr-x 4 melanson users         0 Jul 15  2005 audio
-r--r--r-- 1 melanson users 426387456 Jul 15  2005 demo.dat
-r--r--r-- 1 melanson users   1988128 Jul 15  2005 metal-gear-solid-the-twin-snakes-exe.dol
-r--r--r-- 1 melanson users      6496 Jul 15  2005 opening.bnr
dr-xr-xr-x 3 melanson users         0 Jul 15  2005 shared
-r--r--r-- 1 melanson users 198715392 Jul 15  2005 stage.dat

The executable file is metal-gear-solid-the-twin-snakes-exe.dol. The filename is a little long, which can happen since it is derived from the game title in the disc metadata, which can be nearly 1000 characters long. The GC executable format is known as DOL, probably short for Dolphin which was the codename of the GameCube during development.

I recognize that I’m likely the only person on the planet who cares about this utility but, hey, it’s my blog and what are blogs for if not to tell the world about the tedious minutiae of an individual’s life?

Related post: