Originally committed as revision 2640 to svn://svn.ffmpeg.org/ffmpeg/trunk
Michael Niedermayer authored on 2003/12/31 11:32:54... | ... |
@@ -1,70 +1,70 @@ |
1 | 1 |
ffmpeg regression test |
2 | 2 |
74e25b401f34321aeb854e264ef62df8 *./data/a-mpeg1.mpg |
3 | 3 |
1ee8816bd078efe66be0090b1d9b0af1 *./data/out.yuv |
4 |
-stddev: 7.63 bytes:7602176 |
|
4 |
+stddev: 7.63 PSNR:30.47 bytes:7602176 |
|
5 | 5 |
b588110bebb48b5a1815ac26d0f0c9cc *./data/a-mpeg2.mpg |
6 | 6 |
ddfa5c618dab54df0f47976ddd55d90f *./data/out.yuv |
7 |
-stddev: 7.65 bytes:7602176 |
|
7 |
+stddev: 7.65 PSNR:30.44 bytes:7602176 |
|
8 | 8 |
345b79f7afe43abc0128a7b1d5fff949 *./data/a-mpeg2i.mpg |
9 | 9 |
5df468301367ed2dde5f064bf4c17301 *./data/out.yuv |
10 |
-stddev: 7.96 bytes:7602176 |
|
10 |
+stddev: 7.96 PSNR:30.10 bytes:7602176 |
|
11 | 11 |
d0dc46dd831398237a690ebbeff18b64 *./data/a-msmpeg4v2.avi |
12 | 12 |
712aa6c959d1d90a78fe98657cbff19c *./data/out.yuv |
13 |
-stddev: 8.11 bytes:7602176 |
|
13 |
+stddev: 8.11 PSNR:29.94 bytes:7602176 |
|
14 | 14 |
dae855177b45cbe6e40c6777f95095ef *./data/a-msmpeg4.avi |
15 | 15 |
8786aa956838234fe3e48d0ef8cbd46c *./data/out.yuv |
16 |
-stddev: 8.12 bytes:7602176 |
|
16 |
+stddev: 8.12 PSNR:29.93 bytes:7602176 |
|
17 | 17 |
6633a1111c734c9156729b8b7e198c17 *./data/a-wmv1.avi |
18 | 18 |
7261e23fd8ad1de6efee022051b936be *./data/out.yuv |
19 |
-stddev: 8.10 bytes:7602176 |
|
19 |
+stddev: 8.10 PSNR:29.94 bytes:7602176 |
|
20 | 20 |
30dcbbe391149d981162a1f4727c43d6 *./data/a-wmv2.avi |
21 | 21 |
7261e23fd8ad1de6efee022051b936be *./data/out.yuv |
22 |
-stddev: 8.10 bytes:7602176 |
|
22 |
+stddev: 8.10 PSNR:29.94 bytes:7602176 |
|
23 | 23 |
4bf9df20cdeb1aa01115761642b4e80b *./data/a-h263.avi |
24 | 24 |
545df74e0aa443499600faedd10a7065 *./data/out.yuv |
25 |
-stddev: 8.18 bytes:7602176 |
|
25 |
+stddev: 8.18 PSNR:29.86 bytes:7602176 |
|
26 | 26 |
920a0a8a0063655d1f34dcaad7857f98 *./data/a-h263p.avi |
27 | 27 |
0eb167c9dfcbeeecbf3debed8af8f811 *./data/out.yuv |
28 |
-stddev: 2.08 bytes:7602176 |
|
28 |
+stddev: 2.08 PSNR:41.74 bytes:7602176 |
|
29 | 29 |
66f8b4b5b4f0655cff7bdbc44969cab3 *./data/a-odivx.mp4 |
30 | 30 |
5bd332c77ef45e58b7017e06a0467dd3 *./data/out.yuv |
31 |
-stddev: 7.94 bytes:7602176 |
|
31 |
+stddev: 7.94 PSNR:30.12 bytes:7602176 |
|
32 | 32 |
5704a082cc5c5970620123ae20566286 *./data/a-huffyuv.avi |
33 | 33 |
799d3db687f6cdd7a837ec156efc171f *./data/out.yuv |
34 |
-stddev: 0.00 bytes:7602176 |
|
34 |
+stddev: 0.00 PSNR:99.99 bytes:7602176 |
|
35 | 35 |
e9f63126859b97cd23cd1413038f8f7b *./data/a-mpeg4-rc.avi |
36 | 36 |
90a159074b1b109569914ee63f387860 *./data/out.yuv |
37 |
-stddev: 10.18 bytes:7145472 |
|
37 |
+stddev: 10.18 PSNR:27.96 bytes:7145472 |
|
38 | 38 |
d7d295f97a1e07b633f973d2325880ce *./data/a-mpeg4-adv.avi |
39 | 39 |
612f79510c8098f1421aa154047e2bf2 *./data/out.yuv |
40 |
-stddev: 7.25 bytes:7602176 |
|
40 |
+stddev: 7.25 PSNR:30.91 bytes:7602176 |
|
41 | 41 |
f863f4198521bd76930ea33991b47273 *./data/a-error-mpeg4-adv.avi |
42 | 42 |
ba7fcd126c7c9fead5a5de71aaaf0624 *./data/out.yuv |
43 |
-stddev: 16.80 bytes:7602176 |
|
43 |
+stddev: 16.80 PSNR:23.61 bytes:7602176 |
|
44 | 44 |
328ebd044362116e274739e23c482ee7 *./data/a-mpeg1b.mpg |
45 | 45 |
788a9d500dc8986231a18076fc80fd73 *./data/out.yuv |
46 |
-stddev: 10.07 bytes:7145472 |
|
46 |
+stddev: 10.07 PSNR:28.06 bytes:7145472 |
|
47 | 47 |
07042f42b3119c39eb26537a84a451df *./data/a-mjpeg.avi |
48 | 48 |
f23a9e50a559e174766ee808c48fea22 *./data/out.yuv |
49 |
-stddev: 8.87 bytes:7602176 |
|
49 |
+stddev: 8.87 PSNR:29.15 bytes:7602176 |
|
50 | 50 |
1d565db4a3a054261af95f2483a37cd6 *./data/a-ljpeg.avi |
51 | 51 |
799d3db687f6cdd7a837ec156efc171f *./data/out.yuv |
52 |
-stddev: 0.00 bytes:7602176 |
|
52 |
+stddev: 0.00 PSNR:99.99 bytes:7602176 |
|
53 | 53 |
4b37703d3dc03873f99603165c0fe11e *./data/a-rv10.rm |
54 | 54 |
255469fef47bee94cfb2e3385ebb736b *./data/out.yuv |
55 |
-stddev: 13.42 bytes:7602176 |
|
55 |
+stddev: 13.42 PSNR:25.56 bytes:7602176 |
|
56 | 56 |
89ad858355f9b0a92d024c5ba6e369dd *./data/a-asv1.avi |
57 | 57 |
b3e1696d73071c8f7f0ff4e10c1677ca *./data/out.yuv |
58 |
-stddev: 19.19 bytes:7602176 |
|
58 |
+stddev: 19.19 PSNR:22.46 bytes:7602176 |
|
59 | 59 |
3909db39c3d2e9a72a952254e8685ff7 *./data/a-asv2.avi |
60 | 60 |
551b263bfb2acb9ea6dd2000f184494f *./data/out.yuv |
61 |
-stddev: 17.98 bytes:7602176 |
|
61 |
+stddev: 17.98 PSNR:23.02 bytes:7602176 |
|
62 | 62 |
37a528aa9efc28c5c3cc8191da90e012 *./data/a-flv.flv |
63 | 63 |
57ea0821ec4377e96647adc22717a4ba *./data/out.yuv |
64 |
-stddev: 8.19 bytes:7602176 |
|
64 |
+stddev: 8.19 PSNR:29.85 bytes:7602176 |
|
65 | 65 |
0ed9b02681d6d44bf8c390ba6c4f5c66 *./data/a-ffv1.avi |
66 | 66 |
799d3db687f6cdd7a837ec156efc171f *./data/out.yuv |
67 |
-stddev: 0.00 bytes:7602176 |
|
67 |
+stddev: 0.00 PSNR:99.99 bytes:7602176 |
|
68 | 68 |
21f8ff9f1daacd9133683bb4ea0f50a4 *./data/a-mp2.mp2 |
69 | 69 |
624d9789f3ac193bbae4af3bd8cb02b7 *./data/out.wav |
70 | 70 |
d056da679e6d6682812fffb28a7f0db6 *./data/a-ac3.rm |
... | ... |
@@ -1,70 +1,70 @@ |
1 | 1 |
ffmpeg regression test |
2 | 2 |
a6ccb5e768c7bed7a08f8e4343d81871 *./data/a-mpeg1.mpg |
3 | 3 |
9364e15902bc56603dfb453f8bf146e0 *./data/out.yuv |
4 |
-stddev: 4.93 bytes:7602176 |
|
4 |
+stddev: 4.93 PSNR:34.25 bytes:7602176 |
|
5 | 5 |
aa0f088777131d8ffb627e6ff37312ca *./data/a-mpeg2.mpg |
6 | 6 |
830e7d798089ea6213e0867fd7676fde *./data/out.yuv |
7 |
-stddev: 4.95 bytes:7602176 |
|
7 |
+stddev: 4.95 PSNR:34.22 bytes:7602176 |
|
8 | 8 |
ed480119089c61ba5a5a8668675c7d49 *./data/a-mpeg2i.mpg |
9 | 9 |
a6ec3343ce12d72ccc7d0d8303b84781 *./data/out.yuv |
10 |
-stddev: 4.96 bytes:7602176 |
|
10 |
+stddev: 4.96 PSNR:34.20 bytes:7602176 |
|
11 | 11 |
14db391f167b52b21a983157b410affc *./data/a-msmpeg4v2.avi |
12 | 12 |
fc8881e0904af9491d5fa0163183954b *./data/out.yuv |
13 |
-stddev: 5.29 bytes:7602176 |
|
13 |
+stddev: 5.29 PSNR:33.64 bytes:7602176 |
|
14 | 14 |
484b4dccac1e552f0f29971f4a066598 *./data/a-msmpeg4.avi |
15 | 15 |
dd82e8badc40ad5f76b0ffc1d6945b1c *./data/out.yuv |
16 |
-stddev: 5.29 bytes:7602176 |
|
16 |
+stddev: 5.29 PSNR:33.64 bytes:7602176 |
|
17 | 17 |
d63c0cbb6d845bfd8e2735b4ea733a53 *./data/a-wmv1.avi |
18 | 18 |
407c23671e7c7265c19c91966dbba317 *./data/out.yuv |
19 |
-stddev: 5.29 bytes:7602176 |
|
19 |
+stddev: 5.29 PSNR:33.65 bytes:7602176 |
|
20 | 20 |
ba4616dc4db0db636a7c26bc8f2de04e *./data/a-wmv2.avi |
21 | 21 |
407c23671e7c7265c19c91966dbba317 *./data/out.yuv |
22 |
-stddev: 5.29 bytes:7602176 |
|
22 |
+stddev: 5.29 PSNR:33.65 bytes:7602176 |
|
23 | 23 |
f980b5e38c4b919fbe5b660fe12fcf1a *./data/a-h263.avi |
24 | 24 |
8bcc9f78373ec424e864b40734e124ba *./data/out.yuv |
25 |
-stddev: 5.41 bytes:7602176 |
|
25 |
+stddev: 5.41 PSNR:33.45 bytes:7602176 |
|
26 | 26 |
f7828488c31ccb6787367ef4e4a2ad42 *./data/a-h263p.avi |
27 | 27 |
7d39d1f272205a6a231d0e0baf32ff9d *./data/out.yuv |
28 |
-stddev: 1.91 bytes:7602176 |
|
28 |
+stddev: 1.91 PSNR:42.49 bytes:7602176 |
|
29 | 29 |
a831828595e5764e6ee30c2d9e548385 *./data/a-odivx.mp4 |
30 | 30 |
ad75d173bd30d642147f00da21df0012 *./data/out.yuv |
31 |
-stddev: 5.27 bytes:7602176 |
|
31 |
+stddev: 5.27 PSNR:33.67 bytes:7602176 |
|
32 | 32 |
242a7a18c2793e115007bc163861ef4e *./data/a-huffyuv.avi |
33 | 33 |
dde5895817ad9d219f79a52d0bdfb001 *./data/out.yuv |
34 |
-stddev: 0.00 bytes:7602176 |
|
34 |
+stddev: 0.00 PSNR:99.99 bytes:7602176 |
|
35 | 35 |
6a469f42ce6946dd4c708f9e51e3da6a *./data/a-mpeg4-rc.avi |
36 | 36 |
df9de7134d961119705b4e0cabca1f12 *./data/out.yuv |
37 |
-stddev: 4.20 bytes:7145472 |
|
37 |
+stddev: 4.20 PSNR:35.64 bytes:7145472 |
|
38 | 38 |
483504d060b0bd8ac1acfa3a823c2ad7 *./data/a-mpeg4-adv.avi |
39 | 39 |
08d24bdd7da80cffaf8abaa3e71b1843 *./data/out.yuv |
40 |
-stddev: 4.96 bytes:7602176 |
|
40 |
+stddev: 4.96 PSNR:34.20 bytes:7602176 |
|
41 | 41 |
03ff35856faefb4882eaf4d86d95bea7 *./data/a-error-mpeg4-adv.avi |
42 | 42 |
8550acff0851ee915bd5800f1e20f37c *./data/out.yuv |
43 |
-stddev: 9.66 bytes:7602176 |
|
43 |
+stddev: 9.66 PSNR:28.42 bytes:7602176 |
|
44 | 44 |
671802a2c5078e69f7f422765ea87f2a *./data/a-mpeg1b.mpg |
45 | 45 |
d3d5876cef34b728602d5a22eee9249f *./data/out.yuv |
46 |
-stddev: 5.93 bytes:7145472 |
|
46 |
+stddev: 5.93 PSNR:32.66 bytes:7145472 |
|
47 | 47 |
e9218a1db885fe0262e88f9df630307d *./data/a-mjpeg.avi |
48 | 48 |
a365b4da246ad68caf96b702b7f961a1 *./data/out.yuv |
49 |
-stddev: 4.76 bytes:7602176 |
|
49 |
+stddev: 4.76 PSNR:34.56 bytes:7602176 |
|
50 | 50 |
defd90b44bced2772c6ca0d8eb75f668 *./data/a-ljpeg.avi |
51 | 51 |
dde5895817ad9d219f79a52d0bdfb001 *./data/out.yuv |
52 |
-stddev: 0.00 bytes:7602176 |
|
52 |
+stddev: 0.00 PSNR:99.99 bytes:7602176 |
|
53 | 53 |
1b46671251277c14f3a24a034648c458 *./data/a-rv10.rm |
54 | 54 |
e1923bc2940a017858e354c3fb0e6244 *./data/out.yuv |
55 |
-stddev: 13.18 bytes:7602176 |
|
55 |
+stddev: 13.18 PSNR:25.72 bytes:7602176 |
|
56 | 56 |
9c4f5a4613a5595c90c6b99bf143b6a9 *./data/a-asv1.avi |
57 | 57 |
4251d7f496bbf362251b065e840a1b73 *./data/out.yuv |
58 |
-stddev: 9.80 bytes:7602176 |
|
58 |
+stddev: 9.80 PSNR:28.29 bytes:7602176 |
|
59 | 59 |
19652f2aac2d4d0379d37ce17e0bbea7 *./data/a-asv2.avi |
60 | 60 |
7d887519f7884e7c49c591831c11ac50 *./data/out.yuv |
61 |
-stddev: 9.71 bytes:7602176 |
|
61 |
+stddev: 9.71 PSNR:28.37 bytes:7602176 |
|
62 | 62 |
bee27a404ab6a1b7ab1d3551eb4f1877 *./data/a-flv.flv |
63 | 63 |
86da6ee46d2df190b4a0d72523b14a25 *./data/out.yuv |
64 |
-stddev: 5.29 bytes:7602176 |
|
64 |
+stddev: 5.29 PSNR:33.64 bytes:7602176 |
|
65 | 65 |
0db09835ebc3d22f166f30879f3ccc38 *./data/a-ffv1.avi |
66 | 66 |
dde5895817ad9d219f79a52d0bdfb001 *./data/out.yuv |
67 |
-stddev: 0.00 bytes:7602176 |
|
67 |
+stddev: 0.00 PSNR:99.99 bytes:7602176 |
|
68 | 68 |
21f8ff9f1daacd9133683bb4ea0f50a4 *./data/a-mp2.mp2 |
69 | 69 |
624d9789f3ac193bbae4af3bd8cb02b7 *./data/out.wav |
70 | 70 |
d056da679e6d6682812fffb28a7f0db6 *./data/a-ac3.rm |
... | ... |
@@ -19,10 +19,63 @@ |
19 | 19 |
|
20 | 20 |
#include <stdio.h> |
21 | 21 |
#include <inttypes.h> |
22 |
+#include <assert.h> |
|
22 | 23 |
|
23 | 24 |
#define F 100 |
24 | 25 |
#define SIZE 2048 |
25 | 26 |
|
27 |
+uint64_t exp16_table[20]={ |
|
28 |
+ 65537, |
|
29 |
+ 65538, |
|
30 |
+ 65540, |
|
31 |
+ 65544, |
|
32 |
+ 65552, |
|
33 |
+ 65568, |
|
34 |
+ 65600, |
|
35 |
+ 65664, |
|
36 |
+ 65793, |
|
37 |
+ 66050, |
|
38 |
+ 66568, |
|
39 |
+ 67616, |
|
40 |
+ 69763, |
|
41 |
+ 74262, |
|
42 |
+ 84150, |
|
43 |
+ 108051, |
|
44 |
+ 178145, |
|
45 |
+ 484249, |
|
46 |
+ 3578144, |
|
47 |
+ 195360063, |
|
48 |
+}; |
|
49 |
+#if 1 |
|
50 |
+// 16.16 fixpoint exp() |
|
51 |
+static unsigned int exp16(unsigned int a){ |
|
52 |
+ int i; |
|
53 |
+ int out= 1<<16; |
|
54 |
+ |
|
55 |
+ for(i=19;i>=0;i--){ |
|
56 |
+ if(a&(1<<i)) |
|
57 |
+ out= (out*exp16_table[i] + (1<<15))>>16; |
|
58 |
+ } |
|
59 |
+ |
|
60 |
+ return out; |
|
61 |
+} |
|
62 |
+// 16.16 fixpoint log() |
|
63 |
+static uint64_t log16(uint64_t a){ |
|
64 |
+ int i; |
|
65 |
+ int out=0; |
|
66 |
+ |
|
67 |
+ assert(a >= (1<<16)); |
|
68 |
+ a<<=16; |
|
69 |
+ |
|
70 |
+ for(i=19;i>=0;i--){ |
|
71 |
+ if(a<(exp16_table[i]<<16)) continue; |
|
72 |
+ out |= 1<<i; |
|
73 |
+ a = ((a<<16) + exp16_table[i]/2)/exp16_table[i]; |
|
74 |
+ } |
|
75 |
+ return out; |
|
76 |
+} |
|
77 |
+ |
|
78 |
+#endif |
|
26 | 79 |
static uint64_t int_sqrt(uint64_t a) |
27 | 80 |
{ |
28 | 81 |
uint64_t ret=0; |
... | ... |
@@ -45,6 +98,7 @@ int main(int argc,char* argv[]){ |
45 | 45 |
uint64_t dev; |
46 | 46 |
FILE *f[2]; |
47 | 47 |
uint8_t buf[2][SIZE]; |
48 |
+ uint64_t psnr; |
|
48 | 49 |
|
49 | 50 |
if(argc!=3){ |
50 | 51 |
printf("tiny_psnr <file1> <file2>\n"); |
... | ... |
@@ -66,9 +120,16 @@ int main(int argc,char* argv[]){ |
66 | 66 |
} |
67 | 67 |
|
68 | 68 |
dev= int_sqrt((sse*F*F)/i); |
69 |
+ if(sse) |
|
70 |
+ psnr= (log16(256*256*255*255LL*i/sse)*284619LL*F + (1<<31)) / (1LL<<32); |
|
71 |
+ else |
|
72 |
+ psnr= 100*F-1; //floating point free infinity :) |
|
69 | 73 |
|
70 |
- //FIXME someone should write a integer fixpoint log() function for bitexact PSNR scores ... |
|
71 |
- printf("stddev:%3d.%02d bytes:%d\n", (int)(dev/F), (int)(dev%F), i); |
|
72 |
- |
|
74 |
+ printf("stddev:%3d.%02d PSNR:%2d.%02d bytes:%d\n", |
|
75 |
+ (int)(dev/F), (int)(dev%F), |
|
76 |
+ (int)(psnr/F), (int)(psnr%F), |
|
77 |
+ i); |
|
73 | 78 |
return 0; |
74 | 79 |
} |
80 |
+ |
|
81 |
+ |