GCC Code Coverage Report


Directory: avs_core/
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 29 / 0 / 29
Functions: -% 0 / 0 / 0
Branches: 25.2% 198 / 0 / 786

convert/convert_helper.h
Line Branch Exec Source
1 // Avisynth v2.5. Copyright 2002 Ben Rudiak-Gould et al.
2 // http://avisynth.nl
3
4 // This program is free software; you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation; either version 2 of the License, or
7 // (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with this program; if not, write to the Free Software
16 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA, or visit
17 // http://www.gnu.org/copyleft/gpl.html .
18 //
19 // Linking Avisynth statically or dynamically with other modules is making a
20 // combined work based on Avisynth. Thus, the terms and conditions of the GNU
21 // General Public License cover the whole combination.
22 //
23 // As a special exception, the copyright holders of Avisynth give you
24 // permission to link Avisynth with independent modules that communicate with
25 // Avisynth solely through the interfaces defined in avisynth.h, regardless of the license
26 // terms of these independent modules, and to copy and distribute the
27 // resulting combined work under terms of your choice, provided that
28 // every copy of the combined work is accompanied by a complete copy of
29 // the source code of Avisynth (the version of Avisynth used to produce the
30 // combined work), being distributed under the terms of the GNU General
31 // Public License plus this exception. An independent module is a module
32 // which is not derived from or based on Avisynth, such as 3rd-party filters,
33 // import and export plugins, or graphical user interfaces.
34
35 #ifndef __Convert_helper_H__
36 #define __Convert_helper_H__
37
38 #include <avisynth.h>
39 #include <string>
40 #include <cstring>
41
42 // ITU-T H.265 (Table E.1)
43 typedef enum ColorRange_e {
44 AVS_RANGE_LIMITED = 0, // video_full_range_flag = 0, studio swing, e.g. 16-235 for 8-bit luma
45 AVS_RANGE_FULL = 1, // video_full_range_flag = 1, full swing, e.g. 0-255 for 8-bit luma
46 } ColorRange_e;
47
48 // Old constants borrowed from VapourSynth, which transitioned to the ITU-T H.265 standard (Table E.1)
49 // Just the opposite as the standard.
50 typedef enum ColorRange_Compat_e {
51 AVS_COLORRANGE_FULL = 0,
52 AVS_COLORRANGE_LIMITED = 1
53 } ColorRange_Compat_e;
54
55 typedef enum ChromaLocation_e {
56 AVS_CHROMA_UNUSED = -1,
57 AVS_CHROMA_LEFT = 0,
58 AVS_CHROMA_CENTER = 1,
59 AVS_CHROMA_TOP_LEFT = 2,
60 AVS_CHROMA_TOP = 3,
61 AVS_CHROMA_BOTTOM_LEFT = 4,
62 AVS_CHROMA_BOTTOM = 5,
63 AVS_CHROMA_DV = 6 // Special to Avisynth
64 } ChromaLocation_e;
65
66 typedef enum FieldBased_e {
67 AVS_FIELD_PROGRESSIVE = 0,
68 AVS_FIELD_BOTTOM = 1,
69 AVS_FIELD_TOP = 2
70 } FieldBased_e;
71
72 // https://www.itu.int/rec/T-REC-H.265-202108-I
73 /* ITU-T H.265 Table E.5 */
74 typedef enum Matrix_e {
75 AVS_MATRIX_RGB = 0, /* The identity matrix. Typically used for RGB, may also be used for XYZ */
76 AVS_MATRIX_BT709 = 1, /* ITU-R Rec. BT.709-5 */
77 AVS_MATRIX_UNSPECIFIED = 2, /* Image characteristics are unknown or are determined by the application */
78 AVS_MATRIX_BT470_M = 4, // instead of AVS_MATRIX_FCC
79 // FCC Title 47 Code of Federal Regulations (2003) 73.682 (a) (20)
80 // Rec. ITU-R BT.470-6 System M (historical)
81 AVS_MATRIX_BT470_BG = 5, /* Equivalent to 6. */
82 // ITU-R Rec. BT.470-6 System B, G (historical)
83 // Rec. ITU-R BT.601-7 625
84 // Rec. ITU-R BT.1358-0 625 (historical)
85 // Rec. ITU-R BT.1700-0 625 PAL and 625 SECAM
86 AVS_MATRIX_ST170_M = 6, /* Equivalent to 5. */
87 // Rec. ITU-R BT.601-7 525
88 // Rec. ITU-R BT.1358-1 525 or 625 (historical)
89 // Rec. ITU-R BT.1700-0 NTSC
90 // SMPTE ST 170 (2004)
91 // SMPTE 170M (2004)
92 AVS_MATRIX_ST240_M = 7, // SMPTE ST 240 (1999, historical)
93 AVS_MATRIX_YCGCO = 8,
94 AVS_MATRIX_BT2020_NCL = 9,
95 // Rec. ITU-R BT.2020 non-constant luminance system
96 // Rec. ITU-R BT.2100-2 Y'CbCr
97 AVS_MATRIX_BT2020_CL = 10, /* Rec. ITU-R BT.2020 constant luminance system */
98 AVS_MATRIX_CHROMATICITY_DERIVED_NCL = 12, /* Chromaticity derived non-constant luminance system */
99 AVS_MATRIX_CHROMATICITY_DERIVED_CL = 13, /* Chromaticity derived constant luminance system */
100 AVS_MATRIX_ICTCP = 14, // REC_2100_ICTCP, Rec. ITU-R BT.2100-2 ICTCP
101 AVS_MATRIX_AVERAGE = 9999, // Avisynth compatibility
102 } Matrix_e;
103
104 // Pre-Avisynth 3.7.1 matrix constants, with implicite PC/limited range
105 typedef enum Old_Avs_Matrix_e {
106 AVS_OLD_MATRIX_Rec601 = 0,
107 AVS_OLD_MATRIX_Rec709 = 1,
108 AVS_OLD_MATRIX_PC_601 = 2,
109 AVS_OLD_MATRIX_PC_709 = 3,
110 AVS_OLD_MATRIX_AVERAGE = 4,
111 AVS_OLD_MATRIX_Rec2020 = 5,
112 AVS_OLD_MATRIX_PC_2020 = 6
113 } Old_Avs_Matrix_e;
114
115 // transfer characteristics ITU-T H.265 Table E.4
116 typedef enum Transfer_e {
117 AVS_TRANSFER_BT709 = 1,
118 AVS_TRANSFER_UNSPECIFIED = 2,
119 AVS_TRANSFER_BT470_M = 4,
120 AVS_TRANSFER_BT470_BG = 5,
121 AVS_TRANSFER_BT601 = 6, /* Equivalent to 1. */
122 AVS_TRANSFER_ST240_M = 7,
123 AVS_TRANSFER_LINEAR = 8,
124 AVS_TRANSFER_LOG_100 = 9,
125 AVS_TRANSFER_LOG_316 = 10,
126 AVS_TRANSFER_IEC_61966_2_4 = 11,
127 AVS_TRANSFER_IEC_61966_2_1 = 13,
128 AVS_TRANSFER_BT2020_10 = 14, /* Equivalent to 1. */
129 AVS_TRANSFER_BT2020_12 = 15, /* Equivalent to 1. */
130 AVS_TRANSFER_ST2084 = 16,
131 AVS_TRANSFER_ARIB_B67 = 18
132 } Transfer_e;
133
134 // color primaries ITU-T H.265 Table E.3
135 typedef enum Primaries_e {
136 AVS_PRIMARIES_BT709 = 1,
137 AVS_PRIMARIES_UNSPECIFIED = 2,
138 AVS_PRIMARIES_BT470_M = 4,
139 AVS_PRIMARIES_BT470_BG = 5,
140 AVS_PRIMARIES_ST170_M = 6,
141 AVS_PRIMARIES_ST240_M = 7, /* Equivalent to 6. */
142 AVS_PRIMARIES_FILM = 8,
143 AVS_PRIMARIES_BT2020 = 9,
144 AVS_PRIMARIES_ST428 = 10,
145 AVS_PRIMARIES_ST431_2 = 11,
146 AVS_PRIMARIES_ST432_1 = 12,
147 AVS_PRIMARIES_EBU3213_E = 22
148 } Primaries_e;
149
150 void matrix_parse_merge_with_props(bool rgb_in, bool rgb_out, const char* matrix_name, const AVSMap* props, int& _Matrix, int& _ColorRange, int& ColorRange_Out, IScriptEnvironment* env);
151 void matrix_parse_merge_with_props_def(bool rgb_in, bool rgb_out, const char* matrix_name, const AVSMap* props, int& _Matrix, int& _ColorRange, int& ColorRange_Out, int _Matrix_Default, int _ColorRange_Default, IScriptEnvironment* env);
152 void chromaloc_parse_merge_with_props(VideoInfo& vi, const char* chromaloc_name, const AVSMap* props, int& _ChromaLocation, int _ChromaLocation_Default, IScriptEnvironment* env);
153
154 void update_Matrix_and_ColorRange(AVSMap* props, int theMatrix, int theColorRange, IScriptEnvironment* env);
155 void update_Transfer_and_Primaries(AVSMap* props, int theTransfer, int thePrimaries, IScriptEnvironment* env);
156 void update_ColorRange(AVSMap* props, int theColorRange, IScriptEnvironment* env);
157 void update_ChromaLocation(AVSMap* props, int theChromaLocation, IScriptEnvironment* env);
158
159 typedef struct bits_conv_constants {
160 float src_offset = 0.0f;
161 int src_offset_i = 0;
162 float mul_factor = 1.0f;
163 float dst_offset = 0.0f;
164 float src_span = 1.0f;
165 float dst_span = 1.0f;
166 } bits_conv_constants;
167
168 // universal transform values for any full-limited bit-depth mix
169 [[maybe_unused]] static AVS_FORCEINLINE void get_bits_conv_constants(bits_conv_constants& d, bool use_chroma, bool fulls, bool fulld, int srcBitDepth, int dstBitDepth)
170 {
171 11451 d.src_offset = 0.0f;
172 11451 d.mul_factor = 1.0f;
173 11451 d.dst_offset = 0.0f;
174 11451 d.src_span = 1.0f;
175 11451 d.dst_span = 1.0f;
176
177 // possible usage places
178 // Expr (autoscale, scalef, scaleb)
179 // convert_bits
180 // ColorYUV
181 // Histogram
182 // YUV->RGB conversions (matrix coefficients depend on full-limited, but also the scaling of the actual pixel values, so this is needed for both matrix and pixel value conversion)
183
184
14/38
✓ Branch 2 → 3 taken 13 times.
✓ Branch 2 → 24 taken 10684 times.
✓ Branch 3 → 4 taken 32 times.
✓ Branch 3 → 25 taken 38 times.
✓ Branch 4 → 5 taken 4 times.
✗ Branch 4 → 26 not taken.
✓ Branch 6 → 7 taken 4 times.
✓ Branch 6 → 28 taken 3 times.
✗ Branch 9 → 10 not taken.
✗ Branch 9 → 31 not taken.
✗ Branch 11 → 12 not taken.
✗ Branch 11 → 33 not taken.
✗ Branch 13 → 14 not taken.
✗ Branch 13 → 35 not taken.
✓ Branch 24 → 25 taken 2 times.
✓ Branch 24 → 46 taken 6 times.
✗ Branch 25 → 26 not taken.
✓ Branch 25 → 47 taken 2 times.
✗ Branch 29 → 30 not taken.
✗ Branch 29 → 51 not taken.
✗ Branch 32 → 33 not taken.
✗ Branch 32 → 54 not taken.
✗ Branch 54 → 55 not taken.
✓ Branch 54 → 76 taken 330 times.
✓ Branch 106 → 107 taken 330 times.
✗ Branch 106 → 128 not taken.
✗ Branch 158 → 159 not taken.
✗ Branch 158 → 180 not taken.
✓ Branch 183 → 184 taken 2 times.
✓ Branch 183 → 205 taken 1 time.
✗ Branch 210 → 211 not taken.
✗ Branch 210 → 232 not taken.
✗ Branch 674 → 675 not taken.
✗ Branch 674 → 696 not taken.
✗ Branch 1333 → 1334 not taken.
✗ Branch 1333 → 1355 not taken.
✗ Branch 1605 → 1606 not taken.
✗ Branch 1605 → 1627 not taken.
11451 if (use_chroma) {
185 // decision: 'limited' range float +/-112 is +/-112/255.0. Must be consistent with Expr, ColorYUV etc
186 // 3.7.2: full range chroma: as per ITU Rec H.273 eq.30 p.10: Cb=Clip1_C(Round(((1<<BitDepth_C)-1)*E'_PB)+(1<<(BitDepth_C-1)))
187 // For 8 bit this results in 128 +/-127.5 instead of 128 +/-127
188 // In general the span is ((1 << srcBitDepth) - 1) / 2.0 instead of (1 << (srcBitDepth - 1)) - 1
189
190 // a bit asymmetric but meets mpeg, jpeg, Rec.2020 industry standards:
191 // full range chroma span intentionally not 128 bit 255/2.0, which is virtually 127.5.
192 // This also gives identical results to e.g. zimg when used in full range YUV-RGB conversions, which is good for consistency.
193
11/38
✓ Branch 3 → 4 taken 4 times.
✓ Branch 3 → 7 taken 9 times.
✓ Branch 4 → 5 taken 8 times.
✓ Branch 4 → 8 taken 24 times.
✓ Branch 5 → 6 taken 2 times.
✓ Branch 5 → 9 taken 2 times.
✗ Branch 7 → 8 not taken.
✓ Branch 7 → 11 taken 4 times.
✗ Branch 10 → 11 not taken.
✗ Branch 10 → 14 not taken.
✗ Branch 12 → 13 not taken.
✗ Branch 12 → 16 not taken.
✗ Branch 14 → 15 not taken.
✗ Branch 14 → 18 not taken.
✗ Branch 25 → 26 not taken.
✓ Branch 25 → 29 taken 2 times.
✗ Branch 26 → 27 not taken.
✗ Branch 26 → 30 not taken.
✗ Branch 30 → 31 not taken.
✗ Branch 30 → 34 not taken.
✗ Branch 33 → 34 not taken.
✗ Branch 33 → 37 not taken.
✗ Branch 55 → 56 not taken.
✗ Branch 55 → 59 not taken.
✓ Branch 107 → 108 taken 27 times.
✓ Branch 107 → 111 taken 303 times.
✗ Branch 159 → 160 not taken.
✗ Branch 159 → 163 not taken.
✗ Branch 184 → 185 not taken.
✓ Branch 184 → 188 taken 2 times.
✗ Branch 211 → 212 not taken.
✗ Branch 211 → 215 not taken.
✗ Branch 675 → 676 not taken.
✗ Branch 675 → 679 not taken.
✗ Branch 1334 → 1335 not taken.
✗ Branch 1334 → 1338 not taken.
✗ Branch 1606 → 1607 not taken.
✗ Branch 1606 → 1610 not taken.
428 d.src_span = (srcBitDepth == 32) ?
194
7/38
✓ Branch 4 → 5 taken 2 times.
✓ Branch 4 → 6 taken 2 times.
✓ Branch 5 → 6 taken 4 times.
✓ Branch 5 → 7 taken 4 times.
✓ Branch 6 → 7 taken 2 times.
✗ Branch 6 → 8 not taken.
✗ Branch 8 → 9 not taken.
✗ Branch 8 → 10 not taken.
✗ Branch 11 → 12 not taken.
✗ Branch 11 → 13 not taken.
✗ Branch 13 → 14 not taken.
✗ Branch 13 → 15 not taken.
✗ Branch 15 → 16 not taken.
✗ Branch 15 → 17 not taken.
✗ Branch 26 → 27 not taken.
✗ Branch 26 → 28 not taken.
✗ Branch 27 → 28 not taken.
✗ Branch 27 → 29 not taken.
✗ Branch 31 → 32 not taken.
✗ Branch 31 → 33 not taken.
✗ Branch 34 → 35 not taken.
✗ Branch 34 → 36 not taken.
✗ Branch 56 → 57 not taken.
✗ Branch 56 → 58 not taken.
✓ Branch 108 → 109 taken 9 times.
✓ Branch 108 → 110 taken 18 times.
✗ Branch 160 → 161 not taken.
✗ Branch 160 → 162 not taken.
✗ Branch 185 → 186 not taken.
✗ Branch 185 → 187 not taken.
✗ Branch 212 → 213 not taken.
✗ Branch 212 → 214 not taken.
✗ Branch 676 → 677 not taken.
✗ Branch 676 → 678 not taken.
✗ Branch 1335 → 1336 not taken.
✗ Branch 1335 → 1337 not taken.
✗ Branch 1607 → 1608 not taken.
✗ Branch 1607 → 1609 not taken.
41 (fulls ? 0.5f : 112 / 255.0f) :
195
10/38
✓ Branch 7 → 8 taken 7 times.
✓ Branch 7 → 9 taken 2 times.
✓ Branch 8 → 9 taken 12 times.
✓ Branch 8 → 10 taken 12 times.
✗ Branch 9 → 10 not taken.
✓ Branch 9 → 11 taken 2 times.
✗ Branch 11 → 12 not taken.
✓ Branch 11 → 13 taken 4 times.
✗ Branch 14 → 15 not taken.
✗ Branch 14 → 16 not taken.
✗ Branch 16 → 17 not taken.
✗ Branch 16 → 18 not taken.
✗ Branch 18 → 19 not taken.
✗ Branch 18 → 20 not taken.
✓ Branch 29 → 30 taken 2 times.
✗ Branch 29 → 31 not taken.
✗ Branch 30 → 31 not taken.
✗ Branch 30 → 32 not taken.
✗ Branch 34 → 35 not taken.
✗ Branch 34 → 36 not taken.
✗ Branch 37 → 38 not taken.
✗ Branch 37 → 39 not taken.
✗ Branch 59 → 60 not taken.
✗ Branch 59 → 61 not taken.
✓ Branch 111 → 112 taken 150 times.
✓ Branch 111 → 113 taken 153 times.
✗ Branch 163 → 164 not taken.
✗ Branch 163 → 165 not taken.
✗ Branch 188 → 189 not taken.
✓ Branch 188 → 190 taken 2 times.
✗ Branch 215 → 216 not taken.
✗ Branch 215 → 217 not taken.
✗ Branch 679 → 680 not taken.
✗ Branch 679 → 681 not taken.
✗ Branch 1338 → 1339 not taken.
✗ Branch 1338 → 1340 not taken.
✗ Branch 1610 → 1611 not taken.
✗ Branch 1610 → 1612 not taken.
346 (fulls ? (float)((1 << srcBitDepth) - 1) / 2.0f : (float)(112 << (srcBitDepth - 8)));
196
10/38
✓ Branch 10 → 11 taken 1 time.
✓ Branch 10 → 14 taken 12 times.
✓ Branch 11 → 12 taken 8 times.
✓ Branch 11 → 15 taken 24 times.
✗ Branch 12 → 13 not taken.
✓ Branch 12 → 16 taken 4 times.
✗ Branch 14 → 15 not taken.
✓ Branch 14 → 18 taken 4 times.
✗ Branch 17 → 18 not taken.
✗ Branch 17 → 21 not taken.
✗ Branch 19 → 20 not taken.
✗ Branch 19 → 23 not taken.
✗ Branch 21 → 22 not taken.
✗ Branch 21 → 25 not taken.
✗ Branch 32 → 33 not taken.
✓ Branch 32 → 36 taken 2 times.
✗ Branch 33 → 34 not taken.
✗ Branch 33 → 37 not taken.
✗ Branch 37 → 38 not taken.
✗ Branch 37 → 41 not taken.
✗ Branch 40 → 41 not taken.
✗ Branch 40 → 44 not taken.
✗ Branch 62 → 63 not taken.
✗ Branch 62 → 66 not taken.
✓ Branch 114 → 115 taken 27 times.
✓ Branch 114 → 118 taken 303 times.
✗ Branch 166 → 167 not taken.
✗ Branch 166 → 170 not taken.
✗ Branch 191 → 192 not taken.
✓ Branch 191 → 195 taken 2 times.
✗ Branch 218 → 219 not taken.
✗ Branch 218 → 222 not taken.
✗ Branch 682 → 683 not taken.
✗ Branch 682 → 686 not taken.
✗ Branch 1341 → 1342 not taken.
✗ Branch 1341 → 1345 not taken.
✗ Branch 1613 → 1614 not taken.
✗ Branch 1613 → 1617 not taken.
423 d.dst_span = (dstBitDepth == 32) ?
197
5/38
✗ Branch 11 → 12 not taken.
✓ Branch 11 → 13 taken 1 time.
✓ Branch 12 → 13 taken 4 times.
✓ Branch 12 → 14 taken 4 times.
✗ Branch 13 → 14 not taken.
✗ Branch 13 → 15 not taken.
✗ Branch 15 → 16 not taken.
✗ Branch 15 → 17 not taken.
✗ Branch 18 → 19 not taken.
✗ Branch 18 → 20 not taken.
✗ Branch 20 → 21 not taken.
✗ Branch 20 → 22 not taken.
✗ Branch 22 → 23 not taken.
✗ Branch 22 → 24 not taken.
✗ Branch 33 → 34 not taken.
✗ Branch 33 → 35 not taken.
✗ Branch 34 → 35 not taken.
✗ Branch 34 → 36 not taken.
✗ Branch 38 → 39 not taken.
✗ Branch 38 → 40 not taken.
✗ Branch 41 → 42 not taken.
✗ Branch 41 → 43 not taken.
✗ Branch 63 → 64 not taken.
✗ Branch 63 → 65 not taken.
✓ Branch 115 → 116 taken 12 times.
✓ Branch 115 → 117 taken 15 times.
✗ Branch 167 → 168 not taken.
✗ Branch 167 → 169 not taken.
✗ Branch 192 → 193 not taken.
✗ Branch 192 → 194 not taken.
✗ Branch 219 → 220 not taken.
✗ Branch 219 → 221 not taken.
✗ Branch 683 → 684 not taken.
✗ Branch 683 → 685 not taken.
✗ Branch 1342 → 1343 not taken.
✗ Branch 1342 → 1344 not taken.
✗ Branch 1614 → 1615 not taken.
✗ Branch 1614 → 1616 not taken.
36 (fulld ? 0.5f : 112 / 255.0f) :
198
10/38
✓ Branch 14 → 15 taken 4 times.
✓ Branch 14 → 16 taken 8 times.
✓ Branch 15 → 16 taken 12 times.
✓ Branch 15 → 17 taken 12 times.
✗ Branch 16 → 17 not taken.
✓ Branch 16 → 18 taken 4 times.
✗ Branch 18 → 19 not taken.
✓ Branch 18 → 20 taken 4 times.
✗ Branch 21 → 22 not taken.
✗ Branch 21 → 23 not taken.
✗ Branch 23 → 24 not taken.
✗ Branch 23 → 25 not taken.
✗ Branch 25 → 26 not taken.
✗ Branch 25 → 27 not taken.
✗ Branch 36 → 37 not taken.
✓ Branch 36 → 38 taken 2 times.
✗ Branch 37 → 38 not taken.
✗ Branch 37 → 39 not taken.
✗ Branch 41 → 42 not taken.
✗ Branch 41 → 43 not taken.
✗ Branch 44 → 45 not taken.
✗ Branch 44 → 46 not taken.
✗ Branch 66 → 67 not taken.
✗ Branch 66 → 68 not taken.
✓ Branch 118 → 119 taken 159 times.
✓ Branch 118 → 120 taken 144 times.
✗ Branch 170 → 171 not taken.
✗ Branch 170 → 172 not taken.
✗ Branch 195 → 196 not taken.
✓ Branch 195 → 197 taken 2 times.
✗ Branch 222 → 223 not taken.
✗ Branch 222 → 224 not taken.
✗ Branch 686 → 687 not taken.
✗ Branch 686 → 688 not taken.
✗ Branch 1345 → 1346 not taken.
✗ Branch 1345 → 1347 not taken.
✗ Branch 1617 → 1618 not taken.
✗ Branch 1617 → 1619 not taken.
351 (fulld ? (float)((1 << dstBitDepth) - 1) / 2.0f : (float)(112 << (dstBitDepth - 8)));
199 // chroma use case: go into signed world, factor, then go back to biased range
200
11/38
✓ Branch 17 → 18 taken 9 times.
✓ Branch 17 → 19 taken 4 times.
✓ Branch 18 → 19 taken 24 times.
✓ Branch 18 → 20 taken 8 times.
✓ Branch 19 → 20 taken 2 times.
✓ Branch 19 → 21 taken 2 times.
✓ Branch 21 → 22 taken 4 times.
✗ Branch 21 → 23 not taken.
✗ Branch 24 → 25 not taken.
✗ Branch 24 → 26 not taken.
✗ Branch 26 → 27 not taken.
✗ Branch 26 → 28 not taken.
✗ Branch 28 → 29 not taken.
✗ Branch 28 → 30 not taken.
✓ Branch 39 → 40 taken 2 times.
✗ Branch 39 → 41 not taken.
✗ Branch 40 → 41 not taken.
✗ Branch 40 → 42 not taken.
✗ Branch 44 → 45 not taken.
✗ Branch 44 → 46 not taken.
✗ Branch 47 → 48 not taken.
✗ Branch 47 → 49 not taken.
✗ Branch 69 → 70 not taken.
✗ Branch 69 → 71 not taken.
✓ Branch 121 → 122 taken 303 times.
✓ Branch 121 → 123 taken 27 times.
✗ Branch 173 → 174 not taken.
✗ Branch 173 → 175 not taken.
✓ Branch 198 → 199 taken 2 times.
✗ Branch 198 → 200 not taken.
✗ Branch 225 → 226 not taken.
✗ Branch 225 → 227 not taken.
✗ Branch 689 → 690 not taken.
✗ Branch 689 → 691 not taken.
✗ Branch 1348 → 1349 not taken.
✗ Branch 1348 → 1350 not taken.
✗ Branch 1620 → 1621 not taken.
✗ Branch 1620 → 1622 not taken.
387 d.src_offset = (srcBitDepth == 32) ? 0.0f : (1 << (srcBitDepth - 1));
201
10/38
✓ Branch 20 → 21 taken 12 times.
✓ Branch 20 → 22 taken 1 time.
✓ Branch 21 → 22 taken 24 times.
✓ Branch 21 → 23 taken 8 times.
✓ Branch 22 → 23 taken 4 times.
✗ Branch 22 → 24 not taken.
✓ Branch 24 → 25 taken 4 times.
✗ Branch 24 → 26 not taken.
✗ Branch 27 → 28 not taken.
✗ Branch 27 → 29 not taken.
✗ Branch 29 → 30 not taken.
✗ Branch 29 → 31 not taken.
✗ Branch 31 → 32 not taken.
✗ Branch 31 → 33 not taken.
✓ Branch 42 → 43 taken 2 times.
✗ Branch 42 → 44 not taken.
✗ Branch 43 → 44 not taken.
✗ Branch 43 → 45 not taken.
✗ Branch 47 → 48 not taken.
✗ Branch 47 → 49 not taken.
✗ Branch 50 → 51 not taken.
✗ Branch 50 → 52 not taken.
✗ Branch 72 → 73 not taken.
✗ Branch 72 → 74 not taken.
✓ Branch 124 → 125 taken 303 times.
✓ Branch 124 → 126 taken 27 times.
✗ Branch 176 → 177 not taken.
✗ Branch 176 → 178 not taken.
✓ Branch 201 → 202 taken 2 times.
✗ Branch 201 → 203 not taken.
✗ Branch 228 → 229 not taken.
✗ Branch 228 → 230 not taken.
✗ Branch 692 → 693 not taken.
✗ Branch 692 → 694 not taken.
✗ Branch 1351 → 1352 not taken.
✗ Branch 1351 → 1353 not taken.
✗ Branch 1623 → 1624 not taken.
✗ Branch 1623 → 1625 not taken.
387 d.dst_offset = (dstBitDepth == 32) ? 0.0f : (1 << (dstBitDepth - 1));
202
203 /*
204 fulls=fulld=false case:
205 // mul/div by 2^N when between 8-16 bit integer formats
206 // 255*: for consistent float conversion. scale (shift) to/from 8 bit. int-float is always 0..1.0 <-> 0..255
207 // int-float: 10+ bits first downshift to 8 bits then /255.
208 // float-int: 10+ bits first *255 to have 0..255 range, then shift from 8 bits to actual bit depth
209 // Since first we convert to 8 bit 0-255 range and do bit-shift after then to >8 depths, the 1.0 number will show up as 255*256 in 16 bits.
210 // This is normal. Like float32.ConvertBits(8).ConvertBits(16)
211 (srcBitDepth == 32) -> (255 * (float)(1 << (dstBitDepth - 8)) / 1.0
212 (dstBitDepth == 32) -> 1.0 / (255 * (float)(1 << (srcBitDepth - 8)))
213
214 (srcBitDepth == 32) -> ((float)(1 << (dstBitDepth - 8)))) / (1 / 255.0f)
215 (dstBitDepth == 32) -> 1.0 / 255.0f / (float)(1 << (srcBitDepth - 8))))
216 */
217 }
218 else {
219 // luma
220
21/73
✓ Branch 24 → 25 taken 10277 times.
✓ Branch 24 → 28 taken 407 times.
✓ Branch 25 → 26 taken 8 times.
✓ Branch 25 → 29 taken 30 times.
✗ Branch 26 → 27 not taken.
✗ Branch 26 → 30 not taken.
✓ Branch 28 → 29 taken 209 times.
✓ Branch 28 → 30 taken 198 times.
✓ Branch 28 → 32 taken 3 times.
✓ Branch 29 → 30 taken 18 times.
✓ Branch 29 → 31 taken 12 times.
✗ Branch 30 → 31 not taken.
✗ Branch 30 → 32 not taken.
✗ Branch 31 → 32 not taken.
✗ Branch 31 → 35 not taken.
✗ Branch 32 → 33 not taken.
✓ Branch 32 → 34 taken 3 times.
✗ Branch 33 → 34 not taken.
✗ Branch 33 → 37 not taken.
✗ Branch 35 → 36 not taken.
✗ Branch 35 → 37 not taken.
✗ Branch 35 → 39 not taken.
✗ Branch 37 → 38 not taken.
✗ Branch 37 → 39 not taken.
✗ Branch 39 → 40 not taken.
✗ Branch 39 → 41 not taken.
✗ Branch 46 → 47 not taken.
✓ Branch 46 → 50 taken 6 times.
✗ Branch 47 → 48 not taken.
✓ Branch 47 → 51 taken 2 times.
✓ Branch 50 → 51 taken 4 times.
✓ Branch 50 → 52 taken 2 times.
✓ Branch 51 → 52 taken 2 times.
✗ Branch 51 → 53 not taken.
✗ Branch 51 → 55 not taken.
✗ Branch 54 → 55 not taken.
✗ Branch 54 → 58 not taken.
✗ Branch 55 → 56 not taken.
✗ Branch 55 → 57 not taken.
✗ Branch 58 → 59 not taken.
✗ Branch 58 → 60 not taken.
✓ Branch 76 → 77 taken 27 times.
✓ Branch 76 → 80 taken 303 times.
✓ Branch 80 → 81 taken 155 times.
✓ Branch 80 → 82 taken 148 times.
✗ Branch 128 → 129 not taken.
✗ Branch 128 → 132 not taken.
✗ Branch 132 → 133 not taken.
✗ Branch 132 → 134 not taken.
✗ Branch 180 → 181 not taken.
✗ Branch 180 → 184 not taken.
✗ Branch 184 → 185 not taken.
✗ Branch 184 → 186 not taken.
✗ Branch 205 → 206 not taken.
✓ Branch 205 → 209 taken 1 time.
✗ Branch 209 → 210 not taken.
✓ Branch 209 → 211 taken 1 time.
✗ Branch 232 → 233 not taken.
✗ Branch 232 → 236 not taken.
✗ Branch 236 → 237 not taken.
✗ Branch 236 → 238 not taken.
✗ Branch 696 → 697 not taken.
✗ Branch 696 → 700 not taken.
✗ Branch 700 → 701 not taken.
✗ Branch 700 → 702 not taken.
✗ Branch 1355 → 1356 not taken.
✗ Branch 1355 → 1359 not taken.
✗ Branch 1359 → 1360 not taken.
✗ Branch 1359 → 1361 not taken.
✗ Branch 1627 → 1628 not taken.
✗ Branch 1627 → 1631 not taken.
✗ Branch 1631 → 1632 not taken.
✗ Branch 1631 → 1633 not taken.
21376 d.src_span = (srcBitDepth == 32) ?
221
6/38
✓ Branch 25 → 26 taken 10254 times.
✓ Branch 25 → 27 taken 23 times.
✓ Branch 26 → 27 taken 4 times.
✓ Branch 26 → 28 taken 4 times.
✗ Branch 27 → 28 not taken.
✗ Branch 27 → 29 not taken.
✗ Branch 29 → 30 not taken.
✗ Branch 29 → 31 not taken.
✗ Branch 32 → 33 not taken.
✗ Branch 32 → 34 not taken.
✗ Branch 34 → 35 not taken.
✗ Branch 34 → 36 not taken.
✗ Branch 36 → 37 not taken.
✗ Branch 36 → 38 not taken.
✗ Branch 47 → 48 not taken.
✗ Branch 47 → 49 not taken.
✗ Branch 48 → 49 not taken.
✗ Branch 48 → 50 not taken.
✗ Branch 52 → 53 not taken.
✗ Branch 52 → 54 not taken.
✗ Branch 55 → 56 not taken.
✗ Branch 55 → 57 not taken.
✓ Branch 77 → 78 taken 12 times.
✓ Branch 77 → 79 taken 15 times.
✗ Branch 129 → 130 not taken.
✗ Branch 129 → 131 not taken.
✗ Branch 181 → 182 not taken.
✗ Branch 181 → 183 not taken.
✗ Branch 206 → 207 not taken.
✗ Branch 206 → 208 not taken.
✗ Branch 233 → 234 not taken.
✗ Branch 233 → 235 not taken.
✗ Branch 697 → 698 not taken.
✗ Branch 697 → 699 not taken.
✗ Branch 1356 → 1357 not taken.
✗ Branch 1356 → 1358 not taken.
✗ Branch 1628 → 1629 not taken.
✗ Branch 1628 → 1630 not taken.
10312 (fulls ? 1.0f : 219 / 255.0f) :
222 752 (fulls ? ((1 << srcBitDepth) - 1) : (219 << (srcBitDepth - 8))); // 0..255, 16..235
223
22/73
✓ Branch 31 → 32 taken 356 times.
✓ Branch 31 → 35 taken 10328 times.
✓ Branch 32 → 33 taken 8 times.
✓ Branch 32 → 36 taken 30 times.
✗ Branch 33 → 34 not taken.
✗ Branch 33 → 37 not taken.
✓ Branch 35 → 36 taken 10284 times.
✓ Branch 35 → 37 taken 44 times.
✓ Branch 35 → 39 taken 3 times.
✓ Branch 36 → 37 taken 12 times.
✓ Branch 36 → 38 taken 18 times.
✗ Branch 37 → 38 not taken.
✗ Branch 37 → 39 not taken.
✗ Branch 38 → 39 not taken.
✗ Branch 38 → 42 not taken.
✓ Branch 39 → 40 taken 1 time.
✓ Branch 39 → 41 taken 2 times.
✗ Branch 40 → 41 not taken.
✗ Branch 40 → 44 not taken.
✗ Branch 42 → 43 not taken.
✗ Branch 42 → 44 not taken.
✗ Branch 42 → 46 not taken.
✗ Branch 44 → 45 not taken.
✗ Branch 44 → 46 not taken.
✗ Branch 46 → 47 not taken.
✗ Branch 46 → 48 not taken.
✗ Branch 53 → 54 not taken.
✓ Branch 53 → 57 taken 6 times.
✗ Branch 54 → 55 not taken.
✓ Branch 54 → 58 taken 2 times.
✓ Branch 57 → 58 taken 4 times.
✓ Branch 57 → 59 taken 2 times.
✓ Branch 58 → 59 taken 2 times.
✗ Branch 58 → 60 not taken.
✗ Branch 58 → 62 not taken.
✗ Branch 61 → 62 not taken.
✗ Branch 61 → 65 not taken.
✗ Branch 62 → 63 not taken.
✗ Branch 62 → 64 not taken.
✗ Branch 65 → 66 not taken.
✗ Branch 65 → 67 not taken.
✓ Branch 83 → 84 taken 27 times.
✓ Branch 83 → 87 taken 303 times.
✓ Branch 87 → 88 taken 159 times.
✓ Branch 87 → 89 taken 144 times.
✗ Branch 135 → 136 not taken.
✗ Branch 135 → 139 not taken.
✗ Branch 139 → 140 not taken.
✗ Branch 139 → 141 not taken.
✗ Branch 187 → 188 not taken.
✗ Branch 187 → 191 not taken.
✗ Branch 191 → 192 not taken.
✗ Branch 191 → 193 not taken.
✗ Branch 212 → 213 not taken.
✓ Branch 212 → 216 taken 1 time.
✗ Branch 216 → 217 not taken.
✓ Branch 216 → 218 taken 1 time.
✗ Branch 239 → 240 not taken.
✗ Branch 239 → 243 not taken.
✗ Branch 243 → 244 not taken.
✗ Branch 243 → 245 not taken.
✗ Branch 703 → 704 not taken.
✗ Branch 703 → 707 not taken.
✗ Branch 707 → 708 not taken.
✗ Branch 707 → 709 not taken.
✗ Branch 1362 → 1363 not taken.
✗ Branch 1362 → 1366 not taken.
✗ Branch 1366 → 1367 not taken.
✗ Branch 1366 → 1368 not taken.
✗ Branch 1634 → 1635 not taken.
✗ Branch 1634 → 1638 not taken.
✗ Branch 1638 → 1639 not taken.
✗ Branch 1638 → 1640 not taken.
11455 d.dst_span = (dstBitDepth == 32) ?
224
6/38
✓ Branch 32 → 33 taken 191 times.
✓ Branch 32 → 34 taken 165 times.
✓ Branch 33 → 34 taken 4 times.
✓ Branch 33 → 35 taken 4 times.
✗ Branch 34 → 35 not taken.
✗ Branch 34 → 36 not taken.
✗ Branch 36 → 37 not taken.
✗ Branch 36 → 38 not taken.
✗ Branch 39 → 40 not taken.
✗ Branch 39 → 41 not taken.
✗ Branch 41 → 42 not taken.
✗ Branch 41 → 43 not taken.
✗ Branch 43 → 44 not taken.
✗ Branch 43 → 45 not taken.
✗ Branch 54 → 55 not taken.
✗ Branch 54 → 56 not taken.
✗ Branch 55 → 56 not taken.
✗ Branch 55 → 57 not taken.
✗ Branch 59 → 60 not taken.
✗ Branch 59 → 61 not taken.
✗ Branch 62 → 63 not taken.
✗ Branch 62 → 64 not taken.
✓ Branch 84 → 85 taken 12 times.
✓ Branch 84 → 86 taken 15 times.
✗ Branch 136 → 137 not taken.
✗ Branch 136 → 138 not taken.
✗ Branch 188 → 189 not taken.
✗ Branch 188 → 190 not taken.
✗ Branch 213 → 214 not taken.
✗ Branch 213 → 215 not taken.
✗ Branch 240 → 241 not taken.
✗ Branch 240 → 242 not taken.
✗ Branch 704 → 705 not taken.
✗ Branch 704 → 706 not taken.
✗ Branch 1363 → 1364 not taken.
✗ Branch 1363 → 1365 not taken.
✗ Branch 1635 → 1636 not taken.
✗ Branch 1635 → 1637 not taken.
391 (fulld ? 1.0f : 219 / 255.0f) :
225 10673 (fulld ? ((1 << dstBitDepth) - 1) : (219 << (dstBitDepth - 8)));
226 // luma
227
21/73
✓ Branch 38 → 39 taken 10277 times.
✓ Branch 38 → 42 taken 407 times.
✓ Branch 39 → 40 taken 8 times.
✓ Branch 39 → 43 taken 30 times.
✗ Branch 40 → 41 not taken.
✗ Branch 40 → 44 not taken.
✓ Branch 42 → 43 taken 209 times.
✓ Branch 42 → 44 taken 198 times.
✓ Branch 42 → 46 taken 3 times.
✓ Branch 43 → 44 taken 18 times.
✓ Branch 43 → 45 taken 12 times.
✗ Branch 44 → 45 not taken.
✗ Branch 44 → 46 not taken.
✗ Branch 45 → 46 not taken.
✗ Branch 45 → 49 not taken.
✗ Branch 46 → 47 not taken.
✓ Branch 46 → 48 taken 3 times.
✗ Branch 47 → 48 not taken.
✗ Branch 47 → 51 not taken.
✗ Branch 49 → 50 not taken.
✗ Branch 49 → 51 not taken.
✗ Branch 49 → 53 not taken.
✗ Branch 51 → 52 not taken.
✗ Branch 51 → 53 not taken.
✗ Branch 53 → 54 not taken.
✗ Branch 53 → 55 not taken.
✗ Branch 60 → 61 not taken.
✓ Branch 60 → 64 taken 6 times.
✗ Branch 61 → 62 not taken.
✓ Branch 61 → 65 taken 2 times.
✓ Branch 64 → 65 taken 4 times.
✓ Branch 64 → 66 taken 2 times.
✓ Branch 65 → 66 taken 2 times.
✗ Branch 65 → 67 not taken.
✗ Branch 65 → 69 not taken.
✗ Branch 68 → 69 not taken.
✗ Branch 68 → 72 not taken.
✗ Branch 69 → 70 not taken.
✗ Branch 69 → 71 not taken.
✗ Branch 72 → 73 not taken.
✗ Branch 72 → 74 not taken.
✓ Branch 90 → 91 taken 27 times.
✓ Branch 90 → 94 taken 303 times.
✓ Branch 94 → 95 taken 155 times.
✓ Branch 94 → 96 taken 148 times.
✗ Branch 142 → 143 not taken.
✗ Branch 142 → 146 not taken.
✗ Branch 146 → 147 not taken.
✗ Branch 146 → 148 not taken.
✗ Branch 194 → 195 not taken.
✗ Branch 194 → 198 not taken.
✗ Branch 198 → 199 not taken.
✗ Branch 198 → 200 not taken.
✗ Branch 219 → 220 not taken.
✓ Branch 219 → 223 taken 1 time.
✗ Branch 223 → 224 not taken.
✓ Branch 223 → 225 taken 1 time.
✗ Branch 246 → 247 not taken.
✗ Branch 246 → 250 not taken.
✗ Branch 250 → 251 not taken.
✗ Branch 250 → 252 not taken.
✗ Branch 710 → 711 not taken.
✗ Branch 710 → 714 not taken.
✗ Branch 714 → 715 not taken.
✗ Branch 714 → 716 not taken.
✗ Branch 1369 → 1370 not taken.
✗ Branch 1369 → 1373 not taken.
✗ Branch 1373 → 1374 not taken.
✗ Branch 1373 → 1375 not taken.
✗ Branch 1641 → 1642 not taken.
✗ Branch 1641 → 1645 not taken.
✗ Branch 1645 → 1646 not taken.
✗ Branch 1645 → 1647 not taken.
21376 d.src_offset = (srcBitDepth == 32) ?
228
6/38
✓ Branch 39 → 40 taken 10254 times.
✓ Branch 39 → 41 taken 23 times.
✓ Branch 40 → 41 taken 4 times.
✓ Branch 40 → 42 taken 4 times.
✗ Branch 41 → 42 not taken.
✗ Branch 41 → 43 not taken.
✗ Branch 43 → 44 not taken.
✗ Branch 43 → 45 not taken.
✗ Branch 46 → 47 not taken.
✗ Branch 46 → 48 not taken.
✗ Branch 48 → 49 not taken.
✗ Branch 48 → 50 not taken.
✗ Branch 50 → 51 not taken.
✗ Branch 50 → 52 not taken.
✗ Branch 61 → 62 not taken.
✗ Branch 61 → 63 not taken.
✗ Branch 62 → 63 not taken.
✗ Branch 62 → 64 not taken.
✗ Branch 66 → 67 not taken.
✗ Branch 66 → 68 not taken.
✗ Branch 69 → 70 not taken.
✗ Branch 69 → 71 not taken.
✓ Branch 91 → 92 taken 12 times.
✓ Branch 91 → 93 taken 15 times.
✗ Branch 143 → 144 not taken.
✗ Branch 143 → 145 not taken.
✗ Branch 195 → 196 not taken.
✗ Branch 195 → 197 not taken.
✗ Branch 220 → 221 not taken.
✗ Branch 220 → 222 not taken.
✗ Branch 247 → 248 not taken.
✗ Branch 247 → 249 not taken.
✗ Branch 711 → 712 not taken.
✗ Branch 711 → 713 not taken.
✗ Branch 1370 → 1371 not taken.
✗ Branch 1370 → 1372 not taken.
✗ Branch 1642 → 1643 not taken.
✗ Branch 1642 → 1644 not taken.
10312 (fulls ? 0 : 16.0f / 255) :
229 364 (fulls ? 0 : (16 << (srcBitDepth - 8)));
230
22/73
✓ Branch 45 → 46 taken 356 times.
✓ Branch 45 → 49 taken 10328 times.
✓ Branch 46 → 47 taken 8 times.
✓ Branch 46 → 50 taken 30 times.
✗ Branch 47 → 48 not taken.
✗ Branch 47 → 51 not taken.
✓ Branch 49 → 50 taken 10284 times.
✓ Branch 49 → 51 taken 44 times.
✓ Branch 49 → 53 taken 3 times.
✓ Branch 50 → 51 taken 12 times.
✓ Branch 50 → 52 taken 18 times.
✗ Branch 51 → 52 not taken.
✗ Branch 51 → 53 not taken.
✗ Branch 52 → 53 not taken.
✗ Branch 52 → 56 not taken.
✓ Branch 53 → 54 taken 1 time.
✓ Branch 53 → 55 taken 2 times.
✗ Branch 54 → 55 not taken.
✗ Branch 54 → 58 not taken.
✗ Branch 56 → 57 not taken.
✗ Branch 56 → 58 not taken.
✗ Branch 56 → 60 not taken.
✗ Branch 58 → 59 not taken.
✗ Branch 58 → 60 not taken.
✗ Branch 60 → 61 not taken.
✗ Branch 60 → 62 not taken.
✗ Branch 67 → 68 not taken.
✓ Branch 67 → 71 taken 6 times.
✗ Branch 68 → 69 not taken.
✓ Branch 68 → 72 taken 2 times.
✓ Branch 71 → 72 taken 4 times.
✓ Branch 71 → 73 taken 2 times.
✓ Branch 72 → 73 taken 2 times.
✗ Branch 72 → 74 not taken.
✗ Branch 72 → 76 not taken.
✗ Branch 75 → 76 not taken.
✗ Branch 75 → 79 not taken.
✗ Branch 76 → 77 not taken.
✗ Branch 76 → 78 not taken.
✗ Branch 79 → 80 not taken.
✗ Branch 79 → 81 not taken.
✓ Branch 97 → 98 taken 27 times.
✓ Branch 97 → 101 taken 303 times.
✓ Branch 101 → 102 taken 159 times.
✓ Branch 101 → 103 taken 144 times.
✗ Branch 149 → 150 not taken.
✗ Branch 149 → 153 not taken.
✗ Branch 153 → 154 not taken.
✗ Branch 153 → 155 not taken.
✗ Branch 201 → 202 not taken.
✗ Branch 201 → 205 not taken.
✗ Branch 205 → 206 not taken.
✗ Branch 205 → 207 not taken.
✗ Branch 226 → 227 not taken.
✓ Branch 226 → 230 taken 1 time.
✗ Branch 230 → 231 not taken.
✓ Branch 230 → 232 taken 1 time.
✗ Branch 253 → 254 not taken.
✗ Branch 253 → 257 not taken.
✗ Branch 257 → 258 not taken.
✗ Branch 257 → 259 not taken.
✗ Branch 717 → 718 not taken.
✗ Branch 717 → 721 not taken.
✗ Branch 721 → 722 not taken.
✗ Branch 721 → 723 not taken.
✗ Branch 1376 → 1377 not taken.
✗ Branch 1376 → 1380 not taken.
✗ Branch 1380 → 1381 not taken.
✗ Branch 1380 → 1382 not taken.
✗ Branch 1648 → 1649 not taken.
✗ Branch 1648 → 1652 not taken.
✗ Branch 1652 → 1653 not taken.
✗ Branch 1652 → 1654 not taken.
11666 d.dst_offset = (dstBitDepth == 32) ?
231
6/38
✓ Branch 46 → 47 taken 191 times.
✓ Branch 46 → 48 taken 165 times.
✓ Branch 47 → 48 taken 4 times.
✓ Branch 47 → 49 taken 4 times.
✗ Branch 48 → 49 not taken.
✗ Branch 48 → 50 not taken.
✗ Branch 50 → 51 not taken.
✗ Branch 50 → 52 not taken.
✗ Branch 53 → 54 not taken.
✗ Branch 53 → 55 not taken.
✗ Branch 55 → 56 not taken.
✗ Branch 55 → 57 not taken.
✗ Branch 57 → 58 not taken.
✗ Branch 57 → 59 not taken.
✗ Branch 68 → 69 not taken.
✗ Branch 68 → 70 not taken.
✗ Branch 69 → 70 not taken.
✗ Branch 69 → 71 not taken.
✗ Branch 73 → 74 not taken.
✗ Branch 73 → 75 not taken.
✗ Branch 76 → 77 not taken.
✗ Branch 76 → 78 not taken.
✓ Branch 98 → 99 taken 12 times.
✓ Branch 98 → 100 taken 15 times.
✗ Branch 150 → 151 not taken.
✗ Branch 150 → 152 not taken.
✗ Branch 202 → 203 not taken.
✗ Branch 202 → 204 not taken.
✗ Branch 227 → 228 not taken.
✗ Branch 227 → 229 not taken.
✗ Branch 254 → 255 not taken.
✗ Branch 254 → 256 not taken.
✗ Branch 718 → 719 not taken.
✗ Branch 718 → 720 not taken.
✗ Branch 1377 → 1378 not taken.
✗ Branch 1377 → 1379 not taken.
✗ Branch 1649 → 1650 not taken.
✗ Branch 1649 → 1651 not taken.
391 (fulld ? 0 : 16.0f / 255) :
232 211 (fulld ? 0 : (16 << (dstBitDepth - 8)));
233 }
234
235 11451 d.mul_factor = d.dst_span / d.src_span;
236 11451 d.src_offset_i = (int)d.src_offset; // no rounding, when used, it is integer
237 11451 }
238
239 enum class ConversionDirection {
240 YUV_TO_RGB,
241 RGB_TO_YUV,
242 YUV_TO_YUV,
243 RGB_TO_RGB,
244 RGB_TO_Y
245 };
246
247 #endif // __Convert_helper_H__
248