Breaking Eggs And Making Omelettes

Topics On Multimedia Technology and Reverse Engineering


Archives:

Indeo 5 and Partial Bink in FFmpeg

February 11th, 2010 by Multimedia Mike

There have been some great additions to FFmpeg in recent weeks. Most notable is an Indeo 5 video decoder. Congratulations to everyone who worked hard to reverse engineer this codec that was used in quite a few video games. The sample I selected for a FATE test spec is called Educ_Movie_DeadlyForce.avi:


SWAT 3: Deadly force Indeo 5 video

The video is much funnier in its original context (though it’s no longer posted there). Thankfully, the math behind Indeo 5 is bit exact which allows me to enter a test spec right away.

While Indeo 5 was used in quite a few PC games through the years, no game-related format can touch Bink. FFmpeg now includes a Bink file demuxer. Further, FFmpeg now has decoders for both variations of Bink audio (designated DCT and RDFT), which can also occur in Smacker files.

So I added new FATE test specs to cover those new additions. I also went through the FATE test coverage wiki page and eliminated a bunch of low-hanging fruit. Sometimes, there were samples (some difficult to find) at the samples archive; other times, it was necessary to do a Google search for “filetype:<file extension>”. To give you an idea of the current trends in the shifting sands of the internet, such searches invariably seem to yield Facebook pages as their top hits.

These are the new FATE tests:

Michael has been at work fixing more formal H.264 conformance vectors. 2 new tests that reflect this work are h264-conformance-frext-frext_mmco4_sony_b and h264-conformance-frext-frext2_panasonic_b. Further, I am in the process of amending the ea-mad (now ea-mad-adpcm-ea-r1) test to use a sample that has EA R1 ADPCM in addition to EA Madcow video. The new sample is staged and I will update the spec to reflect that new sample when I activate the new specs.

Regarding the iff-ilbm test, I could only find one sample on the internet for that format. It’s a bit weird:


lms-matriks

It came from a demoscene archive. I wonder if this immortalized test vector is self-deprecating humor of one’s own demo group or slander of a rival demo group?

Posted in FATE Server | 17 Comments »

17 Responses

  1. Kostya Says:

    First of all, there is only one person who managed to RE both Indeo 4 and 5 (now waiting for the former unless I get too desperate and hack something myself).

    And mind you, we may eventually get Bink Video decoder as well. Samples are welcome.

  2. Jonathan Wilson Says:

    Bink Video decoder would be great (and assuming its legally clean, there would be nothing RGT could do about it)

  3. James Says:

    The http links in the iff-ilbm test spec appear to be broken.
    I’m slightly surprised you had trouble finding examples of the format: back in the heyday of the Amiga it was difficult to find images that were in a _different_ format.

    Having said that, they do seem to be hard to track down these days! There should be a handful of examples in Picture directory of:

    http://drop.io/lsovltp/asset/deluxepaint52-examples-zip

    They’re from the [Amiga] Deluxe Paint 5.2 example disk. Sadly I don’t have an ILBM of the iconic Tutankhamun mask shown here:

    http://citystate.co.uk/archives/deluxe-paint/

    That would be fun for historical reasons. :)

    Thanks for interesting post, as always.
    printed on the

  4. Multimedia Mike Says:

    @James: Thanks for the link correction; fixed. And indeed, it can make us feel old when we find out that certain familiar, once-widely used formats have fallen out of favor. :-)

    @Kostya: You’re right, there was one principal reverse engineer on the project. I thought some other people pitched in as well. Perhaps I got confused by all the time the decoder spent in review on the development list.

    You need more Bink samples? Seriously? Just wait until I get this little data mining project rolling: http://multimedia.cx/eggs/archivists-burden/ ; you will have untold gigs to try out.

  5. compn Says:

    finding a sample is so difficult that now i’m abandoning the search for them. next i’ll start looking for the original software, emulate/install it, and create my own samples.

  6. Multimedia Mike Says:

    Your tireless efforts are still appreciated, compn.

    Actually, the original software route is a much better approach since we can alleviate copyright concerns by encoding unencumbered source material. We can also potentially flex more codec features by tweaking encoding options.

  7. Nicke Says:

    Plenty of iff-ilbm files here:

    http://aminet.net/pix/art

    They’re packed into lha archives, so that’s probably why they’re relatively hard to find by googling.

  8. Carl Eugen Says:

    Is the vc1 sample bit-exact with the reference decoder?

  9. Multimedia Mike Says:

    @Carl: I did not verify yet. However, it looks correct when decoded to still images, and all 30 of my local configurations agree on the bit exact output. Not a perfect method, but good enough until I finally get around to doing it the most proper way.

  10. Mans Says:

    ea-tgv/INTRO8K-partial.TGV is missing from mphq samples.

  11. Multimedia Mike Says:

    I always have to forget something. The sample is up now. Thanks.

  12. Anonymous Says:

    http://aminet.net/search?path=pix&content=.iff

  13. Carl Eugen Says:

    @Mike: The current vc1 test shows two (identical) frames, ffplay and mplayer play ~15 frames, so there is definitely something wrong – pts generation maybe?

  14. Multimedia Mike Says:

    Thanks for checking, Carl Eugen. I’ll try to do better on that one.

  15. Carl Eugen Says:

    I don’t think there is a problem with your test, but that ffmpeg doesn’t do any better for this sample (but I would be happy if proven wrong).

  16. James Says:

    The second link is still broken in the IFF-ILBM test spec ;)

  17. Multimedia Mike Says:

    @James: Thanks very much for checking over those; that was my abysmal web programming skills at work.