...
|
...
|
@@ -74,13 +74,13 @@ static uint32_t pixel_diff(uint32_t x, uint32_t y, const uint32_t *r2y)
|
74
|
74
|
abs((yuv1 & VMASK) - (yuv2 & VMASK));
|
75
|
75
|
}
|
76
|
76
|
|
77
|
|
-#define ALPHA_BLEND_128_W(dst, src) dst = ((src & LB_MASK) >> 1) + ((dst & LB_MASK) >> 1)
|
|
77
|
+#define ALPHA_BLEND_128_W(a, b) ((((a) & LB_MASK) >> 1) + (((b) & LB_MASK) >> 1))
|
78
|
78
|
#define ALPHA_BLEND_BASE(a, b, m, s) ( (RED_BLUE_MASK & (((a) & RED_BLUE_MASK) + (((((b) & RED_BLUE_MASK) - ((a) & RED_BLUE_MASK)) * (m)) >> (s)))) \
|
79
|
79
|
| (GREEN_MASK & (((a) & GREEN_MASK) + (((((b) & GREEN_MASK) - ((a) & GREEN_MASK)) * (m)) >> (s)))))
|
80
|
|
-#define ALPHA_BLEND_32_W(dst, src) dst = ALPHA_BLEND_BASE(dst, src, 1, 3)
|
81
|
|
-#define ALPHA_BLEND_64_W(dst, src) dst = ALPHA_BLEND_BASE(dst, src, 1, 2)
|
82
|
|
-#define ALPHA_BLEND_192_W(dst, src) dst = ALPHA_BLEND_BASE(dst, src, 3, 2)
|
83
|
|
-#define ALPHA_BLEND_224_W(dst, src) dst = ALPHA_BLEND_BASE(dst, src, 7, 3)
|
|
80
|
+#define ALPHA_BLEND_32_W(a, b) ALPHA_BLEND_BASE(a, b, 1, 3)
|
|
81
|
+#define ALPHA_BLEND_64_W(a, b) ALPHA_BLEND_BASE(a, b, 1, 2)
|
|
82
|
+#define ALPHA_BLEND_192_W(a, b) ALPHA_BLEND_BASE(a, b, 3, 2)
|
|
83
|
+#define ALPHA_BLEND_224_W(a, b) ALPHA_BLEND_BASE(a, b, 7, 3)
|
84
|
84
|
|
85
|
85
|
#define df(A, B) pixel_diff(A, B, r2y)
|
86
|
86
|
#define eq(A, B) (df(A, B) < 155)
|
...
|
...
|
@@ -99,20 +99,20 @@ static uint32_t pixel_diff(uint32_t x, uint32_t y, const uint32_t *r2y)
|
99
|
99
|
const int up = ke >= ki<<1 && PE != PC && PB != PC; \
|
100
|
100
|
const unsigned px = df(PE,PF) <= df(PE,PH) ? PF : PH; \
|
101
|
101
|
if (left && up) { \
|
102
|
|
- ALPHA_BLEND_224_W(E[N3], px); \
|
103
|
|
- ALPHA_BLEND_64_W( E[N2], px); \
|
|
102
|
+ E[N3] = ALPHA_BLEND_224_W(E[N3], px); \
|
|
103
|
+ E[N2] = ALPHA_BLEND_64_W( E[N2], px); \
|
104
|
104
|
E[N1] = E[N2]; \
|
105
|
105
|
} else if (left) { \
|
106
|
|
- ALPHA_BLEND_192_W(E[N3], px); \
|
107
|
|
- ALPHA_BLEND_64_W( E[N2], px); \
|
|
106
|
+ E[N3] = ALPHA_BLEND_192_W(E[N3], px); \
|
|
107
|
+ E[N2] = ALPHA_BLEND_64_W( E[N2], px); \
|
108
|
108
|
} else if (up) { \
|
109
|
|
- ALPHA_BLEND_192_W(E[N3], px); \
|
110
|
|
- ALPHA_BLEND_64_W( E[N1], px); \
|
|
109
|
+ E[N3] = ALPHA_BLEND_192_W(E[N3], px); \
|
|
110
|
+ E[N1] = ALPHA_BLEND_64_W( E[N1], px); \
|
111
|
111
|
} else { /* diagonal */ \
|
112
|
|
- ALPHA_BLEND_128_W(E[N3], px); \
|
|
112
|
+ E[N3] = ALPHA_BLEND_128_W(E[N3], px); \
|
113
|
113
|
} \
|
114
|
114
|
} else if (e <= i) { \
|
115
|
|
- ALPHA_BLEND_128_W( E[N3], ((df(PE,PF) <= df(PE,PH)) ? PF : PH)); \
|
|
115
|
+ E[N3] = ALPHA_BLEND_128_W(E[N3], ((df(PE,PF) <= df(PE,PH)) ? PF : PH)); \
|
116
|
116
|
} \
|
117
|
117
|
} \
|
118
|
118
|
} while (0)
|
...
|
...
|
@@ -131,28 +131,28 @@ static uint32_t pixel_diff(uint32_t x, uint32_t y, const uint32_t *r2y)
|
131
|
131
|
const int up = ke >= ki<<1 && PE != PC && PB != PC; \
|
132
|
132
|
const unsigned px = df(PE,PF) <= df(PE,PH) ? PF : PH; \
|
133
|
133
|
if (left && up) { \
|
134
|
|
- ALPHA_BLEND_192_W(E[N7], px); \
|
135
|
|
- ALPHA_BLEND_64_W( E[N6], px); \
|
|
134
|
+ E[N7] = ALPHA_BLEND_192_W(E[N7], px); \
|
|
135
|
+ E[N6] = ALPHA_BLEND_64_W( E[N6], px); \
|
136
|
136
|
E[N5] = E[N7]; \
|
137
|
137
|
E[N2] = E[N6]; \
|
138
|
138
|
E[N8] = px; \
|
139
|
139
|
} else if (left) { \
|
140
|
|
- ALPHA_BLEND_192_W(E[N7], px); \
|
141
|
|
- ALPHA_BLEND_64_W( E[N5], px); \
|
142
|
|
- ALPHA_BLEND_64_W( E[N6], px); \
|
|
140
|
+ E[N7] = ALPHA_BLEND_192_W(E[N7], px); \
|
|
141
|
+ E[N5] = ALPHA_BLEND_64_W( E[N5], px); \
|
|
142
|
+ E[N6] = ALPHA_BLEND_64_W( E[N6], px); \
|
143
|
143
|
E[N8] = px; \
|
144
|
144
|
} else if (up) { \
|
145
|
|
- ALPHA_BLEND_192_W(E[N5], px); \
|
146
|
|
- ALPHA_BLEND_64_W( E[N7], px); \
|
147
|
|
- ALPHA_BLEND_64_W( E[N2], px); \
|
|
145
|
+ E[N5] = ALPHA_BLEND_192_W(E[N5], px); \
|
|
146
|
+ E[N7] = ALPHA_BLEND_64_W( E[N7], px); \
|
|
147
|
+ E[N2] = ALPHA_BLEND_64_W( E[N2], px); \
|
148
|
148
|
E[N8] = px; \
|
149
|
149
|
} else { /* diagonal */ \
|
150
|
|
- ALPHA_BLEND_224_W(E[N8], px); \
|
151
|
|
- ALPHA_BLEND_32_W( E[N5], px); \
|
152
|
|
- ALPHA_BLEND_32_W( E[N7], px); \
|
|
150
|
+ E[N8] = ALPHA_BLEND_224_W(E[N8], px); \
|
|
151
|
+ E[N5] = ALPHA_BLEND_32_W( E[N5], px); \
|
|
152
|
+ E[N7] = ALPHA_BLEND_32_W( E[N7], px); \
|
153
|
153
|
} \
|
154
|
154
|
} else if (e <= i) { \
|
155
|
|
- ALPHA_BLEND_128_W(E[N8], ((df(PE,PF) <= df(PE,PH)) ? PF : PH)); \
|
|
155
|
+ E[N8] = ALPHA_BLEND_128_W(E[N8], ((df(PE,PF) <= df(PE,PH)) ? PF : PH)); \
|
156
|
156
|
} \
|
157
|
157
|
} \
|
158
|
158
|
} while (0)
|
...
|
...
|
@@ -171,32 +171,32 @@ static uint32_t pixel_diff(uint32_t x, uint32_t y, const uint32_t *r2y)
|
171
|
171
|
const int up = ke >= ki<<1 && PE != PC && PB != PC; \
|
172
|
172
|
const unsigned px = df(PE,PF) <= df(PE,PH) ? PF : PH; \
|
173
|
173
|
if (left && up) { \
|
174
|
|
- ALPHA_BLEND_192_W(E[N13], px); \
|
175
|
|
- ALPHA_BLEND_64_W( E[N12], px); \
|
|
174
|
+ E[N13] = ALPHA_BLEND_192_W(E[N13], px); \
|
|
175
|
+ E[N12] = ALPHA_BLEND_64_W( E[N12], px); \
|
176
|
176
|
E[N15] = E[N14] = E[N11] = px; \
|
177
|
177
|
E[N10] = E[N3] = E[N12]; \
|
178
|
178
|
E[N7] = E[N13]; \
|
179
|
179
|
} else if (left) { \
|
180
|
|
- ALPHA_BLEND_192_W(E[N11], px); \
|
181
|
|
- ALPHA_BLEND_192_W(E[N13], px); \
|
182
|
|
- ALPHA_BLEND_64_W( E[N10], px); \
|
183
|
|
- ALPHA_BLEND_64_W( E[N12], px); \
|
|
180
|
+ E[N11] = ALPHA_BLEND_192_W(E[N11], px); \
|
|
181
|
+ E[N13] = ALPHA_BLEND_192_W(E[N13], px); \
|
|
182
|
+ E[N10] = ALPHA_BLEND_64_W( E[N10], px); \
|
|
183
|
+ E[N12] = ALPHA_BLEND_64_W( E[N12], px); \
|
184
|
184
|
E[N14] = px; \
|
185
|
185
|
E[N15] = px; \
|
186
|
186
|
} else if (up) { \
|
187
|
|
- ALPHA_BLEND_192_W(E[N14], px); \
|
188
|
|
- ALPHA_BLEND_192_W(E[N7 ], px); \
|
189
|
|
- ALPHA_BLEND_64_W( E[N10], px); \
|
190
|
|
- ALPHA_BLEND_64_W( E[N3 ], px); \
|
|
187
|
+ E[N14] = ALPHA_BLEND_192_W(E[N14], px); \
|
|
188
|
+ E[N7 ] = ALPHA_BLEND_192_W(E[N7 ], px); \
|
|
189
|
+ E[N10] = ALPHA_BLEND_64_W( E[N10], px); \
|
|
190
|
+ E[N3 ] = ALPHA_BLEND_64_W( E[N3 ], px); \
|
191
|
191
|
E[N11] = px; \
|
192
|
192
|
E[N15] = px; \
|
193
|
193
|
} else { /* diagonal */ \
|
194
|
|
- ALPHA_BLEND_128_W(E[N11], px); \
|
195
|
|
- ALPHA_BLEND_128_W(E[N14], px); \
|
|
194
|
+ E[N11] = ALPHA_BLEND_128_W(E[N11], px); \
|
|
195
|
+ E[N14] = ALPHA_BLEND_128_W(E[N14], px); \
|
196
|
196
|
E[N15] = px; \
|
197
|
197
|
} \
|
198
|
198
|
} else if (e <= i) { \
|
199
|
|
- ALPHA_BLEND_128_W( E[N15], ((df(PE,PF) <= df(PE,PH)) ? PF : PH)); \
|
|
199
|
+ E[N15] = ALPHA_BLEND_128_W(E[N15], ((df(PE,PF) <= df(PE,PH)) ? PF : PH)); \
|
200
|
200
|
} \
|
201
|
201
|
} \
|
202
|
202
|
} while (0)
|