Coverage Report

Created: 2026-02-26 06:54

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/FreeRDP/libfreerdp/primitives/prim_internal.h
Line
Count
Source
1
/* prim_internal.h
2
 * vi:ts=4 sw=4
3
 *
4
 * (c) Copyright 2012 Hewlett-Packard Development Company, L.P.
5
 * Licensed under the Apache License, Version 2.0 (the "License"); you may
6
 * not use this file except in compliance with the License. You may obtain
7
 * a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
8
 * Unless required by applicable law or agreed to in writing, software
9
 * distributed under the License is distributed on an "AS IS" BASIS,
10
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11
 * or implied. See the License for the specific language governing
12
 * permissions and limitations under the License.  Algorithms used by
13
 * this code may be covered by patents by HP, Microsoft, or other parties.
14
 *
15
 */
16
17
#ifndef FREERDP_LIB_PRIM_INTERNAL_H
18
#define FREERDP_LIB_PRIM_INTERNAL_H
19
20
#include <winpr/platform.h>
21
#include <freerdp/config.h>
22
23
#include <freerdp/primitives.h>
24
#include <freerdp/api.h>
25
26
#include "../core/simd.h"
27
28
#define PRIM_ALIGN_128 DECLSPEC_ALIGN(16)
29
30
#if defined(SSE_AVX_INTRINSICS_ENABLED) || defined(NEON_INTRINSICS_ENABLED) || defined(WITH_OPENCL)
31
#define HAVE_OPTIMIZED_PRIMITIVES 1
32
#endif
33
34
#if defined(SSE_AVX_INTRINSICS_ENABLED) || defined(NEON_INTRINSICS_ENABLED)
35
#define HAVE_CPU_OPTIMIZED_PRIMITIVES 1
36
#endif
37
38
WINPR_ATTR_NODISCARD
39
static inline BYTE* writePixelBGRA(BYTE* dst, DWORD formatSize, UINT32 format, BYTE R, BYTE G,
40
                                   BYTE B, BYTE A)
41
0
{
42
0
  WINPR_UNUSED(formatSize);
43
0
  WINPR_UNUSED(format);
44
45
0
  *dst++ = B;
46
0
  *dst++ = G;
47
0
  *dst++ = R;
48
0
  *dst++ = A;
49
0
  return dst;
50
0
}
Unexecuted instantiation: primitives.c:writePixelBGRA
Unexecuted instantiation: prim_add.c:writePixelBGRA
Unexecuted instantiation: prim_andor.c:writePixelBGRA
Unexecuted instantiation: prim_alphaComp.c:writePixelBGRA
Unexecuted instantiation: prim_colors.c:writePixelBGRA
Unexecuted instantiation: prim_copy.c:writePixelBGRA
Unexecuted instantiation: prim_set.c:writePixelBGRA
Unexecuted instantiation: prim_shift.c:writePixelBGRA
Unexecuted instantiation: prim_sign.c:writePixelBGRA
Unexecuted instantiation: prim_YUV.c:writePixelBGRA
Unexecuted instantiation: prim_YCoCg.c:writePixelBGRA
Unexecuted instantiation: prim_colors_neon.c:writePixelBGRA
Unexecuted instantiation: prim_YCoCg_neon.c:writePixelBGRA
Unexecuted instantiation: prim_YUV_neon.c:writePixelBGRA
Unexecuted instantiation: prim_colors_sse2.c:writePixelBGRA
Unexecuted instantiation: prim_set_sse2.c:writePixelBGRA
Unexecuted instantiation: prim_add_sse3.c:writePixelBGRA
Unexecuted instantiation: prim_alphaComp_sse3.c:writePixelBGRA
Unexecuted instantiation: prim_andor_sse3.c:writePixelBGRA
Unexecuted instantiation: prim_shift_sse3.c:writePixelBGRA
Unexecuted instantiation: prim_sign_ssse3.c:writePixelBGRA
Unexecuted instantiation: prim_YCoCg_ssse3.c:writePixelBGRA
Unexecuted instantiation: prim_copy_sse4_1.c:writePixelBGRA
Unexecuted instantiation: prim_YUV_sse4.1.c:writePixelBGRA
Unexecuted instantiation: prim_copy_avx2.c:writePixelBGRA
51
52
WINPR_ATTR_NODISCARD
53
static inline BYTE* writePixelBGRX(BYTE* dst, DWORD formatSize, UINT32 format, BYTE R, BYTE G,
54
                                   BYTE B, BYTE A)
55
0
{
56
0
  WINPR_UNUSED(formatSize);
57
0
  WINPR_UNUSED(format);
58
0
  WINPR_UNUSED(A);
59
60
0
  *dst++ = B;
61
0
  *dst++ = G;
62
0
  *dst++ = R;
63
0
  dst++; /* Do not touch alpha */
64
65
0
  return dst;
66
0
}
Unexecuted instantiation: primitives.c:writePixelBGRX
Unexecuted instantiation: prim_add.c:writePixelBGRX
Unexecuted instantiation: prim_andor.c:writePixelBGRX
Unexecuted instantiation: prim_alphaComp.c:writePixelBGRX
Unexecuted instantiation: prim_colors.c:writePixelBGRX
Unexecuted instantiation: prim_copy.c:writePixelBGRX
Unexecuted instantiation: prim_set.c:writePixelBGRX
Unexecuted instantiation: prim_shift.c:writePixelBGRX
Unexecuted instantiation: prim_sign.c:writePixelBGRX
Unexecuted instantiation: prim_YUV.c:writePixelBGRX
Unexecuted instantiation: prim_YCoCg.c:writePixelBGRX
Unexecuted instantiation: prim_colors_neon.c:writePixelBGRX
Unexecuted instantiation: prim_YCoCg_neon.c:writePixelBGRX
Unexecuted instantiation: prim_YUV_neon.c:writePixelBGRX
Unexecuted instantiation: prim_colors_sse2.c:writePixelBGRX
Unexecuted instantiation: prim_set_sse2.c:writePixelBGRX
Unexecuted instantiation: prim_add_sse3.c:writePixelBGRX
Unexecuted instantiation: prim_alphaComp_sse3.c:writePixelBGRX
Unexecuted instantiation: prim_andor_sse3.c:writePixelBGRX
Unexecuted instantiation: prim_shift_sse3.c:writePixelBGRX
Unexecuted instantiation: prim_sign_ssse3.c:writePixelBGRX
Unexecuted instantiation: prim_YCoCg_ssse3.c:writePixelBGRX
Unexecuted instantiation: prim_copy_sse4_1.c:writePixelBGRX
Unexecuted instantiation: prim_YUV_sse4.1.c:writePixelBGRX
Unexecuted instantiation: prim_copy_avx2.c:writePixelBGRX
67
68
WINPR_ATTR_NODISCARD
69
static inline BYTE* writePixelRGBA(BYTE* dst, DWORD formatSize, UINT32 format, BYTE R, BYTE G,
70
                                   BYTE B, BYTE A)
71
0
{
72
0
  WINPR_UNUSED(formatSize);
73
0
  WINPR_UNUSED(format);
74
75
0
  *dst++ = R;
76
0
  *dst++ = G;
77
0
  *dst++ = B;
78
0
  *dst++ = A;
79
0
  return dst;
80
0
}
Unexecuted instantiation: primitives.c:writePixelRGBA
Unexecuted instantiation: prim_add.c:writePixelRGBA
Unexecuted instantiation: prim_andor.c:writePixelRGBA
Unexecuted instantiation: prim_alphaComp.c:writePixelRGBA
Unexecuted instantiation: prim_colors.c:writePixelRGBA
Unexecuted instantiation: prim_copy.c:writePixelRGBA
Unexecuted instantiation: prim_set.c:writePixelRGBA
Unexecuted instantiation: prim_shift.c:writePixelRGBA
Unexecuted instantiation: prim_sign.c:writePixelRGBA
Unexecuted instantiation: prim_YUV.c:writePixelRGBA
Unexecuted instantiation: prim_YCoCg.c:writePixelRGBA
Unexecuted instantiation: prim_colors_neon.c:writePixelRGBA
Unexecuted instantiation: prim_YCoCg_neon.c:writePixelRGBA
Unexecuted instantiation: prim_YUV_neon.c:writePixelRGBA
Unexecuted instantiation: prim_colors_sse2.c:writePixelRGBA
Unexecuted instantiation: prim_set_sse2.c:writePixelRGBA
Unexecuted instantiation: prim_add_sse3.c:writePixelRGBA
Unexecuted instantiation: prim_alphaComp_sse3.c:writePixelRGBA
Unexecuted instantiation: prim_andor_sse3.c:writePixelRGBA
Unexecuted instantiation: prim_shift_sse3.c:writePixelRGBA
Unexecuted instantiation: prim_sign_ssse3.c:writePixelRGBA
Unexecuted instantiation: prim_YCoCg_ssse3.c:writePixelRGBA
Unexecuted instantiation: prim_copy_sse4_1.c:writePixelRGBA
Unexecuted instantiation: prim_YUV_sse4.1.c:writePixelRGBA
Unexecuted instantiation: prim_copy_avx2.c:writePixelRGBA
81
82
WINPR_ATTR_NODISCARD
83
static inline BYTE* writePixelRGBX(BYTE* dst, DWORD formatSize, UINT32 format, BYTE R, BYTE G,
84
                                   BYTE B, BYTE A)
85
0
{
86
0
  WINPR_UNUSED(formatSize);
87
0
  WINPR_UNUSED(format);
88
0
  WINPR_UNUSED(A);
89
90
0
  *dst++ = R;
91
0
  *dst++ = G;
92
0
  *dst++ = B;
93
0
  dst++; /* Do not touch alpha */
94
95
0
  return dst;
96
0
}
Unexecuted instantiation: primitives.c:writePixelRGBX
Unexecuted instantiation: prim_add.c:writePixelRGBX
Unexecuted instantiation: prim_andor.c:writePixelRGBX
Unexecuted instantiation: prim_alphaComp.c:writePixelRGBX
Unexecuted instantiation: prim_colors.c:writePixelRGBX
Unexecuted instantiation: prim_copy.c:writePixelRGBX
Unexecuted instantiation: prim_set.c:writePixelRGBX
Unexecuted instantiation: prim_shift.c:writePixelRGBX
Unexecuted instantiation: prim_sign.c:writePixelRGBX
Unexecuted instantiation: prim_YUV.c:writePixelRGBX
Unexecuted instantiation: prim_YCoCg.c:writePixelRGBX
Unexecuted instantiation: prim_colors_neon.c:writePixelRGBX
Unexecuted instantiation: prim_YCoCg_neon.c:writePixelRGBX
Unexecuted instantiation: prim_YUV_neon.c:writePixelRGBX
Unexecuted instantiation: prim_colors_sse2.c:writePixelRGBX
Unexecuted instantiation: prim_set_sse2.c:writePixelRGBX
Unexecuted instantiation: prim_add_sse3.c:writePixelRGBX
Unexecuted instantiation: prim_alphaComp_sse3.c:writePixelRGBX
Unexecuted instantiation: prim_andor_sse3.c:writePixelRGBX
Unexecuted instantiation: prim_shift_sse3.c:writePixelRGBX
Unexecuted instantiation: prim_sign_ssse3.c:writePixelRGBX
Unexecuted instantiation: prim_YCoCg_ssse3.c:writePixelRGBX
Unexecuted instantiation: prim_copy_sse4_1.c:writePixelRGBX
Unexecuted instantiation: prim_YUV_sse4.1.c:writePixelRGBX
Unexecuted instantiation: prim_copy_avx2.c:writePixelRGBX
97
98
WINPR_ATTR_NODISCARD
99
static inline BYTE* writePixelABGR(BYTE* dst, DWORD formatSize, UINT32 format, BYTE R, BYTE G,
100
                                   BYTE B, BYTE A)
101
0
{
102
0
  WINPR_UNUSED(formatSize);
103
0
  WINPR_UNUSED(format);
104
105
0
  *dst++ = A;
106
0
  *dst++ = B;
107
0
  *dst++ = G;
108
0
  *dst++ = R;
109
0
  return dst;
110
0
}
Unexecuted instantiation: primitives.c:writePixelABGR
Unexecuted instantiation: prim_add.c:writePixelABGR
Unexecuted instantiation: prim_andor.c:writePixelABGR
Unexecuted instantiation: prim_alphaComp.c:writePixelABGR
Unexecuted instantiation: prim_colors.c:writePixelABGR
Unexecuted instantiation: prim_copy.c:writePixelABGR
Unexecuted instantiation: prim_set.c:writePixelABGR
Unexecuted instantiation: prim_shift.c:writePixelABGR
Unexecuted instantiation: prim_sign.c:writePixelABGR
Unexecuted instantiation: prim_YUV.c:writePixelABGR
Unexecuted instantiation: prim_YCoCg.c:writePixelABGR
Unexecuted instantiation: prim_colors_neon.c:writePixelABGR
Unexecuted instantiation: prim_YCoCg_neon.c:writePixelABGR
Unexecuted instantiation: prim_YUV_neon.c:writePixelABGR
Unexecuted instantiation: prim_colors_sse2.c:writePixelABGR
Unexecuted instantiation: prim_set_sse2.c:writePixelABGR
Unexecuted instantiation: prim_add_sse3.c:writePixelABGR
Unexecuted instantiation: prim_alphaComp_sse3.c:writePixelABGR
Unexecuted instantiation: prim_andor_sse3.c:writePixelABGR
Unexecuted instantiation: prim_shift_sse3.c:writePixelABGR
Unexecuted instantiation: prim_sign_ssse3.c:writePixelABGR
Unexecuted instantiation: prim_YCoCg_ssse3.c:writePixelABGR
Unexecuted instantiation: prim_copy_sse4_1.c:writePixelABGR
Unexecuted instantiation: prim_YUV_sse4.1.c:writePixelABGR
Unexecuted instantiation: prim_copy_avx2.c:writePixelABGR
111
112
WINPR_ATTR_NODISCARD
113
static inline BYTE* writePixelXBGR(BYTE* dst, DWORD formatSize, UINT32 format, BYTE R, BYTE G,
114
                                   BYTE B, BYTE A)
115
0
{
116
0
  WINPR_UNUSED(formatSize);
117
0
  WINPR_UNUSED(format);
118
0
  WINPR_UNUSED(A);
119
120
0
  dst++; /* Do not touch alpha */
121
0
  *dst++ = B;
122
0
  *dst++ = G;
123
0
  *dst++ = R;
124
0
  return dst;
125
0
}
Unexecuted instantiation: primitives.c:writePixelXBGR
Unexecuted instantiation: prim_add.c:writePixelXBGR
Unexecuted instantiation: prim_andor.c:writePixelXBGR
Unexecuted instantiation: prim_alphaComp.c:writePixelXBGR
Unexecuted instantiation: prim_colors.c:writePixelXBGR
Unexecuted instantiation: prim_copy.c:writePixelXBGR
Unexecuted instantiation: prim_set.c:writePixelXBGR
Unexecuted instantiation: prim_shift.c:writePixelXBGR
Unexecuted instantiation: prim_sign.c:writePixelXBGR
Unexecuted instantiation: prim_YUV.c:writePixelXBGR
Unexecuted instantiation: prim_YCoCg.c:writePixelXBGR
Unexecuted instantiation: prim_colors_neon.c:writePixelXBGR
Unexecuted instantiation: prim_YCoCg_neon.c:writePixelXBGR
Unexecuted instantiation: prim_YUV_neon.c:writePixelXBGR
Unexecuted instantiation: prim_colors_sse2.c:writePixelXBGR
Unexecuted instantiation: prim_set_sse2.c:writePixelXBGR
Unexecuted instantiation: prim_add_sse3.c:writePixelXBGR
Unexecuted instantiation: prim_alphaComp_sse3.c:writePixelXBGR
Unexecuted instantiation: prim_andor_sse3.c:writePixelXBGR
Unexecuted instantiation: prim_shift_sse3.c:writePixelXBGR
Unexecuted instantiation: prim_sign_ssse3.c:writePixelXBGR
Unexecuted instantiation: prim_YCoCg_ssse3.c:writePixelXBGR
Unexecuted instantiation: prim_copy_sse4_1.c:writePixelXBGR
Unexecuted instantiation: prim_YUV_sse4.1.c:writePixelXBGR
Unexecuted instantiation: prim_copy_avx2.c:writePixelXBGR
126
127
WINPR_ATTR_NODISCARD
128
static inline BYTE* writePixelARGB(BYTE* dst, DWORD formatSize, UINT32 format, BYTE R, BYTE G,
129
                                   BYTE B, BYTE A)
130
0
{
131
0
  WINPR_UNUSED(formatSize);
132
0
  WINPR_UNUSED(format);
133
134
0
  *dst++ = A;
135
0
  *dst++ = R;
136
0
  *dst++ = G;
137
0
  *dst++ = B;
138
0
  return dst;
139
0
}
Unexecuted instantiation: primitives.c:writePixelARGB
Unexecuted instantiation: prim_add.c:writePixelARGB
Unexecuted instantiation: prim_andor.c:writePixelARGB
Unexecuted instantiation: prim_alphaComp.c:writePixelARGB
Unexecuted instantiation: prim_colors.c:writePixelARGB
Unexecuted instantiation: prim_copy.c:writePixelARGB
Unexecuted instantiation: prim_set.c:writePixelARGB
Unexecuted instantiation: prim_shift.c:writePixelARGB
Unexecuted instantiation: prim_sign.c:writePixelARGB
Unexecuted instantiation: prim_YUV.c:writePixelARGB
Unexecuted instantiation: prim_YCoCg.c:writePixelARGB
Unexecuted instantiation: prim_colors_neon.c:writePixelARGB
Unexecuted instantiation: prim_YCoCg_neon.c:writePixelARGB
Unexecuted instantiation: prim_YUV_neon.c:writePixelARGB
Unexecuted instantiation: prim_colors_sse2.c:writePixelARGB
Unexecuted instantiation: prim_set_sse2.c:writePixelARGB
Unexecuted instantiation: prim_add_sse3.c:writePixelARGB
Unexecuted instantiation: prim_alphaComp_sse3.c:writePixelARGB
Unexecuted instantiation: prim_andor_sse3.c:writePixelARGB
Unexecuted instantiation: prim_shift_sse3.c:writePixelARGB
Unexecuted instantiation: prim_sign_ssse3.c:writePixelARGB
Unexecuted instantiation: prim_YCoCg_ssse3.c:writePixelARGB
Unexecuted instantiation: prim_copy_sse4_1.c:writePixelARGB
Unexecuted instantiation: prim_YUV_sse4.1.c:writePixelARGB
Unexecuted instantiation: prim_copy_avx2.c:writePixelARGB
140
141
WINPR_ATTR_NODISCARD
142
static inline BYTE* writePixelXRGB(BYTE* dst, DWORD formatSize, UINT32 format, BYTE R, BYTE G,
143
                                   BYTE B, BYTE A)
144
0
{
145
0
  WINPR_UNUSED(formatSize);
146
0
  WINPR_UNUSED(format);
147
0
  WINPR_UNUSED(A);
148
149
0
  dst++; /* Do not touch alpha */
150
0
  *dst++ = R;
151
0
  *dst++ = G;
152
0
  *dst++ = B;
153
0
  return dst;
154
0
}
Unexecuted instantiation: primitives.c:writePixelXRGB
Unexecuted instantiation: prim_add.c:writePixelXRGB
Unexecuted instantiation: prim_andor.c:writePixelXRGB
Unexecuted instantiation: prim_alphaComp.c:writePixelXRGB
Unexecuted instantiation: prim_colors.c:writePixelXRGB
Unexecuted instantiation: prim_copy.c:writePixelXRGB
Unexecuted instantiation: prim_set.c:writePixelXRGB
Unexecuted instantiation: prim_shift.c:writePixelXRGB
Unexecuted instantiation: prim_sign.c:writePixelXRGB
Unexecuted instantiation: prim_YUV.c:writePixelXRGB
Unexecuted instantiation: prim_YCoCg.c:writePixelXRGB
Unexecuted instantiation: prim_colors_neon.c:writePixelXRGB
Unexecuted instantiation: prim_YCoCg_neon.c:writePixelXRGB
Unexecuted instantiation: prim_YUV_neon.c:writePixelXRGB
Unexecuted instantiation: prim_colors_sse2.c:writePixelXRGB
Unexecuted instantiation: prim_set_sse2.c:writePixelXRGB
Unexecuted instantiation: prim_add_sse3.c:writePixelXRGB
Unexecuted instantiation: prim_alphaComp_sse3.c:writePixelXRGB
Unexecuted instantiation: prim_andor_sse3.c:writePixelXRGB
Unexecuted instantiation: prim_shift_sse3.c:writePixelXRGB
Unexecuted instantiation: prim_sign_ssse3.c:writePixelXRGB
Unexecuted instantiation: prim_YCoCg_ssse3.c:writePixelXRGB
Unexecuted instantiation: prim_copy_sse4_1.c:writePixelXRGB
Unexecuted instantiation: prim_YUV_sse4.1.c:writePixelXRGB
Unexecuted instantiation: prim_copy_avx2.c:writePixelXRGB
155
156
WINPR_ATTR_NODISCARD
157
static inline BYTE* writePixelGenericAlpha(BYTE* dst, DWORD formatSize, UINT32 format, BYTE R,
158
                                           BYTE G, BYTE B, BYTE A)
159
1.01M
{
160
1.01M
  UINT32 color = FreeRDPGetColor(format, R, G, B, A);
161
1.01M
  FreeRDPWriteColor(dst, format, color);
162
1.01M
  return dst + formatSize;
163
1.01M
}
Unexecuted instantiation: primitives.c:writePixelGenericAlpha
Unexecuted instantiation: prim_add.c:writePixelGenericAlpha
Unexecuted instantiation: prim_andor.c:writePixelGenericAlpha
Unexecuted instantiation: prim_alphaComp.c:writePixelGenericAlpha
Unexecuted instantiation: prim_colors.c:writePixelGenericAlpha
Unexecuted instantiation: prim_copy.c:writePixelGenericAlpha
Unexecuted instantiation: prim_set.c:writePixelGenericAlpha
Unexecuted instantiation: prim_shift.c:writePixelGenericAlpha
Unexecuted instantiation: prim_sign.c:writePixelGenericAlpha
Unexecuted instantiation: prim_YUV.c:writePixelGenericAlpha
prim_YCoCg.c:writePixelGenericAlpha
Line
Count
Source
159
1.01M
{
160
1.01M
  UINT32 color = FreeRDPGetColor(format, R, G, B, A);
161
1.01M
  FreeRDPWriteColor(dst, format, color);
162
1.01M
  return dst + formatSize;
163
1.01M
}
Unexecuted instantiation: prim_colors_neon.c:writePixelGenericAlpha
Unexecuted instantiation: prim_YCoCg_neon.c:writePixelGenericAlpha
Unexecuted instantiation: prim_YUV_neon.c:writePixelGenericAlpha
Unexecuted instantiation: prim_colors_sse2.c:writePixelGenericAlpha
Unexecuted instantiation: prim_set_sse2.c:writePixelGenericAlpha
Unexecuted instantiation: prim_add_sse3.c:writePixelGenericAlpha
Unexecuted instantiation: prim_alphaComp_sse3.c:writePixelGenericAlpha
Unexecuted instantiation: prim_andor_sse3.c:writePixelGenericAlpha
Unexecuted instantiation: prim_shift_sse3.c:writePixelGenericAlpha
Unexecuted instantiation: prim_sign_ssse3.c:writePixelGenericAlpha
Unexecuted instantiation: prim_YCoCg_ssse3.c:writePixelGenericAlpha
Unexecuted instantiation: prim_copy_sse4_1.c:writePixelGenericAlpha
Unexecuted instantiation: prim_YUV_sse4.1.c:writePixelGenericAlpha
Unexecuted instantiation: prim_copy_avx2.c:writePixelGenericAlpha
164
165
WINPR_ATTR_NODISCARD
166
static inline BYTE* writePixelGeneric(BYTE* dst, DWORD formatSize, UINT32 format, BYTE R, BYTE G,
167
                                      BYTE B, BYTE A)
168
0
{
169
0
  UINT32 color = FreeRDPGetColor(format, R, G, B, A);
170
0
  FreeRDPWriteColorIgnoreAlpha(dst, format, color);
171
0
  return dst + formatSize;
172
0
}
Unexecuted instantiation: primitives.c:writePixelGeneric
Unexecuted instantiation: prim_add.c:writePixelGeneric
Unexecuted instantiation: prim_andor.c:writePixelGeneric
Unexecuted instantiation: prim_alphaComp.c:writePixelGeneric
Unexecuted instantiation: prim_colors.c:writePixelGeneric
Unexecuted instantiation: prim_copy.c:writePixelGeneric
Unexecuted instantiation: prim_set.c:writePixelGeneric
Unexecuted instantiation: prim_shift.c:writePixelGeneric
Unexecuted instantiation: prim_sign.c:writePixelGeneric
Unexecuted instantiation: prim_YUV.c:writePixelGeneric
Unexecuted instantiation: prim_YCoCg.c:writePixelGeneric
Unexecuted instantiation: prim_colors_neon.c:writePixelGeneric
Unexecuted instantiation: prim_YCoCg_neon.c:writePixelGeneric
Unexecuted instantiation: prim_YUV_neon.c:writePixelGeneric
Unexecuted instantiation: prim_colors_sse2.c:writePixelGeneric
Unexecuted instantiation: prim_set_sse2.c:writePixelGeneric
Unexecuted instantiation: prim_add_sse3.c:writePixelGeneric
Unexecuted instantiation: prim_alphaComp_sse3.c:writePixelGeneric
Unexecuted instantiation: prim_andor_sse3.c:writePixelGeneric
Unexecuted instantiation: prim_shift_sse3.c:writePixelGeneric
Unexecuted instantiation: prim_sign_ssse3.c:writePixelGeneric
Unexecuted instantiation: prim_YCoCg_ssse3.c:writePixelGeneric
Unexecuted instantiation: prim_copy_sse4_1.c:writePixelGeneric
Unexecuted instantiation: prim_YUV_sse4.1.c:writePixelGeneric
Unexecuted instantiation: prim_copy_avx2.c:writePixelGeneric
173
174
typedef BYTE* (*fkt_writePixel)(BYTE*, DWORD, UINT32, BYTE, BYTE, BYTE, BYTE);
175
176
WINPR_ATTR_NODISCARD
177
static inline fkt_writePixel getPixelWriteFunction(DWORD format, BOOL useAlpha)
178
546
{
179
546
  switch (format)
180
546
  {
181
0
    case PIXEL_FORMAT_ARGB32:
182
0
    case PIXEL_FORMAT_XRGB32:
183
0
      return useAlpha ? writePixelARGB : writePixelXRGB;
184
185
0
    case PIXEL_FORMAT_ABGR32:
186
0
    case PIXEL_FORMAT_XBGR32:
187
0
      return useAlpha ? writePixelABGR : writePixelXBGR;
188
189
0
    case PIXEL_FORMAT_RGBA32:
190
0
    case PIXEL_FORMAT_RGBX32:
191
0
      return useAlpha ? writePixelRGBA : writePixelRGBX;
192
193
0
    case PIXEL_FORMAT_BGRA32:
194
0
    case PIXEL_FORMAT_BGRX32:
195
0
      return useAlpha ? writePixelBGRA : writePixelBGRX;
196
197
546
    default:
198
546
      return useAlpha ? writePixelGenericAlpha : writePixelGeneric;
199
546
  }
200
546
}
Unexecuted instantiation: primitives.c:getPixelWriteFunction
Unexecuted instantiation: prim_add.c:getPixelWriteFunction
Unexecuted instantiation: prim_andor.c:getPixelWriteFunction
Unexecuted instantiation: prim_alphaComp.c:getPixelWriteFunction
Unexecuted instantiation: prim_colors.c:getPixelWriteFunction
Unexecuted instantiation: prim_copy.c:getPixelWriteFunction
Unexecuted instantiation: prim_set.c:getPixelWriteFunction
Unexecuted instantiation: prim_shift.c:getPixelWriteFunction
Unexecuted instantiation: prim_sign.c:getPixelWriteFunction
Unexecuted instantiation: prim_YUV.c:getPixelWriteFunction
prim_YCoCg.c:getPixelWriteFunction
Line
Count
Source
178
546
{
179
546
  switch (format)
180
546
  {
181
0
    case PIXEL_FORMAT_ARGB32:
182
0
    case PIXEL_FORMAT_XRGB32:
183
0
      return useAlpha ? writePixelARGB : writePixelXRGB;
184
185
0
    case PIXEL_FORMAT_ABGR32:
186
0
    case PIXEL_FORMAT_XBGR32:
187
0
      return useAlpha ? writePixelABGR : writePixelXBGR;
188
189
0
    case PIXEL_FORMAT_RGBA32:
190
0
    case PIXEL_FORMAT_RGBX32:
191
0
      return useAlpha ? writePixelRGBA : writePixelRGBX;
192
193
0
    case PIXEL_FORMAT_BGRA32:
194
0
    case PIXEL_FORMAT_BGRX32:
195
0
      return useAlpha ? writePixelBGRA : writePixelBGRX;
196
197
546
    default:
198
546
      return useAlpha ? writePixelGenericAlpha : writePixelGeneric;
199
546
  }
200
546
}
Unexecuted instantiation: prim_colors_neon.c:getPixelWriteFunction
Unexecuted instantiation: prim_YCoCg_neon.c:getPixelWriteFunction
Unexecuted instantiation: prim_YUV_neon.c:getPixelWriteFunction
Unexecuted instantiation: prim_colors_sse2.c:getPixelWriteFunction
Unexecuted instantiation: prim_set_sse2.c:getPixelWriteFunction
Unexecuted instantiation: prim_add_sse3.c:getPixelWriteFunction
Unexecuted instantiation: prim_alphaComp_sse3.c:getPixelWriteFunction
Unexecuted instantiation: prim_andor_sse3.c:getPixelWriteFunction
Unexecuted instantiation: prim_shift_sse3.c:getPixelWriteFunction
Unexecuted instantiation: prim_sign_ssse3.c:getPixelWriteFunction
Unexecuted instantiation: prim_YCoCg_ssse3.c:getPixelWriteFunction
Unexecuted instantiation: prim_copy_sse4_1.c:getPixelWriteFunction
Unexecuted instantiation: prim_YUV_sse4.1.c:getPixelWriteFunction
Unexecuted instantiation: prim_copy_avx2.c:getPixelWriteFunction
201
202
WINPR_ATTR_NODISCARD
203
static inline BYTE CLIP(INT64 X)
204
3.03M
{
205
3.03M
  if (X > 255L)
206
130k
    return 255L;
207
208
2.90M
  if (X < 0L)
209
431k
    return 0L;
210
211
2.47M
  return (BYTE)X;
212
2.90M
}
Unexecuted instantiation: primitives.c:CLIP
Unexecuted instantiation: prim_add.c:CLIP
Unexecuted instantiation: prim_andor.c:CLIP
Unexecuted instantiation: prim_alphaComp.c:CLIP
Unexecuted instantiation: prim_colors.c:CLIP
Unexecuted instantiation: prim_copy.c:CLIP
Unexecuted instantiation: prim_set.c:CLIP
Unexecuted instantiation: prim_shift.c:CLIP
Unexecuted instantiation: prim_sign.c:CLIP
Unexecuted instantiation: prim_YUV.c:CLIP
prim_YCoCg.c:CLIP
Line
Count
Source
204
3.03M
{
205
3.03M
  if (X > 255L)
206
130k
    return 255L;
207
208
2.90M
  if (X < 0L)
209
431k
    return 0L;
210
211
2.47M
  return (BYTE)X;
212
2.90M
}
Unexecuted instantiation: prim_colors_neon.c:CLIP
Unexecuted instantiation: prim_YCoCg_neon.c:CLIP
Unexecuted instantiation: prim_YUV_neon.c:CLIP
Unexecuted instantiation: prim_colors_sse2.c:CLIP
Unexecuted instantiation: prim_set_sse2.c:CLIP
Unexecuted instantiation: prim_add_sse3.c:CLIP
Unexecuted instantiation: prim_alphaComp_sse3.c:CLIP
Unexecuted instantiation: prim_andor_sse3.c:CLIP
Unexecuted instantiation: prim_shift_sse3.c:CLIP
Unexecuted instantiation: prim_sign_ssse3.c:CLIP
Unexecuted instantiation: prim_YCoCg_ssse3.c:CLIP
Unexecuted instantiation: prim_copy_sse4_1.c:CLIP
Unexecuted instantiation: prim_YUV_sse4.1.c:CLIP
Unexecuted instantiation: prim_copy_avx2.c:CLIP
213
214
WINPR_ATTR_NODISCARD
215
static inline BYTE CONDITIONAL_CLIP(INT32 in, BYTE original)
216
0
{
217
0
  BYTE out = CLIP(in);
218
0
  BYTE diff = 0;
219
0
  if (out > original)
220
0
    diff = out - original;
221
0
  else
222
0
    diff = original - out;
223
0
  if (diff < 30)
224
0
    return original;
225
0
  return out;
226
0
}
Unexecuted instantiation: primitives.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_add.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_andor.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_alphaComp.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_colors.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_copy.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_set.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_shift.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_sign.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_YUV.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_YCoCg.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_colors_neon.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_YCoCg_neon.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_YUV_neon.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_colors_sse2.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_set_sse2.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_add_sse3.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_alphaComp_sse3.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_andor_sse3.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_shift_sse3.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_sign_ssse3.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_YCoCg_ssse3.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_copy_sse4_1.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_YUV_sse4.1.c:CONDITIONAL_CLIP
Unexecuted instantiation: prim_copy_avx2.c:CONDITIONAL_CLIP
227
228
/**
229
 * | R |   ( | 256     0    403 | |    Y    | )
230
 * | G | = ( | 256   -48   -120 | | U - 128 | ) >> 8
231
 * | B |   ( | 256   475      0 | | V - 128 | )
232
 */
233
static inline INT32 C(INT32 Y)
234
0
{
235
0
  return (Y)-0;
236
0
}
Unexecuted instantiation: primitives.c:C
Unexecuted instantiation: prim_add.c:C
Unexecuted instantiation: prim_andor.c:C
Unexecuted instantiation: prim_alphaComp.c:C
Unexecuted instantiation: prim_colors.c:C
Unexecuted instantiation: prim_copy.c:C
Unexecuted instantiation: prim_set.c:C
Unexecuted instantiation: prim_shift.c:C
Unexecuted instantiation: prim_sign.c:C
Unexecuted instantiation: prim_YUV.c:C
Unexecuted instantiation: prim_YCoCg.c:C
Unexecuted instantiation: prim_colors_neon.c:C
Unexecuted instantiation: prim_YCoCg_neon.c:C
Unexecuted instantiation: prim_YUV_neon.c:C
Unexecuted instantiation: prim_colors_sse2.c:C
Unexecuted instantiation: prim_set_sse2.c:C
Unexecuted instantiation: prim_add_sse3.c:C
Unexecuted instantiation: prim_alphaComp_sse3.c:C
Unexecuted instantiation: prim_andor_sse3.c:C
Unexecuted instantiation: prim_shift_sse3.c:C
Unexecuted instantiation: prim_sign_ssse3.c:C
Unexecuted instantiation: prim_YCoCg_ssse3.c:C
Unexecuted instantiation: prim_copy_sse4_1.c:C
Unexecuted instantiation: prim_YUV_sse4.1.c:C
Unexecuted instantiation: prim_copy_avx2.c:C
237
238
static inline INT32 D(INT32 U)
239
0
{
240
0
  return (U)-128;
241
0
}
Unexecuted instantiation: primitives.c:D
Unexecuted instantiation: prim_add.c:D
Unexecuted instantiation: prim_andor.c:D
Unexecuted instantiation: prim_alphaComp.c:D
Unexecuted instantiation: prim_colors.c:D
Unexecuted instantiation: prim_copy.c:D
Unexecuted instantiation: prim_set.c:D
Unexecuted instantiation: prim_shift.c:D
Unexecuted instantiation: prim_sign.c:D
Unexecuted instantiation: prim_YUV.c:D
Unexecuted instantiation: prim_YCoCg.c:D
Unexecuted instantiation: prim_colors_neon.c:D
Unexecuted instantiation: prim_YCoCg_neon.c:D
Unexecuted instantiation: prim_YUV_neon.c:D
Unexecuted instantiation: prim_colors_sse2.c:D
Unexecuted instantiation: prim_set_sse2.c:D
Unexecuted instantiation: prim_add_sse3.c:D
Unexecuted instantiation: prim_alphaComp_sse3.c:D
Unexecuted instantiation: prim_andor_sse3.c:D
Unexecuted instantiation: prim_shift_sse3.c:D
Unexecuted instantiation: prim_sign_ssse3.c:D
Unexecuted instantiation: prim_YCoCg_ssse3.c:D
Unexecuted instantiation: prim_copy_sse4_1.c:D
Unexecuted instantiation: prim_YUV_sse4.1.c:D
Unexecuted instantiation: prim_copy_avx2.c:D
242
243
static inline INT32 E(INT32 V)
244
0
{
245
0
  return (V)-128;
246
0
}
Unexecuted instantiation: primitives.c:E
Unexecuted instantiation: prim_add.c:E
Unexecuted instantiation: prim_andor.c:E
Unexecuted instantiation: prim_alphaComp.c:E
Unexecuted instantiation: prim_colors.c:E
Unexecuted instantiation: prim_copy.c:E
Unexecuted instantiation: prim_set.c:E
Unexecuted instantiation: prim_shift.c:E
Unexecuted instantiation: prim_sign.c:E
Unexecuted instantiation: prim_YUV.c:E
Unexecuted instantiation: prim_YCoCg.c:E
Unexecuted instantiation: prim_colors_neon.c:E
Unexecuted instantiation: prim_YCoCg_neon.c:E
Unexecuted instantiation: prim_YUV_neon.c:E
Unexecuted instantiation: prim_colors_sse2.c:E
Unexecuted instantiation: prim_set_sse2.c:E
Unexecuted instantiation: prim_add_sse3.c:E
Unexecuted instantiation: prim_alphaComp_sse3.c:E
Unexecuted instantiation: prim_andor_sse3.c:E
Unexecuted instantiation: prim_shift_sse3.c:E
Unexecuted instantiation: prim_sign_ssse3.c:E
Unexecuted instantiation: prim_YCoCg_ssse3.c:E
Unexecuted instantiation: prim_copy_sse4_1.c:E
Unexecuted instantiation: prim_YUV_sse4.1.c:E
Unexecuted instantiation: prim_copy_avx2.c:E
247
248
WINPR_ATTR_NODISCARD
249
static inline BYTE YUV2R(INT32 Y, INT32 U, INT32 V)
250
0
{
251
0
  const INT32 r = (256 * C(Y) + 0 * D(U) + 403 * E(V));
252
0
  const INT32 r8 = r >> 8;
253
0
  return CLIP(r8);
254
0
}
Unexecuted instantiation: primitives.c:YUV2R
Unexecuted instantiation: prim_add.c:YUV2R
Unexecuted instantiation: prim_andor.c:YUV2R
Unexecuted instantiation: prim_alphaComp.c:YUV2R
Unexecuted instantiation: prim_colors.c:YUV2R
Unexecuted instantiation: prim_copy.c:YUV2R
Unexecuted instantiation: prim_set.c:YUV2R
Unexecuted instantiation: prim_shift.c:YUV2R
Unexecuted instantiation: prim_sign.c:YUV2R
Unexecuted instantiation: prim_YUV.c:YUV2R
Unexecuted instantiation: prim_YCoCg.c:YUV2R
Unexecuted instantiation: prim_colors_neon.c:YUV2R
Unexecuted instantiation: prim_YCoCg_neon.c:YUV2R
Unexecuted instantiation: prim_YUV_neon.c:YUV2R
Unexecuted instantiation: prim_colors_sse2.c:YUV2R
Unexecuted instantiation: prim_set_sse2.c:YUV2R
Unexecuted instantiation: prim_add_sse3.c:YUV2R
Unexecuted instantiation: prim_alphaComp_sse3.c:YUV2R
Unexecuted instantiation: prim_andor_sse3.c:YUV2R
Unexecuted instantiation: prim_shift_sse3.c:YUV2R
Unexecuted instantiation: prim_sign_ssse3.c:YUV2R
Unexecuted instantiation: prim_YCoCg_ssse3.c:YUV2R
Unexecuted instantiation: prim_copy_sse4_1.c:YUV2R
Unexecuted instantiation: prim_YUV_sse4.1.c:YUV2R
Unexecuted instantiation: prim_copy_avx2.c:YUV2R
255
256
WINPR_ATTR_NODISCARD
257
static inline BYTE YUV2G(INT32 Y, INT32 U, INT32 V)
258
0
{
259
0
  const INT32 g = (256 * C(Y) - 48 * D(U) - 120 * E(V));
260
0
  const INT32 g8 = g >> 8;
261
0
  return CLIP(g8);
262
0
}
Unexecuted instantiation: primitives.c:YUV2G
Unexecuted instantiation: prim_add.c:YUV2G
Unexecuted instantiation: prim_andor.c:YUV2G
Unexecuted instantiation: prim_alphaComp.c:YUV2G
Unexecuted instantiation: prim_colors.c:YUV2G
Unexecuted instantiation: prim_copy.c:YUV2G
Unexecuted instantiation: prim_set.c:YUV2G
Unexecuted instantiation: prim_shift.c:YUV2G
Unexecuted instantiation: prim_sign.c:YUV2G
Unexecuted instantiation: prim_YUV.c:YUV2G
Unexecuted instantiation: prim_YCoCg.c:YUV2G
Unexecuted instantiation: prim_colors_neon.c:YUV2G
Unexecuted instantiation: prim_YCoCg_neon.c:YUV2G
Unexecuted instantiation: prim_YUV_neon.c:YUV2G
Unexecuted instantiation: prim_colors_sse2.c:YUV2G
Unexecuted instantiation: prim_set_sse2.c:YUV2G
Unexecuted instantiation: prim_add_sse3.c:YUV2G
Unexecuted instantiation: prim_alphaComp_sse3.c:YUV2G
Unexecuted instantiation: prim_andor_sse3.c:YUV2G
Unexecuted instantiation: prim_shift_sse3.c:YUV2G
Unexecuted instantiation: prim_sign_ssse3.c:YUV2G
Unexecuted instantiation: prim_YCoCg_ssse3.c:YUV2G
Unexecuted instantiation: prim_copy_sse4_1.c:YUV2G
Unexecuted instantiation: prim_YUV_sse4.1.c:YUV2G
Unexecuted instantiation: prim_copy_avx2.c:YUV2G
263
264
WINPR_ATTR_NODISCARD
265
static inline BYTE YUV2B(INT32 Y, INT32 U, INT32 V)
266
0
{
267
0
  const INT32 b = (256 * C(Y) + 475 * D(U) + 0 * E(V));
268
0
  const INT32 b8 = b >> 8;
269
0
  return CLIP(b8);
270
0
}
Unexecuted instantiation: primitives.c:YUV2B
Unexecuted instantiation: prim_add.c:YUV2B
Unexecuted instantiation: prim_andor.c:YUV2B
Unexecuted instantiation: prim_alphaComp.c:YUV2B
Unexecuted instantiation: prim_colors.c:YUV2B
Unexecuted instantiation: prim_copy.c:YUV2B
Unexecuted instantiation: prim_set.c:YUV2B
Unexecuted instantiation: prim_shift.c:YUV2B
Unexecuted instantiation: prim_sign.c:YUV2B
Unexecuted instantiation: prim_YUV.c:YUV2B
Unexecuted instantiation: prim_YCoCg.c:YUV2B
Unexecuted instantiation: prim_colors_neon.c:YUV2B
Unexecuted instantiation: prim_YCoCg_neon.c:YUV2B
Unexecuted instantiation: prim_YUV_neon.c:YUV2B
Unexecuted instantiation: prim_colors_sse2.c:YUV2B
Unexecuted instantiation: prim_set_sse2.c:YUV2B
Unexecuted instantiation: prim_add_sse3.c:YUV2B
Unexecuted instantiation: prim_alphaComp_sse3.c:YUV2B
Unexecuted instantiation: prim_andor_sse3.c:YUV2B
Unexecuted instantiation: prim_shift_sse3.c:YUV2B
Unexecuted instantiation: prim_sign_ssse3.c:YUV2B
Unexecuted instantiation: prim_YCoCg_ssse3.c:YUV2B
Unexecuted instantiation: prim_copy_sse4_1.c:YUV2B
Unexecuted instantiation: prim_YUV_sse4.1.c:YUV2B
Unexecuted instantiation: prim_copy_avx2.c:YUV2B
271
272
/**
273
 * | Y |    ( |  54   183     18 | | R | )        |  0  |
274
 * | U | =  ( | -29   -99    128 | | G | ) >> 8 + | 128 |
275
 * | V |    ( | 128  -116    -12 | | B | )        | 128 |
276
 */
277
WINPR_ATTR_NODISCARD
278
static inline BYTE RGB2Y(INT32 R, INT32 G, INT32 B)
279
0
{
280
0
  const INT32 val = ((54 * R + 183 * G + 18 * B) >> 8);
281
0
  return WINPR_ASSERTING_INT_CAST(BYTE, val);
282
0
}
Unexecuted instantiation: primitives.c:RGB2Y
Unexecuted instantiation: prim_add.c:RGB2Y
Unexecuted instantiation: prim_andor.c:RGB2Y
Unexecuted instantiation: prim_alphaComp.c:RGB2Y
Unexecuted instantiation: prim_colors.c:RGB2Y
Unexecuted instantiation: prim_copy.c:RGB2Y
Unexecuted instantiation: prim_set.c:RGB2Y
Unexecuted instantiation: prim_shift.c:RGB2Y
Unexecuted instantiation: prim_sign.c:RGB2Y
Unexecuted instantiation: prim_YUV.c:RGB2Y
Unexecuted instantiation: prim_YCoCg.c:RGB2Y
Unexecuted instantiation: prim_colors_neon.c:RGB2Y
Unexecuted instantiation: prim_YCoCg_neon.c:RGB2Y
Unexecuted instantiation: prim_YUV_neon.c:RGB2Y
Unexecuted instantiation: prim_colors_sse2.c:RGB2Y
Unexecuted instantiation: prim_set_sse2.c:RGB2Y
Unexecuted instantiation: prim_add_sse3.c:RGB2Y
Unexecuted instantiation: prim_alphaComp_sse3.c:RGB2Y
Unexecuted instantiation: prim_andor_sse3.c:RGB2Y
Unexecuted instantiation: prim_shift_sse3.c:RGB2Y
Unexecuted instantiation: prim_sign_ssse3.c:RGB2Y
Unexecuted instantiation: prim_YCoCg_ssse3.c:RGB2Y
Unexecuted instantiation: prim_copy_sse4_1.c:RGB2Y
Unexecuted instantiation: prim_YUV_sse4.1.c:RGB2Y
Unexecuted instantiation: prim_copy_avx2.c:RGB2Y
283
284
WINPR_ATTR_NODISCARD
285
static inline BYTE RGB2U(INT32 R, INT32 G, INT32 B)
286
0
{
287
0
  const INT32 val = (((-29 * R - 99 * G + 128 * B) >> 8) + 128);
288
0
  return WINPR_ASSERTING_INT_CAST(BYTE, val);
289
0
}
Unexecuted instantiation: primitives.c:RGB2U
Unexecuted instantiation: prim_add.c:RGB2U
Unexecuted instantiation: prim_andor.c:RGB2U
Unexecuted instantiation: prim_alphaComp.c:RGB2U
Unexecuted instantiation: prim_colors.c:RGB2U
Unexecuted instantiation: prim_copy.c:RGB2U
Unexecuted instantiation: prim_set.c:RGB2U
Unexecuted instantiation: prim_shift.c:RGB2U
Unexecuted instantiation: prim_sign.c:RGB2U
Unexecuted instantiation: prim_YUV.c:RGB2U
Unexecuted instantiation: prim_YCoCg.c:RGB2U
Unexecuted instantiation: prim_colors_neon.c:RGB2U
Unexecuted instantiation: prim_YCoCg_neon.c:RGB2U
Unexecuted instantiation: prim_YUV_neon.c:RGB2U
Unexecuted instantiation: prim_colors_sse2.c:RGB2U
Unexecuted instantiation: prim_set_sse2.c:RGB2U
Unexecuted instantiation: prim_add_sse3.c:RGB2U
Unexecuted instantiation: prim_alphaComp_sse3.c:RGB2U
Unexecuted instantiation: prim_andor_sse3.c:RGB2U
Unexecuted instantiation: prim_shift_sse3.c:RGB2U
Unexecuted instantiation: prim_sign_ssse3.c:RGB2U
Unexecuted instantiation: prim_YCoCg_ssse3.c:RGB2U
Unexecuted instantiation: prim_copy_sse4_1.c:RGB2U
Unexecuted instantiation: prim_YUV_sse4.1.c:RGB2U
Unexecuted instantiation: prim_copy_avx2.c:RGB2U
290
291
WINPR_ATTR_NODISCARD
292
static inline BYTE RGB2V(INT32 R, INT32 G, INT32 B)
293
0
{
294
0
  const INT32 val = (((128 * R - 116 * G - 12 * B) >> 8) + 128);
295
0
  return WINPR_ASSERTING_INT_CAST(BYTE, val);
296
0
}
Unexecuted instantiation: primitives.c:RGB2V
Unexecuted instantiation: prim_add.c:RGB2V
Unexecuted instantiation: prim_andor.c:RGB2V
Unexecuted instantiation: prim_alphaComp.c:RGB2V
Unexecuted instantiation: prim_colors.c:RGB2V
Unexecuted instantiation: prim_copy.c:RGB2V
Unexecuted instantiation: prim_set.c:RGB2V
Unexecuted instantiation: prim_shift.c:RGB2V
Unexecuted instantiation: prim_sign.c:RGB2V
Unexecuted instantiation: prim_YUV.c:RGB2V
Unexecuted instantiation: prim_YCoCg.c:RGB2V
Unexecuted instantiation: prim_colors_neon.c:RGB2V
Unexecuted instantiation: prim_YCoCg_neon.c:RGB2V
Unexecuted instantiation: prim_YUV_neon.c:RGB2V
Unexecuted instantiation: prim_colors_sse2.c:RGB2V
Unexecuted instantiation: prim_set_sse2.c:RGB2V
Unexecuted instantiation: prim_add_sse3.c:RGB2V
Unexecuted instantiation: prim_alphaComp_sse3.c:RGB2V
Unexecuted instantiation: prim_andor_sse3.c:RGB2V
Unexecuted instantiation: prim_shift_sse3.c:RGB2V
Unexecuted instantiation: prim_sign_ssse3.c:RGB2V
Unexecuted instantiation: prim_YCoCg_ssse3.c:RGB2V
Unexecuted instantiation: prim_copy_sse4_1.c:RGB2V
Unexecuted instantiation: prim_YUV_sse4.1.c:RGB2V
Unexecuted instantiation: prim_copy_avx2.c:RGB2V
297
298
static inline BYTE* writeYUVPixel(BYTE* dst, UINT32 DstFormat, INT32 y, INT32 u, INT32 v,
299
                                  fkt_writePixel fkt)
300
0
{
301
0
  WINPR_ASSERT(fkt);
302
0
  const BYTE r = YUV2R(y, u, v);
303
0
  const BYTE g = YUV2G(y, u, v);
304
0
  const BYTE b = YUV2B(y, u, v);
305
0
  const DWORD formatSize = FreeRDPGetBytesPerPixel(DstFormat);
306
0
  return fkt(dst, formatSize, DstFormat, r, g, b, 0);
307
0
}
Unexecuted instantiation: primitives.c:writeYUVPixel
Unexecuted instantiation: prim_add.c:writeYUVPixel
Unexecuted instantiation: prim_andor.c:writeYUVPixel
Unexecuted instantiation: prim_alphaComp.c:writeYUVPixel
Unexecuted instantiation: prim_colors.c:writeYUVPixel
Unexecuted instantiation: prim_copy.c:writeYUVPixel
Unexecuted instantiation: prim_set.c:writeYUVPixel
Unexecuted instantiation: prim_shift.c:writeYUVPixel
Unexecuted instantiation: prim_sign.c:writeYUVPixel
Unexecuted instantiation: prim_YUV.c:writeYUVPixel
Unexecuted instantiation: prim_YCoCg.c:writeYUVPixel
Unexecuted instantiation: prim_colors_neon.c:writeYUVPixel
Unexecuted instantiation: prim_YCoCg_neon.c:writeYUVPixel
Unexecuted instantiation: prim_YUV_neon.c:writeYUVPixel
Unexecuted instantiation: prim_colors_sse2.c:writeYUVPixel
Unexecuted instantiation: prim_set_sse2.c:writeYUVPixel
Unexecuted instantiation: prim_add_sse3.c:writeYUVPixel
Unexecuted instantiation: prim_alphaComp_sse3.c:writeYUVPixel
Unexecuted instantiation: prim_andor_sse3.c:writeYUVPixel
Unexecuted instantiation: prim_shift_sse3.c:writeYUVPixel
Unexecuted instantiation: prim_sign_ssse3.c:writeYUVPixel
Unexecuted instantiation: prim_YCoCg_ssse3.c:writeYUVPixel
Unexecuted instantiation: prim_copy_sse4_1.c:writeYUVPixel
Unexecuted instantiation: prim_YUV_sse4.1.c:writeYUVPixel
Unexecuted instantiation: prim_copy_avx2.c:writeYUVPixel
308
309
FREERDP_LOCAL void general_RGBToAVC444YUV_BGRX_DOUBLE_ROW(
310
    size_t offset, const BYTE* WINPR_RESTRICT srcEven, const BYTE* WINPR_RESTRICT srcOdd,
311
    BYTE* WINPR_RESTRICT b1Even, BYTE* WINPR_RESTRICT b1Odd, BYTE* WINPR_RESTRICT b2,
312
    BYTE* WINPR_RESTRICT b3, BYTE* WINPR_RESTRICT b4, BYTE* WINPR_RESTRICT b5,
313
    BYTE* WINPR_RESTRICT b6, BYTE* WINPR_RESTRICT b7, UINT32 width);
314
315
FREERDP_LOCAL void general_RGBToAVC444YUVv2_BGRX_DOUBLE_ROW(
316
    size_t offset, const BYTE* WINPR_RESTRICT pSrcEven, const BYTE* WINPR_RESTRICT pSrcOdd,
317
    BYTE* WINPR_RESTRICT yLumaDstEven, BYTE* WINPR_RESTRICT yLumaDstOdd,
318
    BYTE* WINPR_RESTRICT uLumaDst, BYTE* WINPR_RESTRICT vLumaDst,
319
    BYTE* WINPR_RESTRICT yEvenChromaDst1, BYTE* WINPR_RESTRICT yEvenChromaDst2,
320
    BYTE* WINPR_RESTRICT yOddChromaDst1, BYTE* WINPR_RESTRICT yOddChromaDst2,
321
    BYTE* WINPR_RESTRICT uChromaDst1, BYTE* WINPR_RESTRICT uChromaDst2,
322
    BYTE* WINPR_RESTRICT vChromaDst1, BYTE* WINPR_RESTRICT vChromaDst2, UINT32 width);
323
324
/* Function prototypes for all the init/deinit routines. */
325
FREERDP_LOCAL void primitives_init_copy(primitives_t* WINPR_RESTRICT prims);
326
FREERDP_LOCAL void primitives_init_set(primitives_t* WINPR_RESTRICT prims);
327
FREERDP_LOCAL void primitives_init_add(primitives_t* WINPR_RESTRICT prims);
328
FREERDP_LOCAL void primitives_init_andor(primitives_t* WINPR_RESTRICT prims);
329
FREERDP_LOCAL void primitives_init_shift(primitives_t* WINPR_RESTRICT prims);
330
FREERDP_LOCAL void primitives_init_sign(primitives_t* WINPR_RESTRICT prims);
331
FREERDP_LOCAL void primitives_init_alphaComp(primitives_t* WINPR_RESTRICT prims);
332
FREERDP_LOCAL void primitives_init_colors(primitives_t* WINPR_RESTRICT prims);
333
FREERDP_LOCAL void primitives_init_YCoCg(primitives_t* WINPR_RESTRICT prims);
334
FREERDP_LOCAL void primitives_init_YUV(primitives_t* WINPR_RESTRICT prims);
335
336
FREERDP_LOCAL void primitives_init_copy_opt(primitives_t* WINPR_RESTRICT prims);
337
FREERDP_LOCAL void primitives_init_set_opt(primitives_t* WINPR_RESTRICT prims);
338
FREERDP_LOCAL void primitives_init_add_opt(primitives_t* WINPR_RESTRICT prims);
339
FREERDP_LOCAL void primitives_init_andor_opt(primitives_t* WINPR_RESTRICT prims);
340
FREERDP_LOCAL void primitives_init_shift_opt(primitives_t* WINPR_RESTRICT prims);
341
FREERDP_LOCAL void primitives_init_sign_opt(primitives_t* WINPR_RESTRICT prims);
342
FREERDP_LOCAL void primitives_init_alphaComp_opt(primitives_t* WINPR_RESTRICT prims);
343
FREERDP_LOCAL void primitives_init_colors_opt(primitives_t* WINPR_RESTRICT prims);
344
FREERDP_LOCAL void primitives_init_YCoCg_opt(primitives_t* WINPR_RESTRICT prims);
345
FREERDP_LOCAL void primitives_init_YUV_opt(primitives_t* WINPR_RESTRICT prims);
346
347
#if defined(WITH_OPENCL)
348
WINPR_ATTR_NODISCARD
349
FREERDP_LOCAL BOOL primitives_init_opencl(primitives_t* WINPR_RESTRICT prims);
350
#endif
351
352
#endif /* FREERDP_LIB_PRIM_INTERNAL_H */