...
|
...
|
@@ -73,28 +73,26 @@ static uint32_t pixel_diff(uint32_t x, uint32_t y, const uint32_t *r2y)
|
73
|
73
|
|
74
|
74
|
#define ALPHA_BLEND_32_W(dst, src) \
|
75
|
75
|
dst = ((RED_BLUE_MASK & ((dst & RED_BLUE_MASK) + ((((src & RED_BLUE_MASK) - \
|
76
|
|
- (dst & RED_BLUE_MASK))) >>3))) | (GREEN_MASK & ((dst & GREEN_MASK) + \
|
77
|
|
- ((((src & GREEN_MASK) - (dst & GREEN_MASK))) >>3))))
|
|
76
|
+ (dst & RED_BLUE_MASK))) >> 3))) | (GREEN_MASK & ((dst & GREEN_MASK) + \
|
|
77
|
+ ((((src & GREEN_MASK) - (dst & GREEN_MASK))) >> 3))))
|
78
|
78
|
|
79
|
79
|
#define ALPHA_BLEND_64_W(dst, src) \
|
80
|
80
|
dst = ((RED_BLUE_MASK & ((dst & RED_BLUE_MASK) + ((((src & RED_BLUE_MASK) - \
|
81
|
|
- (dst & RED_BLUE_MASK))) >>2))) | (GREEN_MASK & ((dst & GREEN_MASK) + \
|
82
|
|
- ((((src & GREEN_MASK) - (dst & GREEN_MASK))) >>2))))
|
|
81
|
+ (dst & RED_BLUE_MASK))) >> 2))) | (GREEN_MASK & ((dst & GREEN_MASK) + \
|
|
82
|
+ ((((src & GREEN_MASK) - (dst & GREEN_MASK))) >> 2))))
|
83
|
83
|
|
84
|
84
|
#define ALPHA_BLEND_192_W(dst, src) \
|
85
|
85
|
dst = ((RED_BLUE_MASK & ((dst & RED_BLUE_MASK) + ((((src & RED_BLUE_MASK) - \
|
86
|
|
- (dst & RED_BLUE_MASK)) * 3) >>2))) | (GREEN_MASK & ((dst & GREEN_MASK) + \
|
87
|
|
- ((((src & GREEN_MASK) - (dst & GREEN_MASK)) * 3) >>2))))
|
|
86
|
+ (dst & RED_BLUE_MASK)) * 3) >> 2))) | (GREEN_MASK & ((dst & GREEN_MASK) + \
|
|
87
|
+ ((((src & GREEN_MASK) - (dst & GREEN_MASK)) * 3) >> 2))))
|
88
|
88
|
|
89
|
89
|
#define ALPHA_BLEND_224_W(dst, src) \
|
90
|
90
|
dst = ((RED_BLUE_MASK & ((dst & RED_BLUE_MASK) + ((((src & RED_BLUE_MASK) - \
|
91
|
|
- (dst & RED_BLUE_MASK)) * 7) >>3))) | (GREEN_MASK & ((dst & GREEN_MASK) + \
|
92
|
|
- ((((src & GREEN_MASK) - (dst & GREEN_MASK)) * 7) >>3))))
|
|
91
|
+ (dst & RED_BLUE_MASK)) * 7) >> 3))) | (GREEN_MASK & ((dst & GREEN_MASK) + \
|
|
92
|
+ ((((src & GREEN_MASK) - (dst & GREEN_MASK)) * 7) >> 3))))
|
93
|
93
|
|
94
|
94
|
#define df(A, B) pixel_diff(A, B, r2y)
|
95
|
|
-
|
96
|
|
-#define eq(A, B)\
|
97
|
|
- (df(A, B) < 155)\
|
|
95
|
+#define eq(A, B) (df(A, B) < 155)
|
98
|
96
|
|
99
|
97
|
#define INIT_SRC_DST_POINTERS(level) \
|
100
|
98
|
uint32_t *E = (uint32_t *)(output->data[0] + y * output->linesize[0] * (level)); \
|
...
|
...
|
@@ -157,11 +155,11 @@ static uint32_t pixel_diff(uint32_t x, uint32_t y, const uint32_t *r2y)
|
157
|
157
|
if (e < i && (!eq(PF,PB) && !eq(PH,PD) || eq(PE,PI) \
|
158
|
158
|
&& (!eq(PF,I4) && !eq(PH,I5)) \
|
159
|
159
|
|| eq(PE,PG) || eq(PE,PC))) { \
|
160
|
|
- const unsigned ke = df(PF,PG); \
|
161
|
|
- const unsigned ki = df(PH,PC); \
|
162
|
|
- const int left = ke<<1 <= ki && PE != PG && PD != PG; \
|
163
|
|
- const int up = ke >= ki<<1 && PE != PC && PB != PC; \
|
164
|
|
- const unsigned px = df(PE,PF) <= df(PE,PH) ? PF : PH; \
|
|
160
|
+ const unsigned ke = df(PF,PG); \
|
|
161
|
+ const unsigned ki = df(PH,PC); \
|
|
162
|
+ const int left = ke<<1 <= ki && PE != PG && PD != PG; \
|
|
163
|
+ const int up = ke >= ki<<1 && PE != PC && PB != PC; \
|
|
164
|
+ const unsigned px = df(PE,PF) <= df(PE,PH) ? PF : PH; \
|
165
|
165
|
if (left && up) { \
|
166
|
166
|
ALPHA_BLEND_224_W(E[N3], px); \
|
167
|
167
|
ALPHA_BLEND_64_W( E[N2], px); \
|
...
|
...
|
@@ -218,11 +216,11 @@ static void xbr2x(AVFrame * input, AVFrame * output, const uint32_t * r2y)
|
218
|
218
|
if (e < i && (!eq(PF,PB) && !eq(PF,PC) || !eq(PH,PD) && !eq(PH,PG) || eq(PE,PI) \
|
219
|
219
|
&& (!eq(PF,F4) && !eq(PF,I4) || !eq(PH,H5) && !eq(PH,I5)) \
|
220
|
220
|
|| eq(PE,PG) || eq(PE,PC))) { \
|
221
|
|
- const unsigned ke = df(PF,PG); \
|
222
|
|
- const unsigned ki = df(PH,PC); \
|
223
|
|
- const int left = ke<<1 <= ki && PE != PG && PD != PG; \
|
224
|
|
- const int up = ke >= ki<<1 && PE != PC && PB != PC; \
|
225
|
|
- const unsigned px = df(PE,PF) <= df(PE,PH) ? PF : PH; \
|
|
221
|
+ const unsigned ke = df(PF,PG); \
|
|
222
|
+ const unsigned ki = df(PH,PC); \
|
|
223
|
+ const int left = ke<<1 <= ki && PE != PG && PD != PG; \
|
|
224
|
+ const int up = ke >= ki<<1 && PE != PC && PB != PC; \
|
|
225
|
+ const unsigned px = df(PE,PF) <= df(PE,PH) ? PF : PH; \
|
226
|
226
|
if (left && up) { \
|
227
|
227
|
ALPHA_BLEND_192_W(E[N7], px); \
|
228
|
228
|
ALPHA_BLEND_64_W( E[N6], px); \
|
...
|
...
|
@@ -290,11 +288,11 @@ static void xbr3x(AVFrame *input, AVFrame *output, const uint32_t *r2y)
|
290
|
290
|
if (e < i && (!eq(PF,PB) && !eq(PH,PD) || eq(PE,PI) \
|
291
|
291
|
&& (!eq(PF,I4) && !eq(PH,I5)) \
|
292
|
292
|
|| eq(PE,PG) || eq(PE,PC))) { \
|
293
|
|
- const unsigned ke = df(PF,PG); \
|
294
|
|
- const unsigned ki = df(PH,PC); \
|
295
|
|
- const int left = ke<<1 <= ki && PE != PG && PD != PG; \
|
296
|
|
- const int up = ke >= ki<<1 && PE != PC && PB != PC; \
|
297
|
|
- const unsigned px = df(PE,PF) <= df(PE,PH) ? PF : PH; \
|
|
293
|
+ const unsigned ke = df(PF,PG); \
|
|
294
|
+ const unsigned ki = df(PH,PC); \
|
|
295
|
+ const int left = ke<<1 <= ki && PE != PG && PD != PG; \
|
|
296
|
+ const int up = ke >= ki<<1 && PE != PC && PB != PC; \
|
|
297
|
+ const unsigned px = df(PE,PF) <= df(PE,PH) ? PF : PH; \
|
298
|
298
|
if (left && up) { \
|
299
|
299
|
ALPHA_BLEND_192_W(E[N13], px); \
|
300
|
300
|
ALPHA_BLEND_64_W( E[N12], px); \
|