[theora-dev] Theora vs MPEG vs H264

Maik Merten maikmerten at gmx.net
Sun Aug 26 02:36:07 PDT 2007


actually PSNR is one out of many proposed schemes. Mightly Google will
find some schemes with "video comparison metric".

PSNR is a rather common approach and there's one reason for this: It's
simple. Thanks to PSNR incorporating no psychovisual model of any kind
it's completely unusable to estimate how a human audience would rank the
perceived quality. It's trivial to find images that will give a really
horrible PSNR but have a rather okay perceived quality.

The SSIM metric ( http://www.cns.nyu.edu/~lcv/ssim/ ) looks rather
interesting (I haven't made any evaluation, though). Their paper,
however, looks nice and is incorporating some examples why PSNR is a bad

Comparing different codecs always is a bit difficult because each codec
has a multitude of encoding options to fiddle with. In case of Theora:

 - The bitrate management is known to impact pretty badly on image
quality. Theora is often best used with a fixed chosen quantizer. Then
try to find a fixed quantizer for each of the other codecs as well so
that the resulting bitrates are comparable. Otherwise you'd most likely
just test how good the bitrate management is and not the compression
scheme itself.

 - Use the slow but exhaustive motion search (ffmpeg2theora: "--optimize")

 - You have to decide if you allow postprocessing of the video output.
Most MPEG decoders apply some deblocking afterwards while Theora by
default is decoded with no postprocessing applied. Especially on low
bitrate content the deringing and deblocking can much improve the
perceived quality:


 - If you want to be especially nice to Theora you can improve coding
efficiency by using
http://svn.xiph.org/trunk/theora-exp/examples/rehuff.c on your Theora
test encodings. This tool will try to find better Huffman tables for a
given input file.



Leonardo de Paula Rosa Piga schrieb:
> Hi all,
> I have to compare the theora codec with MPEG and H264.
> I was googling and I found that the PSNR is a common used parameter.
> How can I do this with Theora?
> Thanks

More information about the theora-dev mailing list