Category Archives: FATE Server

MVI and CMV

New format showcase time! Gregory Montoir contributed to FFmpeg a playback system for MVI files, which are a custom container for transporting Motion Pixels video data. Another format down.


Motion Pixels video codec in ffplay

It’s a little unclear how this format differs from the more familiar MVI1 and MVI2 codecs that are encapsulated inside AVI files. But this is probably a big step towards supporting those formats as well.

Peter Ross/Suxen drol is up to his old tricks by contributing a decoder for CMV files. Here’s what our one sample looks like:


EA CMV format -- NHL Hocky 95

After a brief hiccup, FATE is back online, and with some new tests: motionpixels and ea-cmv, for the formats listed above, and duck-dk4.

Bad Compilers

I had to disable the gcc-svn configurations corresponding to 32- and 64-bit x86 architectures on the FATE Server. When I upgraded the compilers to the latest ones from gcc SVN repository, the compiled results were hanging indefinitely in some cases (such as the HuffYUV regression test on x86_32). This makes FATE significantly less productive since the ‘make test’ test spec has such a long timeout. That reminds me of another reason why I wanted to split out those regressions into individual test specs.

It sounds bugworthy, as is the fact that the gcc-svn compiler for PowerPC has about a 50% chance of compiling FFmpeg without encountering an internal compiler error. It would be responsible of me to report these bugs to gcc. I think the main thing that stops me is that the guidelines for submitting gcc bugs are even more frightening than those for FFmpeg. The HuffYUV hang bug really scares me since it implies tracking down incorrectly compiled code.

FATE Compiler Updates

It’s compiler upgrade time for FATE. That means upgrading the gcc SVN snapshots for each of the platforms. Also, gcc 4.3.1 was recently released and using it fixes the FFmpeg regression suite that was previously broken on x86_64 when compiling with gcc 4.3.0. I am also taking this opportunity to upgrade the Intel C compiler to the latest (10.1.015). This is still in process and I hope it won’t be too painful (unpacking and installing a proprietary system packaged inside an RPM on a DEB-based system; managing licenses afterwards).

Also, all of the configurations now flex a wider array of options: –disable-debug –enable-gpl –enable-postproc –enable-avfilter –enable-avfilter-lavf –enable-shared. –disable-debug really keeps the build size down (handy since I have allotted precious little disk space to these VM build appliances). –enable-shared ensures that FATE is now testing shared library functionality. Further, libswcale is built separately in each command line, though not configured into the main FFmpeg build– I have been advised that doing so would louse the regression tests.

Anyway, this is all greatly facilitated by the fact that I finally got around to upgrading my private admin script so that I can actually edit build configurations through a web interface. It’s quite arduous to maintain this stuff through the MySQL command line console.

Oh wow– I just noticed that even the gcc-SVN build for x86_64 passes the regression suite. Good stuff.

QT And Duck FATE Tests

More new test specs tonight:

I meant to add the QT SMC and RLE tests some months ago. But in a fit of programming purity, I opted instead to log some bugs for myself to fix before I added test specs. However, I remembered that I should get as much basic functionality covered by the FATE suite first. SMC works, except in some odd resolution cases; same for QT RLE. Most of those 2 decoders’ code paths work and I want to be able to catch regressions sooner than later.

I also been tightening up some older video decoder tests. I used to have a problem when using “-f framecrc” for output where FFmpeg was outputting a huge number of identical frames at very short periods. Michael tipped me off somewhere along the line that I should use “-vsync 0” in such cases to effectively eliminate the duplicates. I still don’t understand exactly what that option does but it works splendidly.