FFmpeg coverage


Directory: ../../../ffmpeg/
File: src/tests/checkasm/videodsp.c
Date: 2026-09-13 04:46:26
Exec Total Coverage
Lines: 6 6 100.0%
Functions: 1 1 100.0%
Branches: 68 296 23.0%

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