Skip to content

Commit 56223ab

Browse files
committed
Use more constexpr
1 parent 112cc93 commit 56223ab

4 files changed

Lines changed: 20 additions & 19 deletions

File tree

avs_core/filters/overlay/OF_darken.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ void OL_DarkenImage::DoBlendImage(ImageOverlayInternal* base, ImageOverlayIntern
8484
}
8585
}
8686

87-
87+
// float not supported yet
8888
template<typename pixel_t, bool maskMode, bool of_darken>
8989
void OL_DarkenImage::BlendImageMask(ImageOverlayInternal* base, ImageOverlayInternal* overlay, ImageOverlayInternal* mask) {
9090

@@ -110,17 +110,18 @@ void OL_DarkenImage::BlendImageMask(ImageOverlayInternal* base, ImageOverlayInte
110110
const int maskpitch = maskMode ? (mask->pitch) / sizeof(pixel_t) : 0;
111111

112112
// avoid "uint16*uint16 can't get into int32" overflows
113-
typedef typename std::conditional < sizeof(pixel_t) == 1, int, typename std::conditional < sizeof(pixel_t) == 2, int64_t, float>::type >::type result_t;
113+
using result_t = typename std::conditional<sizeof(pixel_t) == 1, int, int64_t>::type;
114114

115115
int w = base->w();
116116
int h = base->h();
117117
if (opacity == 256) {
118-
if(maskMode) {
118+
// full opacity - optimize
119+
if constexpr (maskMode) {
119120
// opacity == 256 && maskMode
120121
for (int y = 0; y < h; y++) {
121122
for (int x = 0; x < w; x++) {
122123
bool cmp;
123-
if (of_darken)
124+
if constexpr (of_darken)
124125
cmp = ovY[x] < baseY[x];
125126
else
126127
cmp = ovY[x] > baseY[x];
@@ -147,7 +148,7 @@ void OL_DarkenImage::BlendImageMask(ImageOverlayInternal* base, ImageOverlayInte
147148
}
148149
} else {
149150
// opacity == 256 && !maskMode
150-
if(of_darken) {
151+
if constexpr (of_darken) {
151152
#ifdef INTEL_INTRINSICS
152153
if (sizeof(pixel_t)==1 && (env->GetCPUFlags() & CPUF_SSE4_1)) {
153154
overlay_darken_sse41((BYTE *)baseY, (BYTE *)baseU, (BYTE *)baseV, (BYTE *)ovY, (BYTE *)ovU, (BYTE *)ovV, basepitch, overlaypitch, w, h);
@@ -189,12 +190,12 @@ void OL_DarkenImage::BlendImageMask(ImageOverlayInternal* base, ImageOverlayInte
189190
for (int y = 0; y < h; y++) {
190191
for (int x = 0; x < w; x++) {
191192
bool cmp;
192-
if (of_darken)
193+
if constexpr (of_darken)
193194
cmp = ovY[x] < baseY[x];
194195
else
195196
cmp = ovY[x] > baseY[x];
196197
if (cmp) {
197-
if (maskMode) {
198+
if constexpr (maskMode) {
198199
result_t mY = (maskY[x] * opacity) >> OPACITY_SHIFT;
199200
result_t mU = (maskU[x] * opacity) >> OPACITY_SHIFT;
200201
result_t mV = (maskV[x] * opacity) >> OPACITY_SHIFT;
@@ -217,7 +218,7 @@ void OL_DarkenImage::BlendImageMask(ImageOverlayInternal* base, ImageOverlayInte
217218
ovU += overlaypitch;
218219
ovV += overlaypitch;
219220

220-
if(maskMode) {
221+
if constexpr (maskMode) {
221222
maskY += maskpitch;
222223
maskU += maskpitch;
223224
maskV += maskpitch;

avs_core/filters/overlay/OF_difference.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ void OL_DifferenceImage::DoBlendImage(ImageOverlayInternal* base, ImageOverlayIn
5959
// BlendImage<float>(base, overlay);
6060
}
6161

62-
62+
// no float support
6363
template<typename pixel_t, bool maskMode>
6464
void OL_DifferenceImage::BlendImageMask(ImageOverlayInternal* base, ImageOverlayInternal* overlay, ImageOverlayInternal* mask) {
6565
pixel_t* baseY = reinterpret_cast<pixel_t *>(base->GetPtr(PLANAR_Y));
@@ -86,7 +86,7 @@ void OL_DifferenceImage::BlendImageMask(ImageOverlayInternal* base, ImageOverlay
8686
const int maskpitch = maskMode ? (mask->pitch) / sizeof(pixel_t) : 0;
8787

8888
// avoid "uint16*uint16 can't get into int32" overflows
89-
typedef typename std::conditional < sizeof(pixel_t) == 1, int, typename std::conditional < sizeof(pixel_t) == 2, int64_t, float>::type >::type result_t;
89+
using result_t = typename std::conditional<sizeof(pixel_t) == 1, int, int64_t>::type;
9090

9191
int w = base->w();
9292
int h = base->h();
@@ -97,7 +97,7 @@ void OL_DifferenceImage::BlendImageMask(ImageOverlayInternal* base, ImageOverlay
9797
int Y = abs((int)baseY[x] - (int)ovY[x]) + half_pixel_value;
9898
int U = abs((int)baseU[x] - (int)ovU[x]) + half_pixel_value;
9999
int V = abs((int)baseV[x] - (int)ovV[x]) + half_pixel_value;
100-
if(maskMode) {
100+
if constexpr (maskMode) {
101101
result_t mY = maskY[x];
102102
result_t mU = maskU[x];
103103
result_t mV = maskV[x];
@@ -128,7 +128,7 @@ void OL_DifferenceImage::BlendImageMask(ImageOverlayInternal* base, ImageOverlay
128128
ovU += overlaypitch;
129129
ovV += overlaypitch;
130130

131-
if(maskMode) {
131+
if constexpr (maskMode) {
132132
maskY += maskpitch;
133133
maskU += maskpitch;
134134
maskV += maskpitch;
@@ -140,7 +140,7 @@ void OL_DifferenceImage::BlendImageMask(ImageOverlayInternal* base, ImageOverlay
140140
int Y = abs((int)baseY[x] - (int)ovY[x]) + half_pixel_value;
141141
int U = abs((int)baseU[x] - (int)ovU[x]) + half_pixel_value;
142142
int V = abs((int)baseV[x] - (int)ovV[x]) + half_pixel_value;
143-
if(maskMode) {
143+
if constexpr (maskMode) {
144144
result_t mY = (maskY[x] * opacity) >> OPACITY_SHIFT;
145145
result_t mU = (maskU[x] * opacity) >> OPACITY_SHIFT;
146146
result_t mV = (maskV[x] * opacity) >> OPACITY_SHIFT;
@@ -176,7 +176,7 @@ void OL_DifferenceImage::BlendImageMask(ImageOverlayInternal* base, ImageOverlay
176176
ovU += overlaypitch;
177177
ovV += overlaypitch;
178178

179-
if(maskMode) {
179+
if constexpr (maskMode) {
180180
maskY += maskpitch;
181181
maskU += maskpitch;
182182
maskV += maskpitch;

avs_core/filters/overlay/OF_exclusion.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ void OL_ExclusionImage::BlendImageMask(ImageOverlayInternal* base, ImageOverlayI
9898
int Y = (int)(((baseY[x] ^ xor_mask)*ovYx + (ovYx ^ xor_mask)*baseY[x]) >> MASK_CORR_SHIFT);
9999
int U = (int)(((baseU[x] ^ xor_mask)*ovYx + (ovYx ^ xor_mask)*baseU[x]) >> MASK_CORR_SHIFT);
100100
int V = (int)(((baseV[x] ^ xor_mask)*ovYx + (ovYx ^ xor_mask)*baseV[x]) >> MASK_CORR_SHIFT);
101-
if(maskMode) {
101+
if constexpr (maskMode) {
102102
result_t mY = maskY[x];
103103
result_t mU = maskU[x];
104104
result_t mV = maskV[x];
@@ -129,7 +129,7 @@ void OL_ExclusionImage::BlendImageMask(ImageOverlayInternal* base, ImageOverlayI
129129
ovU += overlaypitch;
130130
ovV += overlaypitch;
131131

132-
if(maskMode) {
132+
if constexpr (maskMode) {
133133
maskY += maskpitch;
134134
maskU += maskpitch;
135135
maskV += maskpitch;
@@ -142,7 +142,7 @@ void OL_ExclusionImage::BlendImageMask(ImageOverlayInternal* base, ImageOverlayI
142142
int Y = (int)(((baseY[x] ^ xor_mask)*ovYx + (ovYx^xor_mask)*baseY[x]) >> MASK_CORR_SHIFT);
143143
int U = (int)(((baseU[x] ^ xor_mask)*ovYx + (ovYx^xor_mask)*baseU[x]) >> MASK_CORR_SHIFT);
144144
int V = (int)(((baseV[x] ^ xor_mask)*ovYx + (ovYx^xor_mask)*baseV[x]) >> MASK_CORR_SHIFT);
145-
if(maskMode) {
145+
if constexpr (maskMode) {
146146
result_t mY = (maskY[x] * opacity) >> OPACITY_SHIFT;
147147
result_t mU = (maskU[x] * opacity) >> OPACITY_SHIFT;
148148
result_t mV = (maskV[x] * opacity) >> OPACITY_SHIFT;
@@ -178,7 +178,7 @@ void OL_ExclusionImage::BlendImageMask(ImageOverlayInternal* base, ImageOverlayI
178178
ovU += overlaypitch;
179179
ovV += overlaypitch;
180180

181-
if(maskMode) {
181+
if constexpr (maskMode) {
182182
maskY += maskpitch;
183183
maskU += maskpitch;
184184
maskV += maskpitch;

avs_core/filters/overlay/blend_common.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ template void overlay_blend_c_float<true>(BYTE* p1, const BYTE* p2, const BYTE*
121121
typedef int (OverlayCCompare)(BYTE, BYTE);
122122

123123
template<typename pixel_t, bool darken /* OverlayCCompare<pixel_t> compare*/>
124-
AVS_FORCEINLINE void overlay_darklighten_c(BYTE *p1Y_8, BYTE *p1U_8, BYTE *p1V_8, const BYTE *p2Y_8, const BYTE *p2U_8, const BYTE *p2V_8, int p1_pitch, int p2_pitch, int width, int height) {
124+
static void overlay_darklighten_c(BYTE *p1Y_8, BYTE *p1U_8, BYTE *p1V_8, const BYTE *p2Y_8, const BYTE *p2U_8, const BYTE *p2V_8, int p1_pitch, int p2_pitch, int width, int height) {
125125
pixel_t* p1Y = reinterpret_cast<pixel_t *>(p1Y_8);
126126
pixel_t* p1U = reinterpret_cast<pixel_t *>(p1U_8);
127127
pixel_t* p1V = reinterpret_cast<pixel_t *>(p1V_8);

0 commit comments

Comments
 (0)