====== x264 Quality ======
* [[x264]]
* [[http://forum.doom9.org/showthread.php?t=150118|Meaning of PSNR and SSIM scores]] - doom9, source of formula by Dark Shikari
Use SSIM or PSNR to gauge differences between encoding settings.
==== SSIM ====
When comparing two values, here is the formula to discern what percentage amount something has improved.
First of all, let's look at a two-pass encode of a file:
x264 -o movie.264 --ssim --tune ssim --profile high --level 3.1 --bitrate 1024 --preset medium --keyint 30 --pass 1 movie.y4m
x264 -o movie.264 --ssim --tune ssim --profile high --level 3.1 --bitrate 1024 --preset medium --keyint 30 --pass 2 movie.y4m
Find this value in the output, and use the Y variable.
x264 [info]: SSIM Mean Y:0.9613678 (14.131db)
Run the same tests, against a 2048k bitrate instead of a 1024k one:
x264 -o movie.264 --ssim --tune ssim --profile high --level 3.1 --bitrate 1024 --preset medium --keyint 30 --pass 1 movie.y4m
x264 -o movie.264 --ssim --tune ssim --profile high --level 3.1 --bitrate 1024 --preset medium --keyint 30 --pass 2 movie.y4m
With separate SSIM output:
x264 [info]: SSIM Mean Y:0.9751283 (16.043db)
Here's the formula:
(((1 - old) / (1 - new)) - 1) * 100
Here's a simpler visualization:
1 - 0.9613678 = 0.0386322
1 - 0.9751283 = 0.0248717
0.0386322 / 0.0248717 = 1.55325932686547361057
1.55325932686547361057 - 1 = 0.55325932686547361057
0.55325932686547361057 * 100 = 55.325932686547361057
Rounding it out to an integer, would be 55, for a result of 55%. So when encoding this particular video at double the bitrate, the SSIM increases by 55%. Not bad!
Here's a PHP function to do the same thing:
function ssim_improvement($old_ssim, $new_ssim) {
$a = 1 - $old_ssim;
$b = 1 - $new_ssim;
$c = $a / $b;
$d = $c - 1;
$e = $d * 100;
return $e;
}
=== PSNR ===
Using the doom9 forum post as a reference, the equation is:
(new - old) / 0.05 = % improvement