Verification Process
Updated 2022-12-14 (history)
Calculating - Information
Codecs - Versions
Metrics - Versions
Codecs - Building
Metrics - Building
Codecs - Running
Metrics - Running
Decoding Speed
The timing was performed using the ImageDecoder API on Chrome. Below is some example code showing how to use the ImageDecoder API to time the fetch, decode, and render of an image.let imageDecoder = null;
let startMilli = 0;
let imageDecodeStart = 0;
let fetchingMilli = 0;
let decodingMilli = 0;
let renderingMilli = 0;
function loadImage(imageUrl, mimetype) {
startMilli = performance.now();
let req = new XMLHttpRequest();
req.open("GET", imageUrl, true);
req.responseType = "arraybuffer";
req.onload = function (oEvent) {
decodeImage(req.response, mimetype)
};
req.send(null);
}
function decodeImage(imageByteStream, mimetype) {
imageDecodeStart = performance.now();
fetchingMilli = imageDecodeStart - startMilli;
imageDecoder = new ImageDecoder({data: imageByteStream, type: mimetype});
imageDecoder.decode({frameIndex : 0}).then(renderImage);
}
function renderImage(result) {
const imageDecoded = performance.now();
decodingMilli = imageDecoded - imageDecodeStart;
const canvas = document.getElementById('canvas');
const canvasContext = canvas.getContext('2d');
canvasContext.drawImage(result.image, 0, 0);
renderingMilli = performance.now() - imageDecoded;
}
Transcoding Speed
Below is the timing information from encoding the noto-emoji data using AVIF with a speed of 9 and an encoding_point of 40. You can see all of the options used in the Codecs - Running section.
Note: encoding_point is used here as a generic term for:
input |
transcodeSeconds |
megapixels |
transcodeMP/s |
emoji_u263a.png |
0.026 |
0.262144 |
10.08246154 |
emoji_u1f64f.png |
0.024 |
0.262144 |
10.92266667 |
emoji_u1f926.png |
0.025 |
0.262144 |
10.48576 |
emoji_u1f525.png |
0.025 |
0.262144 |
10.48576 |
emoji_u1f44f.png |
0.024 |
0.262144 |
10.92266667 |
emoji_u1f495.png |
0.026 |
0.262144 |
10.08246154 |
emoji_u1f602.png |
0.028 |
0.262144 |
9.362285714 |
emoji_u1f60d.png |
0.02 |
0.262144 |
13.1072 |
emoji_u1f618.png |
0.022 |
0.262144 |
11.91563636 |
emoji_u1f970.png |
0.024 |
0.262144 |
10.92266667 |
emoji_u1f923.png |
0.025 |
0.262144 |
10.48576 |
emoji_u1f937.png |
0.028 |
0.262144 |
9.362285714 |
emoji_u1f973.png |
0.03 |
0.262144 |
8.738133333 |
emoji_u1f382.png |
0.023 |
0.262144 |
11.39756522 |
emoji_u2764.png |
0.018 |
0.262144 |
14.56355556 |
emoji_u1f44d.png |
0.023 |
0.262144 |
11.39756522 |
emoji_u1f389.png |
0.032 |
0.262144 |
8.192 |
- input column is the name of the input file.
- transcodeSeconds column is the transcode time in seconds measured using the time command.
- megapixels column is the number of pixels in the image.
- transcodeMP/s column is the megapixels divided by the transcodeSeconds.
Next we average all the transcodeMP/s for every input. In the example above we get a value of 10.73096648.
Next we average all the avgTranscodeMP/s for every encoding_point within a given speed/effort. Below is the avgTranscodeMP/s for every encoding_point within speed 9 from our example.
avgTranscodeMP/s |
speed |
encoding_point |
12.26160783 |
9 |
63 |
11.88440739 |
9 |
62 |
12.31376359 |
9 |
61 |
12.15445355 |
9 |
60 |
11.64477168 |
9 |
59 |
11.71760974 |
9 |
58 |
11.79664098 |
9 |
57 |
11.87295407 |
9 |
56 |
11.22839826 |
9 |
55 |
11.49407526 |
9 |
54 |
11.38833537 |
9 |
53 |
11.38051961 |
9 |
52 |
11.6515326 |
9 |
51 |
11.36905974 |
9 |
50 |
11.54580767 |
9 |
49 |
11.55853413 |
9 |
48 |
11.0309081 |
9 |
47 |
10.75238938 |
9 |
46 |
11.32151881 |
9 |
45 |
10.99604779 |
9 |
44 |
10.79689268 |
9 |
43 |
10.89024835 |
9 |
42 |
10.75788614 |
9 |
41 |
10.73096648 |
9 |
40 |
11.15525455 |
9 |
39 |
10.73936771 |
9 |
38 |
10.74052428 |
9 |
37 |
10.94546984 |
9 |
36 |
10.60492926 |
9 |
35 |
10.41289715 |
9 |
34 |
10.60062853 |
9 |
33 |
10.3493127 |
9 |
32 |
10.33155113 |
9 |
31 |
10.12636695 |
9 |
30 |
10.3802904 |
9 |
29 |
10.3600833 |
9 |
28 |
9.86395181 |
9 |
27 |
9.877980463 |
9 |
26 |
9.794241364 |
9 |
25 |
9.401410249 |
9 |
24 |
10.0250416 |
9 |
23 |
9.676316385 |
9 |
22 |
9.838833024 |
9 |
21 |
9.778203457 |
9 |
20 |
9.57301489 |
9 |
19 |
9.809781442 |
9 |
18 |
9.812009407 |
9 |
17 |
9.129511455 |
9 |
16 |
9.702523776 |
9 |
15 |
9.726979091 |
9 |
14 |
9.286918132 |
9 |
13 |
9.349299975 |
9 |
12 |
9.431615569 |
9 |
11 |
9.400580911 |
9 |
10 |
9.364998282 |
9 |
9 |
9.07337167 |
9 |
8 |
8.904681198 |
9 |
7 |
8.96537662 |
9 |
6 |
8.82282374 |
9 |
5 |
8.73482027 |
9 |
4 |
8.551375312 |
9 |
3 |
8.482531666 |
9 |
2 |
7.992188847 |
9 |
1 |
Finally we average all the avgTranscodeMP/s for every encoding_point within a given speed/effort. In the example above we get a value of 10.37549818. This is the value you see in the noto-emoji transcode timing graphs for one thread speed 9.
Quality Metrics
Below is the metric information from encoding the noto-emoji data using AVIF with a speed of 9 and an encoding_point of 40. You can see all of the options used in the Metrics - Running section.
input |
psnr_magick |
psnr_hvs |
psnr_y |
ssim |
ssim_magick |
msssim |
dssim |
vmaf |
ciede2000 |
ssimulacra |
ssimulacra2 |
butteraugli |
p3norm |
emoji_u263a.png |
32.3172 |
37.165688 |
35.577841 |
0.976526 |
0.925947 |
0.995219 |
0.00332451 |
81.879372 |
45.321027 |
0.02830018 |
38.28823483 |
8.472590447 |
2.833384 |
emoji_u1f64f.png |
32.6931 |
37.596789 |
36.865447 |
0.975646 |
0.927364 |
0.994192 |
0.00320184 |
79.515506 |
46.417816 |
0.0314269 |
39.20757624 |
9.001079559 |
2.839618 |
emoji_u1f926.png |
32.5836 |
36.527778 |
36.210292 |
0.981694 |
0.929673 |
0.993282 |
0.0043861 |
81.13209 |
43.900571 |
0.02933967 |
45.06527945 |
7.761772156 |
2.839862 |
emoji_u1f525.png |
32.4504 |
37.837855 |
36.586073 |
0.979153 |
0.921293 |
0.996319 |
0.00275275 |
77.59631 |
47.258144 |
0.02437439 |
34.75151593 |
10.12944031 |
3.228787 |
emoji_u1f44f.png |
31.8132 |
35.723916 |
34.702413 |
0.967349 |
0.878398 |
0.990479 |
0.00436448 |
79.990197 |
44.587876 |
0.04102024 |
36.12804553 |
9.867407799 |
2.918389 |
emoji_u1f495.png |
32.4312 |
37.180915 |
36.054116 |
0.968472 |
0.925763 |
0.993855 |
0.00377203 |
75.421157 |
43.348418 |
0.02655611 |
33.2561638 |
9.522545815 |
3.184354 |
emoji_u1f602.png |
30.5563 |
35.853807 |
34.789637 |
0.975702 |
0.911966 |
0.994297 |
0.0038965 |
82.448559 |
42.9192 |
0.03574726 |
37.36556145 |
9.995477676 |
3.078394 |
emoji_u1f60d.png |
31.9887 |
36.171791 |
35.421831 |
0.972116 |
0.908804 |
0.993835 |
0.00382023 |
80.371274 |
44.49019 |
0.03063585 |
37.67618413 |
10.59731388 |
3.239028 |
emoji_u1f618.png |
32.1479 |
36.907435 |
35.426082 |
0.975939 |
0.921563 |
0.994676 |
0.00350862 |
82.59424 |
44.833058 |
0.02951395 |
38.22827929 |
8.488348007 |
2.928788 |
emoji_u1f970.png |
31.4791 |
36.021386 |
35.141912 |
0.979498 |
0.92228 |
0.993571 |
0.00421426 |
81.852105 |
43.483691 |
0.03652905 |
40.27446647 |
8.842941284 |
3.208867 |
emoji_u1f923.png |
30.4386 |
35.599761 |
34.640762 |
0.974695 |
0.907769 |
0.993781 |
0.00397115 |
81.684672 |
42.574924 |
0.03349634 |
35.3980924 |
9.505764008 |
3.011923 |
emoji_u1f937.png |
31.5682 |
36.277377 |
35.493608 |
0.982879 |
0.918743 |
0.994691 |
0.00387182 |
83.432067 |
43.219194 |
0.04003069 |
42.85062911 |
9.093180656 |
3.008843 |
emoji_u1f973.png |
29.7198 |
35.617385 |
34.55535 |
0.978209 |
0.903238 |
0.994252 |
0.00392965 |
82.274151 |
42.355734 |
0.03733623 |
40.13294069 |
9.940659523 |
3.308562 |
emoji_u1f382.png |
32.5033 |
36.275321 |
35.882211 |
0.979779 |
0.932493 |
0.991956 |
0.00427477 |
82.886037 |
43.718928 |
0.03474075 |
41.71708994 |
7.239439488 |
2.590612 |
emoji_u2764.png |
33.1665 |
38.128877 |
37.238969 |
0.975716 |
0.938356 |
0.995109 |
0.00405738 |
73.628242 |
45.203238 |
0.02812272 |
35.04119144 |
12.02955532 |
3.625233 |
emoji_u1f44d.png |
33.2645 |
36.98907 |
37.125789 |
0.973309 |
0.894939 |
0.992802 |
0.00335535 |
82.548598 |
46.501181 |
0.03128018 |
37.6979732 |
10.41339111 |
2.793819 |
emoji_u1f389.png |
28.9353 |
34.683536 |
33.215516 |
0.950337 |
0.838466 |
0.99312 |
0.00469632 |
80.909361 |
39.741832 |
0.04263093 |
30.21508095 |
9.483102799 |
3.234928 |
Next we average all the metrics for every input. The example above gives us average values in the table below.
input |
psnr_magick |
psnr_hvs |
psnr_y |
ssim |
ssim_magick |
msssim |
dssim |
vmaf |
ciede2000 |
ssimulacra |
ssimulacra2 |
butteraugli |
p3norm |
--- |
31.76805294 |
36.50345218 |
35.58399112 |
0.9745305294 |
0.9121797059 |
0.9938491765 |
0.003846927059 |
80.59787871 |
44.11029541 |
0.03300479059 |
37.84084146 |
9.43435352 |
3.051375941 |
Next we average all the metrics for every encoding_point within a given speed/effort. Below is the average metrics for every encoding_point within speed 9 from our example.
speed |
encoding_point |
psnr_magick |
psnr_hvs |
psnr_y |
ssim |
ssim_magick |
msssim |
dssim |
vmaf |
ciede2000 |
ssimulacra |
ssimulacra2 |
butteraugli |
p3norm |
9 |
63 |
22.86927647 |
22.43452818 |
26.08552182 |
0.8232730588 |
0.7787238235 |
0.9423771176 |
0.04807649882 |
13.64826765 |
33.07031124 |
0.1503584941 |
-83.99913524 |
39.83382999 |
13.67988371 |
9 |
62 |
23.91028235 |
23.88060724 |
27.03896129 |
0.8504778824 |
0.7949305294 |
0.9545897059 |
0.03656029941 |
24.14373476 |
34.27873818 |
0.1279288629 |
-64.36592049 |
32.15524371 |
11.20673347 |
9 |
61 |
24.66770588 |
24.97340853 |
27.73254988 |
0.8753612353 |
0.8139357059 |
0.9611531765 |
0.02999484529 |
31.348136 |
35.30705359 |
0.1128482465 |
-51.08409708 |
29.0461593 |
9.756583 |
9 |
60 |
25.20877059 |
25.82650518 |
28.22765347 |
0.8888475294 |
0.8238535294 |
0.9656998824 |
0.02559594118 |
36.45769676 |
35.98496771 |
0.1028087265 |
-40.14656133 |
26.1211457 |
8.854098412 |
9 |
59 |
25.70626471 |
26.56813524 |
28.67187724 |
0.8987224706 |
0.8288638824 |
0.96899 |
0.02249941 |
40.90667859 |
36.54390494 |
0.09534772588 |
-34.65637596 |
24.34789265 |
8.224902824 |
9 |
58 |
26.14948235 |
27.24067929 |
29.07725735 |
0.9054595294 |
0.8344228824 |
0.9718654118 |
0.01993024 |
44.41436447 |
37.04243118 |
0.09034511529 |
-28.13501326 |
22.83150819 |
7.613701941 |
9 |
57 |
26.53791176 |
27.82962129 |
29.43648559 |
0.8884065294 |
0.8128358824 |
0.9742295294 |
0.01797780706 |
48.03682559 |
37.10697359 |
0.08954626529 |
-42.03734997 |
21.73310751 |
7.137255294 |
9 |
56 |
26.8921 |
28.43096847 |
29.80613624 |
0.9134905882 |
0.8407902941 |
0.9764777647 |
0.01627934706 |
50.96750429 |
37.85488165 |
0.08170054647 |
-22.1318694 |
20.76584951 |
6.768578529 |
9 |
55 |
27.22853529 |
28.97716524 |
30.161453 |
0.9299411176 |
0.8583077647 |
0.978483 |
0.01478728176 |
53.455549 |
38.56229182 |
0.07350551765 |
-11.11794388 |
20.12879069 |
6.427248647 |
9 |
54 |
27.57961176 |
29.54667312 |
30.50381547 |
0.9347911176 |
0.8649394118 |
0.9801077647 |
0.01335205412 |
56.44100141 |
38.98701624 |
0.07008258706 |
-5.442988964 |
19.26445434 |
6.057205294 |
9 |
53 |
27.89533529 |
30.06726447 |
30.82738671 |
0.9389810588 |
0.8686668824 |
0.9817758824 |
0.01213919294 |
58.82021459 |
39.39171706 |
0.06677435118 |
-1.188148466 |
18.35520671 |
5.750838235 |
9 |
52 |
28.222 |
30.61549059 |
31.18502988 |
0.944208 |
0.8761978235 |
0.9833265294 |
0.01101098353 |
61.37063571 |
39.89705718 |
0.06272760412 |
2.346967569 |
17.6018592 |
5.461978353 |
9 |
51 |
28.52882353 |
31.13294106 |
31.50616253 |
0.9470917647 |
0.8809148235 |
0.984704 |
0.01006184882 |
63.28954341 |
40.30271165 |
0.05990766235 |
7.350912563 |
16.75417693 |
5.188005 |
9 |
50 |
28.81519412 |
31.61478912 |
31.81925253 |
0.949808 |
0.8844907647 |
0.9859615882 |
0.009284749412 |
65.194149 |
40.64832524 |
0.05694014118 |
9.218705418 |
16.46241244 |
4.988844 |
9 |
49 |
29.15414118 |
32.14333747 |
32.12962306 |
0.9544127059 |
0.8887904706 |
0.9869961765 |
0.008499294706 |
66.98045471 |
41.04157318 |
0.05374009647 |
13.9746478 |
15.08931783 |
4.686726765 |
9 |
48 |
29.43353529 |
32.65557771 |
32.45981224 |
0.9570203529 |
0.8904084706 |
0.9880450588 |
0.007830817647 |
68.98349441 |
41.37037418 |
0.05060006647 |
16.07885771 |
13.44840476 |
4.40418 |
9 |
47 |
29.75552353 |
33.15259488 |
32.81536129 |
0.9611224706 |
0.8961058824 |
0.9889909412 |
0.007134477059 |
70.594267 |
41.79373259 |
0.04851689412 |
19.2148848 |
13.14517189 |
4.220259529 |
9 |
46 |
30.06143529 |
33.67696947 |
33.16660018 |
0.9636041176 |
0.8989673529 |
0.9898388235 |
0.006533560588 |
72.32109412 |
42.28586182 |
0.04610983765 |
22.10176327 |
12.37129026 |
3.975651529 |
9 |
45 |
30.34778824 |
34.17901082 |
33.56661165 |
0.9668322353 |
0.9024122941 |
0.9906891765 |
0.005989924118 |
74.01463812 |
42.63558835 |
0.04352659471 |
24.86114628 |
12.0132793 |
3.815030353 |
9 |
44 |
30.63395882 |
34.66114165 |
33.94305018 |
0.9675715294 |
0.9039770588 |
0.9915364118 |
0.005435185882 |
75.54858924 |
42.91964112 |
0.04095985235 |
27.43953752 |
11.66052442 |
3.644435529 |
9 |
43 |
30.90707647 |
35.10885006 |
34.300809 |
0.9699227647 |
0.9062995294 |
0.9921774118 |
0.004998441176 |
76.58618771 |
43.25056759 |
0.03908090059 |
30.81528808 |
10.91589008 |
3.480452588 |
9 |
42 |
31.21899412 |
35.628367 |
34.733014 |
0.9738664706 |
0.9124547647 |
0.9928774118 |
0.004570674118 |
78.15290659 |
43.81718553 |
0.03664940353 |
33.4560958 |
10.4118341 |
3.329654059 |
9 |
41 |
31.47233529 |
36.03708094 |
35.14115129 |
0.9747028824 |
0.9124307059 |
0.9933452353 |
0.004219362941 |
79.41392088 |
43.81415494 |
0.03465589941 |
35.11232527 |
9.9042042 |
3.196825882 |
9 |
40 |
31.76805294 |
36.50345218 |
35.58399112 |
0.9745305294 |
0.9121797059 |
0.9938491765 |
0.003846927059 |
80.59787871 |
44.11029541 |
0.03300479059 |
37.84084146 |
9.43435352 |
3.051375941 |
9 |
39 |
32.06210588 |
36.98658424 |
36.01650147 |
0.9793336471 |
0.9230501765 |
0.9943775882 |
0.003498989412 |
81.69354253 |
44.78502924 |
0.03110437294 |
41.23326303 |
9.083968864 |
2.931130353 |
9 |
38 |
32.32149412 |
37.36857953 |
36.45492282 |
0.9806388824 |
0.9254233529 |
0.9947890588 |
0.003233901765 |
82.64213059 |
45.13550935 |
0.02993542588 |
44.15915355 |
8.636580804 |
2.833448235 |
9 |
37 |
32.63197647 |
37.87014659 |
36.96840488 |
0.9849902941 |
0.9336805294 |
0.9952781765 |
0.002917634706 |
83.70913741 |
45.89267147 |
0.02767176118 |
47.24634195 |
8.025008005 |
2.683671941 |
9 |
36 |
32.86186471 |
38.22060218 |
37.38334682 |
0.9860007059 |
0.9355765294 |
0.9955978824 |
0.002709924706 |
84.42815994 |
46.18604212 |
0.02639234059 |
52.11169893 |
7.648397726 |
2.603063176 |
9 |
35 |
33.14922941 |
38.65252671 |
37.88636353 |
0.9872151765 |
0.9386634118 |
0.99598 |
0.002469828824 |
85.38928235 |
46.57727059 |
0.02472434294 |
54.34129542 |
7.060936479 |
2.500652118 |
9 |
34 |
33.41080588 |
39.05786188 |
38.41071259 |
0.9885768824 |
0.9411126471 |
0.9963417647 |
0.002236601765 |
86.19075194 |
47.02263335 |
0.02316549882 |
54.0196275 |
6.808031278 |
2.409617412 |
9 |
33 |
33.62241765 |
39.39220812 |
38.821 |
0.9892344706 |
0.9425212941 |
0.9966096471 |
0.002066691176 |
86.86774182 |
47.314386 |
0.02214215765 |
55.57547678 |
6.538321579 |
2.356395941 |
9 |
32 |
33.83433529 |
39.71037141 |
39.27425871 |
0.9902931765 |
0.9445677647 |
0.9968984706 |
0.001906960588 |
87.49048688 |
47.59704524 |
0.02088043412 |
57.47310198 |
6.145926532 |
2.284202235 |
9 |
31 |
34.08352353 |
40.08563853 |
39.801764 |
0.9911405294 |
0.9463938235 |
0.9971642353 |
0.001739347059 |
88.14786418 |
47.91892671 |
0.01948856118 |
59.60712709 |
5.806785836 |
2.214920118 |
9 |
30 |
34.3924 |
40.56326429 |
40.36438265 |
0.9917021176 |
0.9476747647 |
0.9974283529 |
0.001562239412 |
88.93059306 |
48.28696 |
0.01820523353 |
61.91694288 |
5.643194689 |
2.147654235 |
9 |
29 |
34.56192941 |
40.85333424 |
40.72444324 |
0.9926158235 |
0.9497428824 |
0.9976138235 |
0.001457990588 |
89.36909588 |
48.53040729 |
0.01704762882 |
63.34096603 |
5.528616961 |
2.109699765 |
9 |
28 |
34.70962941 |
41.07833847 |
41.10619971 |
0.9928759412 |
0.9508064706 |
0.9977621765 |
0.001374365294 |
89.68459565 |
48.74627876 |
0.01623645824 |
64.42263557 |
5.489266872 |
2.078064706 |
9 |
27 |
34.88807059 |
41.36263412 |
41.50082594 |
0.9936525882 |
0.9535828235 |
0.9979235882 |
0.001265718235 |
90.10490806 |
49.13066235 |
0.01550393 |
65.76096463 |
5.470485098 |
2.048998235 |
9 |
26 |
35.05465882 |
41.64799471 |
41.91705465 |
0.994148 |
0.9552885882 |
0.9980555882 |
0.001183901176 |
90.45293876 |
49.45387159 |
0.01459126706 |
67.11236603 |
5.244261321 |
2.009913 |
9 |
25 |
35.21929412 |
41.94146776 |
42.378963 |
0.9950355294 |
0.9570071176 |
0.9982474118 |
0.001081635294 |
90.85983888 |
49.84646424 |
0.01374325765 |
68.94015833 |
5.12061509 |
1.976710765 |
9 |
24 |
35.37728235 |
42.22084712 |
42.83910147 |
0.9955285294 |
0.9586585294 |
0.9984068824 |
0.001000353529 |
91.21051641 |
50.12266529 |
0.01292010412 |
70.63611837 |
4.879515424 |
1.949229 |
9 |
23 |
35.49010588 |
42.40162829 |
43.15481029 |
0.9958319412 |
0.9597752353 |
0.9984922941 |
0.0009491752941 |
91.52977147 |
50.341928 |
0.01241320118 |
71.44873694 |
4.735499508 |
1.931633824 |
9 |
22 |
35.55107059 |
42.49375994 |
43.39439676 |
0.9959336471 |
0.9595530588 |
0.9985629412 |
0.0009143576471 |
91.61922076 |
50.41436794 |
0.01194725353 |
71.98587349 |
4.719968627 |
1.916530647 |
9 |
21 |
35.62754706 |
42.62274347 |
43.60979012 |
0.9963128235 |
0.9610896471 |
0.9986247059 |
0.0008767029412 |
91.81685335 |
50.63764647 |
0.01152604647 |
72.67819566 |
4.578786457 |
1.902630529 |
9 |
20 |
35.70741765 |
42.79487853 |
43.88209359 |
0.9964992353 |
0.9618332941 |
0.9987039412 |
0.00083847 |
91.98311171 |
50.79234847 |
0.01107994294 |
73.24135451 |
4.49925814 |
1.898722118 |
9 |
19 |
35.80057059 |
42.93673559 |
44.19221812 |
0.9967878235 |
0.9627983529 |
0.9987786471 |
0.0007974341176 |
92.24130406 |
51.00546182 |
0.01044976765 |
74.17933874 |
4.37714954 |
1.876413412 |
9 |
18 |
35.86748235 |
43.05889647 |
44.44653982 |
0.996949 |
0.9635157647 |
0.9988475294 |
0.0007655564706 |
92.40078035 |
51.15380424 |
0.01003756647 |
74.83493702 |
4.306672405 |
1.870021765 |
9 |
17 |
35.93970588 |
43.19812276 |
44.68566518 |
0.9972044706 |
0.964422 |
0.9989127647 |
0.0007332894118 |
92.51188906 |
51.37439324 |
0.009602159412 |
75.46851659 |
4.239496764 |
1.849499588 |
9 |
16 |
36.01013529 |
43.32606941 |
44.94484394 |
0.9972946471 |
0.9651361176 |
0.9989666471 |
0.0007002005882 |
92.71579971 |
51.503108 |
0.009125570588 |
76.12740523 |
4.180650388 |
1.846609235 |
9 |
15 |
36.14036471 |
43.493372 |
45.35857529 |
0.9974575882 |
0.9658548235 |
0.9990261765 |
0.0006554582353 |
92.92394206 |
51.72036059 |
0.008678397647 |
77.00379741 |
4.118791061 |
1.833839529 |
9 |
14 |
36.20361765 |
43.62486365 |
45.63504388 |
0.9976084118 |
0.9665937647 |
0.9990775294 |
0.0006323623529 |
93.11183129 |
51.88416394 |
0.008265805294 |
77.4559851 |
4.078676294 |
1.826461412 |
9 |
13 |
36.27557059 |
43.761259 |
45.89381682 |
0.9977528235 |
0.967154 |
0.9991383529 |
0.0006035429412 |
93.22052665 |
52.06888724 |
0.007910925882 |
77.96144093 |
4.009225453 |
1.817266941 |
9 |
12 |
36.31313529 |
43.83661076 |
46.16413788 |
0.9979617059 |
0.9674486471 |
0.9991894118 |
0.0005818876471 |
93.34948006 |
52.25835824 |
0.007457184118 |
78.48557164 |
4.004354659 |
1.808909176 |
9 |
11 |
36.39181765 |
43.98000612 |
46.48488765 |
0.998115 |
0.9686144706 |
0.9992436471 |
0.0005514764706 |
93.51767153 |
52.47979176 |
0.006989355294 |
79.00807671 |
3.928152772 |
1.802958176 |
9 |
10 |
36.45126471 |
44.09514753 |
46.75919847 |
0.9982880588 |
0.9694061176 |
0.9993007647 |
0.0005277388235 |
93.67247824 |
52.68566118 |
0.006612283529 |
79.49183496 |
3.969232489 |
1.794842824 |
9 |
9 |
36.50310588 |
44.20812582 |
47.01740506 |
0.9984327647 |
0.9700574118 |
0.9993398235 |
0.0005088682353 |
93.78628653 |
52.85467429 |
0.006268716471 |
79.77266934 |
3.954127101 |
1.796985765 |
9 |
8 |
36.55986471 |
44.32820635 |
47.33163706 |
0.9986014118 |
0.9709761765 |
0.9993975294 |
0.0004857217647 |
93.96763871 |
53.10097376 |
0.005887631765 |
80.27850787 |
3.937997285 |
1.786232176 |
9 |
7 |
36.61585882 |
44.44085771 |
47.59254065 |
0.9987214706 |
0.9718147059 |
0.9994362941 |
0.0004655041176 |
94.09725353 |
53.33715947 |
0.005507764118 |
80.60042058 |
3.904606034 |
1.779313706 |
9 |
6 |
36.65892353 |
44.52423465 |
47.80860929 |
0.9987619412 |
0.971859 |
0.999442 |
0.0004526058824 |
94.16648153 |
53.44407441 |
0.005411165882 |
81.04678547 |
3.868213906 |
1.776989471 |
9 |
5 |
36.70726471 |
44.63949694 |
48.10665141 |
0.9988790588 |
0.9723882941 |
0.9994867059 |
0.0004349094118 |
94.28903912 |
53.65360659 |
0.005040928235 |
81.30987889 |
3.831128752 |
1.773896412 |
9 |
4 |
36.74961765 |
44.74143 |
48.38165194 |
0.9990072353 |
0.9731358235 |
0.9995335882 |
0.0004171864706 |
94.41267753 |
53.88560918 |
0.004710099412 |
81.70335677 |
3.82058605 |
1.768430059 |
9 |
3 |
36.77870588 |
44.82106129 |
48.60918371 |
0.9991084118 |
0.9736236471 |
0.9995731176 |
0.0004044741176 |
94.50556788 |
54.08491553 |
0.004349849412 |
81.76876943 |
3.823763413 |
1.765978471 |
9 |
2 |
36.81484118 |
44.91832388 |
48.82955559 |
0.9991917647 |
0.9741762941 |
0.9996052353 |
0.0003911758824 |
94.60137829 |
54.28784729 |
0.004114074118 |
82.04060124 |
3.822383067 |
1.763057235 |
9 |
1 |
36.84213529 |
45.00184488 |
49.03002841 |
0.9992712353 |
0.9746680588 |
0.9996374118 |
0.0003813005882 |
94.69230088 |
54.49401347 |
0.003873209412 |
82.14834438 |
3.807304649 |
1.761085294 |
Calculating bpp
Below is the size information from encoding the noto-emoji data using AVIF with a speed of 9 and an encoding_point of 40. You can see all of the options used in the Metrics - Running section.
input |
outputSize |
width |
height |
bpp |
emoji_u263a.png |
5924 |
512 |
512 |
0.1807861328 |
emoji_u1f64f.png |
3999 |
512 |
512 |
0.1220397949 |
emoji_u1f926.png |
4656 |
512 |
512 |
0.1420898438 |
emoji_u1f525.png |
4225 |
512 |
512 |
0.1289367676 |
emoji_u1f44f.png |
6429 |
512 |
512 |
0.1961975098 |
emoji_u1f495.png |
3817 |
512 |
512 |
0.1164855957 |
emoji_u1f602.png |
7901 |
512 |
512 |
0.2411193848 |
emoji_u1f60d.png |
6223 |
512 |
512 |
0.1899108887 |
emoji_u1f618.png |
6008 |
512 |
512 |
0.1833496094 |
emoji_u1f970.png |
6735 |
512 |
512 |
0.2055358887 |
emoji_u1f923.png |
7764 |
512 |
512 |
0.2369384766 |
emoji_u1f937.png |
5673 |
512 |
512 |
0.1731262207 |
emoji_u1f973.png |
8202 |
512 |
512 |
0.2503051758 |
emoji_u1f382.png |
6622 |
512 |
512 |
0.2020874023 |
emoji_u2764.png |
3242 |
512 |
512 |
0.09893798828 |
emoji_u1f44d.png |
4000 |
512 |
512 |
0.1220703125 |
emoji_u1f389.png |
11326 |
512 |
512 |
0.3456420898 |
Next we average all the bpp for every input. The example above gives us the average value of 0.1844446519.
Next we average all the bpp for every encoding_point within a given speed/effort. Below is the average bpp for every encoding_point within speed 9 from our example.
speed |
encoding_point |
bpp |
9 |
63 |
0.03986672794 |
9 |
62 |
0.04541015625 |
9 |
61 |
0.05034143784 |
9 |
60 |
0.05435360179 |
9 |
59 |
0.05857041303 |
9 |
58 |
0.06273696002 |
9 |
57 |
0.06677784639 |
9 |
56 |
0.07098209157 |
9 |
55 |
0.07532994887 |
9 |
54 |
0.08025045956 |
9 |
53 |
0.08511532054 |
9 |
52 |
0.09028715246 |
9 |
51 |
0.09558644014 |
9 |
50 |
0.1011819278 |
9 |
49 |
0.1073644301 |
9 |
48 |
0.1136582318 |
9 |
47 |
0.1208262724 |
9 |
46 |
0.1281397202 |
9 |
45 |
0.1359899184 |
9 |
44 |
0.1446515252 |
9 |
43 |
0.1533167222 |
9 |
42 |
0.1632672478 |
9 |
41 |
0.1733560001 |
9 |
40 |
0.1844446519 |
9 |
39 |
0.195513557 |
9 |
38 |
0.2076380113 |
9 |
37 |
0.2206313189 |
9 |
36 |
0.2329819623 |
9 |
35 |
0.2470200483 |
9 |
34 |
0.2618192785 |
9 |
33 |
0.2749005486 |
9 |
32 |
0.2895041073 |
9 |
31 |
0.3059387207 |
9 |
30 |
0.3252258301 |
9 |
29 |
0.3381329705 |
9 |
28 |
0.3523236443 |
9 |
27 |
0.3678427304 |
9 |
26 |
0.3840942383 |
9 |
25 |
0.4022701488 |
9 |
24 |
0.4215770048 |
9 |
23 |
0.4352183622 |
9 |
22 |
0.4462764964 |
9 |
21 |
0.4582250259 |
9 |
20 |
0.4694429285 |
9 |
19 |
0.4841254739 |
9 |
18 |
0.4976196289 |
9 |
17 |
0.5124906652 |
9 |
16 |
0.527604047 |
9 |
15 |
0.5499913833 |
9 |
14 |
0.5686035156 |
9 |
13 |
0.5886661305 |
9 |
12 |
0.610452091 |
9 |
11 |
0.6365320542 |
9 |
10 |
0.6634629193 |
9 |
9 |
0.6928728889 |
9 |
8 |
0.7304238712 |
9 |
7 |
0.768714456 |
9 |
6 |
0.8185424805 |
9 |
5 |
0.8744991527 |
9 |
4 |
0.9427149156 |
9 |
3 |
1.026264864 |
9 |
2 |
1.14748607 |
9 |
1 |
1.321691176 |
Then we use the values in one of the metrics columns and the bpp column as one of the inputs to the graphs and BD-Rate calculations.Codecs - Versions
AVIF
JPEG XL
MozJPEG
libjpeg-turbo
WebP
Metrics - Versions
ImageMagick
ImageMagick is used to calculate these two metrics below:psnr_magick
ssim_magick
libvmaf
libvmaf is used to calculate the metrics below:psnr_hvs
psnr_y
ssim
msssim
vmaf
ciede2000
DSSIM
dssim
libjxl
libjxl is used to calculate the metrics below:ssimulacra
ssimulacra2
butteraugli
p3norm
Codecs - Building
AVIF
Build the specific checkout of libaom.git clone https://aomedia.googlesource.com/aom
cd aom
git checkout cb8163144
mkdir build.libavif
cd build.libavif
cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_DOCS=0 -DENABLE_EXAMPLES=0 -DENABLE_TESTDATA=0 -DENABLE_TESTS=0 -DENABLE_TOOLS=0 -DBUILD_SHARED_LIBS=0 ..
make -j8
Build the remaining prerequisites for avifenc. Note you may need to build specific hashes like libaom.cd libavif/ext
./dav1d.cmd
./libsharpyuv.cmd
./libyuv.cmd
Build avifenc.cd ../../
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DAVIF_LOCAL_AOM=1 -DAVIF_CODEC_AOM=1 -DAVIF_LOCAL_DAV1D=1 -DAVIF_CODEC_DAV1D=1 -DBUILD_SHARED_LIBS=0 -DAVIF_BUILD_APPS=1 -DAVIF_LOCAL_LIBYUV=1 -DAVIF_LOCAL_LIBSHARPYUV=1 ..
make -j 8
JPEG XL
Building
See JPEG XL building for more information on building JPEG XL.MozJPEG
Building
See MozJPEG building for more information on building MozJPEG.libjpeg-turbo
Building
See libjpeg-turbo building for more information on building libjpeg-turbo.WebP
Building
See WebP building for more information on building WebP.Metrics - Building
ImageMagick
ImageMagick is used to calculate these two metrics below:psnr_magick
ssim_magick
Building
See Mac, Windows, or Linux for more information on building ImageMagick.libvmaf
libvmaf is used to calculate the metrics below:psnr_hvs
psnr_y
ssim
msssim
vmaf
ciede2000
Building
See libvmaf building for more information on building libvmaf.DSSIM
dssim
Building
See DSSIM building for more information on building DSSIM.libjxl
libjxl is used to calculate the metrics below:ssimulacra
ssimulacra2
butteraugli
p3norm
Building
See libjxl building for more information on building libjxl.Codecs - Running
AVIF
Encode command line:for THREADS 1, 2, 4, 8
for SPEED 0 to 10
for CQ-LEVEL 1 to 63
if {THREADS} equals 1 TILES=0
if {THREADS} equals 2 TILES=1
if {THREADS} equals 4 or 8 TILES=2
time avifenc {SOURCE} {ENCODED} --speed {SPEED} --jobs {THREADS} -y 420 --min 0 --max 63 --tilecolslog2 {TILES} --tilerowslog2 {TILES} -a end-usage=q -a cq-level={CQ-LEVEL} -a tune=ssim
Decode command line:time avifdec {ENCODED} {DECODED} --upsampling bilinear
Lossless Encode command line:time avifenc {SOURCE} {ENCODED} --lossless --speed 0 --jobs 1 -y 444 -d 8 --ignore-icc
JPEG XL
Encode command line:for THREADS 1, 2, 4, 8
for EFFORT 3 to 9
for DISTANCE 0.1 to 1.9 stepping by 0.1 and DISTANCE 2.0 to 15.0 stepping by 0.5
time cjxl {SOURCE} {ENCODED} -v -e {EFFORT} -d {DISTANCE} --num_threads={THREADS}
Decode command line:time djxl {ENCODED} {DECODED}
Lossless Encode command line:time cjxl {SOURCE} {ENCODED} -v -e 9 -d 0 -E 3 --num_threads=1
MozJPEG
Encode command line:for QUALITY 1 to 100
time cjpeg -outfile {ENCODED} -quality {QUALITY} {SOURCE}
libjpeg-turbo
Encode command line:for QUALITY 1 to 100
time tjexample {SOURCE} {ENCODED} -q {QUALITY}
WebP
Encode command line:for EFFORT 0 to 6
for QUALITY 0 to 100
time cwebp -v -m {EFFORT} -q {QUALITY} {SOURCE} -o {ENCODED}
Decode command line:time dwebp -v {ENCODED} -o {DECODED}
Lossless Encode command line:time cwebp -v -z 9 {SOURCE} -o {ENCODED}
Metrics - Running
ImageMagick
ImageMagick is used to calculate these two metrics below:psnr_magick
ssim_magick
Metric command line:for METRIC PSNR, SSIM
magick compare -metric {METRIC} {SOURCE} {DECODED} {TEMPFILE}
libvmaf
libvmaf is used to calculate the metrics below:psnr_hvs
psnr_y
ssim
msssim
vmaf
ciede2000
libvmaf only takes YUV as input, so we must first convert the RGB PNG files to YUV444 y4m files.
Convert {SOURCE} to YUV444 y4m:
ffmpeg -i {SOURCE} -pix_fmt yuvj444p {Y4MSOURCE} -y
Convert {DECODED} to YUV444 y4m:
ffmpeg -i {DECODED} -pix_fmt yuvj444p {Y4MDECODED} -y
With the command below, libvmaf will return a json file with the requested metrics.
vmaf --json --feature psnr --feature psnr_hvs --feature float_ssim --feature float_ms_ssim --feature ciede -r {Y4MSOURCE} -d {Y4MDECODED} --output {VMAFJSON}
DSSIM
dssim
Metric command line:dssim {SOURCE} {DECODED}
libjxl
libjxl is used to calculate the metrics below:ssimulacra
ssimulacra2
butteraugli
p3norm
ssimulacra command line:ssimulacra_main {SOURCE} {DECODED}
ssimulacra2 command line:ssimulacra2 {SOURCE} {DECODED}
butteraugli and p3norm values are both returned from the butteraugli binary. butteraugli is the first value and p3norm is the second value.butteraugli_main {SOURCE} {DECODED}