Codecs

So I've been playing with video codecs again.  I've got two new ones, listed below.  Both are available as AVI-based video codecs.  This means that any software which can create or edit AVI files can be used to produce video in these formats.  Choose the appropriate compressor from the selector in your chosen software package, set the options, and save the AVI.  Here's how the MV codecs show up in VirtualDub:

 

The MidiVid Archival Codec (aka MVHA)

Intended primarily for use as an editing / archiving format, this codec is lossless if compressing digital or captured video.  If you're using it to store computer / rendered material, the RGB data is first converted to UYVY format, then stored losslessly.  The end result is about 4:1 or better compression with all key frames.  It's great for editing because there's less quality loss than DV formats, but it's much smaller than uncompressed video.  It's also fast enough to play back (or compress) in real time.

Download MVHA Archive Codec Installer

 

The Mideo V4.3 Codec (aka MV43)

Intended primarily for high quality, low-bandwidth playback, MV43 is designed to be run on personal computers, or consoles (like the XBox, or PS2).  For files of identical size, the video quality of MV43 is significantly better than either DVD or Bink.  It approaches the quality of MPEG4, but requires a less powerful CPU to decode.

On my 3.2GHz Pentium 4, I can encode a typical 640x480 movie at 4-5 frames per second, or 10-12 frames per second in "fast mode".  That's significantly faster than Bink, and there are still a number of things to be done to  improve the encoding speed..  I've also done some optimization on the decoding side with P3 MMX instructions, and made some good  headway in reducing CPU usage during playback.  On my P4 3.2Ghz, I can decode typical full screen content at  less than 10% CPU usage, and I've still got a few more things to do.  I expect to get it to around 7%.  An XBox, being ~4.4 times slower than my machine, would take about 44% of the CPU to decode a full screen movie, but the increased memory bandwidth on consoles would probably make that even lower.  Disabling "strong compression" mode will also reduce decoding times, at a slight cost in file size.

The codec also contains an edge-preserving source filter.  It can make a big difference in the amount of noise in the end result, especially if you're starting with recorded video or some other "imperfect" source material.  It slows the compressor down a little, but it's free during playback.

Rate control was also added recently, which means if you tell the codec to use a given data rate, it'll try its best to do so.  This reduces encoding speed, but that should improve as the algorithm improves.

Download the MV43 Codec Installer for Pentium 4

Download the MV43 Codec Installer for Pentium 3

 

Example

Here is a sample video clip from a DVD source.  The original video was re-compressed to MV43 format, as well as Bink:

MPEG2 (DVD): 118,386 Kb – Approx 838 Kb/sec (No download available)

MV43 @ Q-76:   17,678 Kb – Approx 125 Kb/sec (Download – You will need the codec installed to play this file)

Bink @ 140000:   19,042 Kb – Approx 135 Kb/sec (Download – You will need Bink installed to play this file)

The Bink version took about 2 ½ hours to encode, while the MV43 version required less than 10 minutes, and only 3 minutes with the "High-speed search" option enabled.

Here's another clip in MV43 format: The Matrix Reloaded Trailer.  It's a 768x416 frame, about 20% larger than most letterboxed DVD content, and it's compressed to 272Kb/sec, less than a double speed CD ROM.

Quality

The quality of a codec is often measured in PSNR (Peak Signal to Noise Ratio).  This measurement is based on how much the compressed video differs from the original.  Higher numbers are better – Above 45 is often considered “perceptually lossless”, while below 20 is considered “horrible”.

The PSNR value for the MV43 version was measured at 47.90db total, and 46.18db for the luminance channel alone.  Since your eye is more sensitive to brightness accuracy than colour accuracy, the PSNRY (luma only measurement) is often used instead of PSNR total.

The Bink version of the sample came to a PSNR of 45.71db total, and a PSNRY of 41.22db.

PSNR and PSNRY are on a logarithmic scale – 10db of change represents an approximate doubling of quality.  MV43’s PSNRY of 46.18db is almost 5db higher than Binks, meaning that it looks a lot better.

Rather than take my word for it, check out these two images:

Here's a frame from the Bink movie

And here's the same frame from the MV43 movie.  Compare the quality of the eyes, fangs, tail, and the area around his raised finger between the two images.