FFmpeg coverage


Directory: ../../../ffmpeg/
File: src/libavfilter/vf_hflip_init.h
Date: 2023-12-04 05:51:44
Exec Total Coverage
Lines: 48 50 96.0%
Functions: 7 7 100.0%
Branches: 20 21 95.2%

Line Branch Exec Source
1 /*
2 * Copyright (c) 2007 Benoit Fouet
3 * Copyright (c) 2010 Stefano Sabatini
4 *
5 * This file is part of FFmpeg.
6 *
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
22 #ifndef AVFILTER_HFLIP_INIT_H
23 #define AVFILTER_HFLIP_INIT_H
24
25 #include <stdint.h>
26
27 #include "config.h"
28 #include "libavutil/attributes.h"
29 #include "libavutil/intreadwrite.h"
30 #include "hflip.h"
31
32 17037 static void hflip_byte_c(const uint8_t *src, uint8_t *dst, int w)
33 {
34
2/2
✓ Branch 0 taken 5027328 times.
✓ Branch 1 taken 17037 times.
5044365 for (int j = 0; j < w; j++)
35 5027328 dst[j] = src[-j];
36 17037 }
37
38 80157 static void hflip_short_c(const uint8_t *ssrc, uint8_t *ddst, int w)
39 {
40 80157 const uint16_t *src = (const uint16_t *)ssrc;
41 80157 uint16_t *dst = (uint16_t *)ddst;
42
43
2/2
✓ Branch 0 taken 25368384 times.
✓ Branch 1 taken 80157 times.
25448541 for (int j = 0; j < w; j++)
44 25368384 dst[j] = src[-j];
45 80157 }
46
47 13248 static void hflip_dword_c(const uint8_t *ssrc, uint8_t *ddst, int w)
48 {
49 13248 const uint32_t *src = (const uint32_t *)ssrc;
50 13248 uint32_t *dst = (uint32_t *)ddst;
51
52
2/2
✓ Branch 0 taken 4207104 times.
✓ Branch 1 taken 13248 times.
4220352 for (int j = 0; j < w; j++)
53 4207104 dst[j] = src[-j];
54 13248 }
55
56 576 static void hflip_b24_c(const uint8_t *src, uint8_t *dst, int w)
57 {
58 576 const uint8_t *in = src;
59 576 uint8_t *out = dst;
60
61
2/2
✓ Branch 0 taken 202752 times.
✓ Branch 1 taken 576 times.
203328 for (int j = 0; j < w; j++, out += 3, in -= 3) {
62 202752 int32_t v = AV_RB24(in);
63
64 202752 AV_WB24(out, v);
65 }
66 576 }
67
68 1728 static void hflip_b48_c(const uint8_t *src, uint8_t *dst, int w)
69 {
70 1728 const uint8_t *in = src;
71 1728 uint8_t *out = dst;
72
73
2/2
✓ Branch 0 taken 608256 times.
✓ Branch 1 taken 1728 times.
609984 for (int j = 0; j < w; j++, out += 6, in -= 6) {
74 608256 int64_t v = AV_RB48(in);
75
76 608256 AV_WB48(out, v);
77 }
78 1728 }
79
80 1728 static void hflip_qword_c(const uint8_t *ssrc, uint8_t *ddst, int w)
81 {
82 1728 const uint64_t *src = (const uint64_t *)ssrc;
83 1728 uint64_t *dst = (uint64_t *)ddst;
84
85
2/2
✓ Branch 0 taken 608256 times.
✓ Branch 1 taken 1728 times.
609984 for (int j = 0; j < w; j++)
86 608256 dst[j] = src[-j];
87 1728 }
88
89 203 static av_unused int ff_hflip_init(FlipContext *s, int step[4], int nb_planes)
90 {
91
2/2
✓ Branch 0 taken 528 times.
✓ Branch 1 taken 203 times.
731 for (int i = 0; i < nb_planes; i++) {
92 528 step[i] *= s->bayer_plus1;
93
6/7
✓ Branch 0 taken 115 times.
✓ Branch 1 taken 350 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 49 times.
✓ Branch 4 taken 6 times.
✓ Branch 5 taken 6 times.
✗ Branch 6 not taken.
528 switch (step[i]) {
94 115 case 1: s->flip_line[i] = hflip_byte_c; break;
95 350 case 2: s->flip_line[i] = hflip_short_c; break;
96 2 case 3: s->flip_line[i] = hflip_b24_c; break;
97 49 case 4: s->flip_line[i] = hflip_dword_c; break;
98 6 case 6: s->flip_line[i] = hflip_b48_c; break;
99 6 case 8: s->flip_line[i] = hflip_qword_c; break;
100 default:
101 return AVERROR_BUG;
102 }
103 }
104 #if ARCH_X86
105 203 ff_hflip_init_x86(s, step, nb_planes);
106 #endif
107
108 203 return 0;
109 }
110
111 #endif /* AVFILTER_HFLIP_INIT_H */
112