| 2509 | } |
| 2510 | |
| 2511 | void test_webp() |
| 2512 | { |
| 2513 | #ifdef DLIB_WEBP_SUPPORT |
| 2514 | print_spinner(); |
| 2515 | matrix<rgb_pixel> rgb_img, rgb_dec; |
| 2516 | matrix<rgb_alpha_pixel> rgba_img, rgba_dec; |
| 2517 | matrix<bgr_pixel> bgr_img, bgr_dec; |
| 2518 | matrix<bgr_alpha_pixel> bgra_img, bgra_dec; |
| 2519 | // this is a matrix<rgb_alpha_pixel> of the 32x32 dlib logo |
| 2520 | const std::string data{ |
| 2521 | "gP79Jk3Zra0ocokRFuNsUUuZg4phoFDDKp9wTEPIHgX3GSQfaiwJIZGVecNTfibjcx8QxSZplz/p" |
| 2522 | "st61fSu3N26BEzFl16L7kOsPiktkqJb7poGAXYngdkNPClBOWV0zV300nMmcpKoQ6e9IxLJ9ouJJ" |
| 2523 | "++dwNeTNdQN6Ehhk7jdBM62XV1YzcehwRuApNugTjSozbTEqTSdrz1ftXP7rhgVLkWNrnZ2Cd+oF" |
| 2524 | "qkIcZKWsnpz0K1JiFMz7J+d3S4aTQSWKH2qezLT/YKGfZsyT3pUCwwdYi/dF/EaUg7mhlRdk66wD" |
| 2525 | "WYtoAFObeu85hQbU/uEVhwK6NBSUfLmwIQYtGw+Kr2qKaiTIS6wzcyIRUvI0sVSVeWBXNYPHq6z7" |
| 2526 | "t6XcLG5ipOSvGDCUa5nXqnQ8tLKrRpewxvy6M8pzwmw3FqXt3oqq5umxi3MpU5PgU5dFuDor30G/" |
| 2527 | "IJr+FtHDWBQHrHlZmbg/NNllK2d0D+fTPNfTYEmOaTdMO8av36523OJK8zXvKWqgPccgjchbIv8O" |
| 2528 | "VfO3PwooK9XA23Bt4+nqMlQ9cs9FXmW/QyaoI5/996fShh/KFeup1dsF7VyLu5BDnGX+/t80SaAf" |
| 2529 | "2MNPYJZs27klBwZs39u2Eyk37UKTZPK7YFQW+pbMhHInHswcV2TsQHMEA9RONwhkeR7O0JSJrryy" |
| 2530 | "2gXvadc+oRqux0Zs1mpOn2f2BSfZnGDbKcgUwcDucI69J30NEKHlvnqZ+4tA3frIEuhZrub9IrHs" |
| 2531 | "gQK7HCzJsWfKoF7/p/unykiAL5zh5chNToECkcNNHY9IkRn56bZ6iLv5TrQmWkknjAdP9fY50E1q" |
| 2532 | "+asVnWv9DgrtXwJE0pZn/3tHA9CizwkfmF0zu/c0BBixXmi1Vh3E9pf3yVHQIfj96gLGBWTBkLQq" |
| 2533 | "DoqWRialGKmH4hnLbNTBqc3lkisAAWdBsobZ5fB27waJbOnoI9LwR6TOohN9IYPR4cSIwStp8qhK" |
| 2534 | "np+20vwmZNqPsoD9F9SOlfprkAmrHcP7rw/+yf5fMWps4qj3GuWAElkECI791I4aQsjMlL4aKPoJ" |
| 2535 | "+ZAVIooYh1uQLQWNrgxAZRxydbgPAKUs+5pYgGT6Io+HH5piTiuSJowgkBUzA4fX2TmZOaCCLZql" |
| 2536 | "d0UnsvoDQLnDhx+uIqzCDut4QDsMRH6j29i1+CnVv6Ye/AAD9GUNlSSIS5pX22gfd6YXrEQYayQH" |
| 2537 | "mN72c8oHiw9zf6g/Xz0XCpkXi1ebiDlI21RnHuYw/ml9U0QWqUSk8kPAdUPL1QE7DB+/r1sf0A/+" |
| 2538 | "IcJuiEXFvglVJpmfCewfvvtzEJHO1wLdK32mZ97CQvu9Er6zrc+bY5Gh9IOL+loqz8etxQE8I2bI" |
| 2539 | "9+s0MTYZgHPZnqJK1NsFLHWGyUNzoRr63jkwQjdiJn1p/lbtzOa5TkhsOLzAR+jjb8Inueg32frv" |
| 2540 | "xRHC2o92KkTqOomEmghgnGtdXl77vYTYMt/CUcbqGOAwiSQzw6jZtA5UTXI/6Fc14lMD3BBThbbm" |
| 2541 | "KV9u+n5SN66r6hogiFiWUoU9gG20AaFCz4Lk2EqBRM+SnRaNoY/u1zIFRu/8JoghowDNB9hCQgqT" |
| 2542 | "14AwF1TDGNTm1hgRtRX5lOrx8WgTXbwGl5YXHqN+oufn3m9FQ1dWxtqHH+dwNUD4MvEGIbNPauBA" |
| 2543 | "+Fr4ozAJ8xBrovuVQjxfswoz/xkYPoRbWjhZuYi3vWqeCf6Pvp1+Ak3rd2cRV5HXAjksFE54eerP" |
| 2544 | "Kst9eHlpTTEbe2pRs4V+nlZgPI0/lH0z5D8IRBriTX/kujcqwZAj5rDQQndhT4FYxEj7ldZuxC2D" |
| 2545 | "yxenJ2goCV0x+UPjPxjRPCHb1EiIX7evPtyvr5UI2O48e7sixwA=" |
| 2546 | }; |
| 2547 | ostringstream sout; |
| 2548 | istringstream sin; |
| 2549 | base64 base64_coder; |
| 2550 | compress_stream::kernel_1ea compressor; |
| 2551 | sin.str(data); |
| 2552 | base64_coder.decode(sin, sout); |
| 2553 | sin.clear(); |
| 2554 | sin.str(sout.str()); |
| 2555 | sout.clear(); |
| 2556 | sout.str(""); |
| 2557 | compressor.decompress(sin, sout); |
| 2558 | sin.clear(); |
| 2559 | sin.str(sout.str()); |
| 2560 | deserialize(rgba_img, sin); |
| 2561 | for (auto quality : {75., 101.}) |
| 2562 | { |
| 2563 | save_webp(rgba_img, "test_rgba.webp", quality); |
| 2564 | load_webp(rgba_dec, "test_rgba.webp"); |
| 2565 | if (quality > 100) |
| 2566 | DLIB_TEST(avg_pixel_delta(rgba_img, rgba_dec) == 0); |
| 2567 | else |
| 2568 | DLIB_TEST(avg_pixel_delta(rgba_img, rgba_dec) < 7); |
no test coverage detected