| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | /* | ||
| 2 | * Copyright (c) 2016 Ronald S. Bultje <rsbultje@gmail.com> | ||
| 3 | * | ||
| 4 | * This file is part of FFmpeg. | ||
| 5 | * | ||
| 6 | * FFmpeg is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License as published by | ||
| 8 | * the Free Software Foundation; either version 2 of the License, or | ||
| 9 | * (at your option) any later version. | ||
| 10 | * | ||
| 11 | * FFmpeg is distributed in the hope that it will be useful, | ||
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 14 | * GNU General Public License for more details. | ||
| 15 | * | ||
| 16 | * You should have received a copy of the GNU General Public License along | ||
| 17 | * with FFmpeg; if not, write to the Free Software Foundation, Inc., | ||
| 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 19 | */ | ||
| 20 | |||
| 21 | #include <string.h> | ||
| 22 | #include "checkasm.h" | ||
| 23 | #include "libavcodec/videodsp.h" | ||
| 24 | #include "libavutil/internal.h" | ||
| 25 | #include "libavutil/intreadwrite.h" | ||
| 26 | #include "libavutil/mem_internal.h" | ||
| 27 | |||
| 28 | #define randomize_buffers(w, h) \ | ||
| 29 | do { \ | ||
| 30 | int i; \ | ||
| 31 | for (i = 0; i < w * h * sizeof(*src0); i += 4) \ | ||
| 32 | AV_WN32A(((uint8_t *) src0) + i, rnd()); \ | ||
| 33 | } while (0) | ||
| 34 | |||
| 35 | #define iter_1d(type, fix, fix_val, var, var_start, var_end) \ | ||
| 36 | for (fix = fix_val, var = var_start; var <= var_end; var++) { \ | ||
| 37 | call_ref((type *) dst0, (const type *) (src0 + y * pw + x), \ | ||
| 38 | bw * sizeof(type), pw * sizeof(type), \ | ||
| 39 | bw, bh, x, y, pw, ph); \ | ||
| 40 | call_new((type *) dst1, (const type *) (src1 + y * pw + x), \ | ||
| 41 | bw * sizeof(type), pw * sizeof(type), \ | ||
| 42 | bw, bh, x, y, pw, ph); \ | ||
| 43 | if (memcmp(dst0, dst1, bw * bh * sizeof(type))) \ | ||
| 44 | fail(); \ | ||
| 45 | bench_new((type *) dst1, (const type *) (src1 + y * pw + x),\ | ||
| 46 | bw * sizeof(type), pw * sizeof(type), \ | ||
| 47 | bw, bh, x, y, pw, ph); \ | ||
| 48 | } | ||
| 49 | |||
| 50 | #define check_emu_edge_size(type, src_w, src_h, dst_w, dst_h) \ | ||
| 51 | do { \ | ||
| 52 | LOCAL_ALIGNED_16(type, src0, [src_w * src_h]); \ | ||
| 53 | LOCAL_ALIGNED_16(type, src1, [src_w * src_h]); \ | ||
| 54 | int bw = dst_w, bh = dst_h; \ | ||
| 55 | int pw = src_w, ph = src_h; \ | ||
| 56 | int y, x; \ | ||
| 57 | randomize_buffers(src_w, src_h); \ | ||
| 58 | memcpy(src1, src0, pw * ph * sizeof(type)); \ | ||
| 59 | iter_1d(type, y, 0 - src_h, x, 0 - src_w, src_w - 0); \ | ||
| 60 | iter_1d(type, x, src_w - 0, y, 0 - src_h, src_h - 0); \ | ||
| 61 | iter_1d(type, y, src_h - 0, x, 0 - src_w, src_w - 0); \ | ||
| 62 | iter_1d(type, x, 0 - src_w, y, 0 - src_h, src_h - 0); \ | ||
| 63 | } while (0) | ||
| 64 | |||
| 65 | #define check_emu_edge(type) \ | ||
| 66 | do { \ | ||
| 67 | LOCAL_ALIGNED_16(type, dst0, [64 * 64]); \ | ||
| 68 | LOCAL_ALIGNED_16(type, dst1, [64 * 64]); \ | ||
| 69 | declare_func(void, type *dst, const type *src, \ | ||
| 70 | ptrdiff_t dst_linesize, \ | ||
| 71 | ptrdiff_t src_linesize, \ | ||
| 72 | int block_w, int block_h, \ | ||
| 73 | int src_x, int src_y, \ | ||
| 74 | int src_w, int src_h); \ | ||
| 75 | check_emu_edge_size(type, 16, 1, 64, 64); \ | ||
| 76 | check_emu_edge_size(type, 16, 16, 64, 64); \ | ||
| 77 | check_emu_edge_size(type, 64, 64, 64, 64); \ | ||
| 78 | } while (0) | ||
| 79 | |||
| 80 | 14 | void checkasm_check_videodsp(void) | |
| 81 | { | ||
| 82 | VideoDSPContext vdsp; | ||
| 83 | |||
| 84 | 14 | ff_videodsp_init(&vdsp, 8); | |
| 85 |
2/2✓ Branch 1 taken 3 times.
✓ Branch 2 taken 11 times.
|
14 | if (check_func(vdsp.emulated_edge_mc, "emulated_edge_mc_8")) |
| 86 |
66/294✓ Branch 1 taken 12 times.
✓ Branch 2 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 99 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 99 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 99 times.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✗ Branch 74 not taken.
✗ Branch 75 not taken.
✓ Branch 81 taken 99 times.
✓ Branch 82 taken 3 times.
✗ Branch 85 not taken.
✓ Branch 86 taken 9 times.
✗ Branch 92 not taken.
✓ Branch 93 taken 9 times.
✗ Branch 96 not taken.
✓ Branch 97 taken 9 times.
✗ Branch 100 not taken.
✗ Branch 101 not taken.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
✗ Branch 138 not taken.
✗ Branch 139 not taken.
✗ Branch 140 not taken.
✗ Branch 141 not taken.
✗ Branch 142 not taken.
✗ Branch 143 not taken.
✗ Branch 146 not taken.
✗ Branch 147 not taken.
✗ Branch 149 not taken.
✗ Branch 150 not taken.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✓ Branch 161 taken 9 times.
✓ Branch 162 taken 3 times.
✗ Branch 165 not taken.
✓ Branch 166 taken 99 times.
✗ Branch 172 not taken.
✓ Branch 173 taken 99 times.
✗ Branch 176 not taken.
✓ Branch 177 taken 99 times.
✗ Branch 180 not taken.
✗ Branch 181 not taken.
✗ Branch 216 not taken.
✗ Branch 217 not taken.
✗ Branch 218 not taken.
✗ Branch 219 not taken.
✗ Branch 220 not taken.
✗ Branch 221 not taken.
✗ Branch 222 not taken.
✗ Branch 223 not taken.
✗ Branch 226 not taken.
✗ Branch 227 not taken.
✗ Branch 229 not taken.
✗ Branch 230 not taken.
✗ Branch 234 not taken.
✗ Branch 235 not taken.
✓ Branch 241 taken 99 times.
✓ Branch 242 taken 3 times.
✗ Branch 245 not taken.
✓ Branch 246 taken 9 times.
✗ Branch 252 not taken.
✓ Branch 253 taken 9 times.
✗ Branch 256 not taken.
✓ Branch 257 taken 9 times.
✗ Branch 260 not taken.
✗ Branch 261 not taken.
✗ Branch 296 not taken.
✗ Branch 297 not taken.
✗ Branch 298 not taken.
✗ Branch 299 not taken.
✗ Branch 300 not taken.
✗ Branch 301 not taken.
✗ Branch 302 not taken.
✗ Branch 303 not taken.
✗ Branch 306 not taken.
✗ Branch 307 not taken.
✗ Branch 309 not taken.
✗ Branch 310 not taken.
✗ Branch 314 not taken.
✗ Branch 315 not taken.
✓ Branch 321 taken 9 times.
✓ Branch 322 taken 3 times.
✓ Branch 324 taken 192 times.
✓ Branch 325 taken 3 times.
✗ Branch 328 not taken.
✓ Branch 329 taken 99 times.
✗ Branch 335 not taken.
✓ Branch 336 taken 99 times.
✗ Branch 339 not taken.
✓ Branch 340 taken 99 times.
✗ Branch 343 not taken.
✗ Branch 344 not taken.
✗ Branch 379 not taken.
✗ Branch 380 not taken.
✗ Branch 381 not taken.
✗ Branch 382 not taken.
✗ Branch 383 not taken.
✗ Branch 384 not taken.
✗ Branch 385 not taken.
✗ Branch 386 not taken.
✗ Branch 389 not taken.
✗ Branch 390 not taken.
✗ Branch 392 not taken.
✗ Branch 393 not taken.
✗ Branch 397 not taken.
✗ Branch 398 not taken.
✓ Branch 404 taken 99 times.
✓ Branch 405 taken 3 times.
✗ Branch 408 not taken.
✓ Branch 409 taken 99 times.
✗ Branch 415 not taken.
✓ Branch 416 taken 99 times.
✗ Branch 419 not taken.
✓ Branch 420 taken 99 times.
✗ Branch 423 not taken.
✗ Branch 424 not taken.
✗ Branch 459 not taken.
✗ Branch 460 not taken.
✗ Branch 461 not taken.
✗ Branch 462 not taken.
✗ Branch 463 not taken.
✗ Branch 464 not taken.
✗ Branch 465 not taken.
✗ Branch 466 not taken.
✗ Branch 469 not taken.
✗ Branch 470 not taken.
✗ Branch 472 not taken.
✗ Branch 473 not taken.
✗ Branch 477 not taken.
✗ Branch 478 not taken.
✓ Branch 484 taken 99 times.
✓ Branch 485 taken 3 times.
✗ Branch 488 not taken.
✓ Branch 489 taken 99 times.
✗ Branch 495 not taken.
✓ Branch 496 taken 99 times.
✗ Branch 499 not taken.
✓ Branch 500 taken 99 times.
✗ Branch 503 not taken.
✗ Branch 504 not taken.
✗ Branch 539 not taken.
✗ Branch 540 not taken.
✗ Branch 541 not taken.
✗ Branch 542 not taken.
✗ Branch 543 not taken.
✗ Branch 544 not taken.
✗ Branch 545 not taken.
✗ Branch 546 not taken.
✗ Branch 549 not taken.
✗ Branch 550 not taken.
✗ Branch 552 not taken.
✗ Branch 553 not taken.
✗ Branch 557 not taken.
✗ Branch 558 not taken.
✓ Branch 564 taken 99 times.
✓ Branch 565 taken 3 times.
✗ Branch 568 not taken.
✓ Branch 569 taken 99 times.
✗ Branch 575 not taken.
✓ Branch 576 taken 99 times.
✗ Branch 579 not taken.
✓ Branch 580 taken 99 times.
✗ Branch 583 not taken.
✗ Branch 584 not taken.
✗ Branch 619 not taken.
✗ Branch 620 not taken.
✗ Branch 621 not taken.
✗ Branch 622 not taken.
✗ Branch 623 not taken.
✗ Branch 624 not taken.
✗ Branch 625 not taken.
✗ Branch 626 not taken.
✗ Branch 629 not taken.
✗ Branch 630 not taken.
✗ Branch 632 not taken.
✗ Branch 633 not taken.
✗ Branch 637 not taken.
✗ Branch 638 not taken.
✓ Branch 644 taken 99 times.
✓ Branch 645 taken 3 times.
✓ Branch 647 taken 3072 times.
✓ Branch 648 taken 3 times.
✗ Branch 651 not taken.
✓ Branch 652 taken 387 times.
✗ Branch 658 not taken.
✓ Branch 659 taken 387 times.
✗ Branch 662 not taken.
✓ Branch 663 taken 387 times.
✗ Branch 666 not taken.
✗ Branch 667 not taken.
✗ Branch 702 not taken.
✗ Branch 703 not taken.
✗ Branch 704 not taken.
✗ Branch 705 not taken.
✗ Branch 706 not taken.
✗ Branch 707 not taken.
✗ Branch 708 not taken.
✗ Branch 709 not taken.
✗ Branch 712 not taken.
✗ Branch 713 not taken.
✗ Branch 715 not taken.
✗ Branch 716 not taken.
✗ Branch 720 not taken.
✗ Branch 721 not taken.
✓ Branch 727 taken 387 times.
✓ Branch 728 taken 3 times.
✗ Branch 731 not taken.
✓ Branch 732 taken 387 times.
✗ Branch 738 not taken.
✓ Branch 739 taken 387 times.
✗ Branch 742 not taken.
✓ Branch 743 taken 387 times.
✗ Branch 746 not taken.
✗ Branch 747 not taken.
✗ Branch 782 not taken.
✗ Branch 783 not taken.
✗ Branch 784 not taken.
✗ Branch 785 not taken.
✗ Branch 786 not taken.
✗ Branch 787 not taken.
✗ Branch 788 not taken.
✗ Branch 789 not taken.
✗ Branch 792 not taken.
✗ Branch 793 not taken.
✗ Branch 795 not taken.
✗ Branch 796 not taken.
✗ Branch 800 not taken.
✗ Branch 801 not taken.
✓ Branch 807 taken 387 times.
✓ Branch 808 taken 3 times.
✗ Branch 811 not taken.
✓ Branch 812 taken 387 times.
✗ Branch 818 not taken.
✓ Branch 819 taken 387 times.
✗ Branch 822 not taken.
✓ Branch 823 taken 387 times.
✗ Branch 826 not taken.
✗ Branch 827 not taken.
✗ Branch 862 not taken.
✗ Branch 863 not taken.
✗ Branch 864 not taken.
✗ Branch 865 not taken.
✗ Branch 866 not taken.
✗ Branch 867 not taken.
✗ Branch 868 not taken.
✗ Branch 869 not taken.
✗ Branch 872 not taken.
✗ Branch 873 not taken.
✗ Branch 875 not taken.
✗ Branch 876 not taken.
✗ Branch 880 not taken.
✗ Branch 881 not taken.
✓ Branch 887 taken 387 times.
✓ Branch 888 taken 3 times.
✗ Branch 891 not taken.
✓ Branch 892 taken 387 times.
✗ Branch 898 not taken.
✓ Branch 899 taken 387 times.
✗ Branch 902 not taken.
✓ Branch 903 taken 387 times.
✗ Branch 906 not taken.
✗ Branch 907 not taken.
✗ Branch 942 not taken.
✗ Branch 943 not taken.
✗ Branch 944 not taken.
✗ Branch 945 not taken.
✗ Branch 946 not taken.
✗ Branch 947 not taken.
✗ Branch 948 not taken.
✗ Branch 949 not taken.
✗ Branch 952 not taken.
✗ Branch 953 not taken.
✗ Branch 955 not taken.
✗ Branch 956 not taken.
✗ Branch 960 not taken.
✗ Branch 961 not taken.
✓ Branch 967 taken 387 times.
✓ Branch 968 taken 3 times.
|
5439 | check_emu_edge(uint8_t); |
| 87 | |||
| 88 | 14 | report("emulated_edge_mc"); | |
| 89 | 14 | } | |
| 90 |