47 #define area4 (8 + 8 + 1)
48 #define area5 (8 + 8 + 1 + 8)
49 #define area6 (8 + 8 + 1 + 16)
67 uint8_t *restrict
dst,
77 if ((edges & 3) == 3) {
78 *psum = 0x80 * (8 + 1 + 8 + 2);
80 memset(
dst, 0x80, 16 + 1 + 16 + 8);
93 for (
i = 7;
i >= 0;
i--) {
99 min_pix =
FFMIN(min_pix,
c);
100 max_pix =
FFMAX(max_pix,
c);
109 for (
i = 0;
i < 8;
i++) {
112 min_pix =
FFMIN(min_pix,
c);
113 max_pix =
FFMAX(max_pix,
c);
126 int avg = (sum + 4) >> 3;
141 *
range = max_pix - min_pix;
147 640, 640, 669, 480, 708, 354, 748, 257,
148 792, 198, 760, 143, 808, 101, 772, 72,
149 480, 669, 537, 537, 598, 416, 661, 316,
150 719, 250, 707, 185, 768, 134, 745, 97,
151 354, 708, 416, 598, 488, 488, 564, 388,
152 634, 317, 642, 241, 716, 179, 706, 132,
153 257, 748, 316, 661, 388, 564, 469, 469,
154 543, 395, 571, 311, 655, 238, 660, 180,
155 198, 792, 250, 719, 317, 634, 395, 543,
156 469, 469, 507, 380, 597, 299, 616, 231,
157 161, 855, 206, 788, 266, 710, 340, 623,
158 411, 548, 455, 455, 548, 366, 576, 288,
159 122, 972, 159, 914, 211, 842, 276, 758,
160 341, 682, 389, 584, 483, 483, 520, 390,
161 110, 1172, 144, 1107, 193, 1028, 254, 932,
162 317, 846, 366, 731, 458, 611, 499, 499,
171 uint16_t left_sum[2][8] = { { 0 } };
172 uint16_t top_sum[2][8] = { { 0 } };
174 for (
i = 0;
i < 8;
i++) {
176 for (j = 0; j < 8; j++) {
178 left_sum[p & 1][j] +=
a >> (p >> 1);
182 for (
i = 0;
i < 8;
i++) {
184 for (j = 0; j < 8; j++) {
186 top_sum[p & 1][j] +=
a >> (p >> 1);
189 for (;
i < 10;
i++) {
191 for (j = 5; j < 8; j++) {
193 top_sum[p & 1][j] +=
a >> (p >> 1);
196 for (;
i < 12;
i++) {
198 for (j = 7; j < 8; j++) {
200 top_sum[p & 1][j] +=
a >> (p >> 1);
204 for (
i = 0;
i < 8;
i++) {
205 top_sum[0][
i] += (top_sum[1][
i] * 181 + 128) >> 8;
206 left_sum[0][
i] += (left_sum[1][
i] * 181 + 128) >> 8;
208 for (y = 0; y < 8; y++) {
209 for (x = 0; x < 8; x++)
221 for (y = 0; y < 8; y++) {
222 for (x = 0; x < 8; x++)
230 for (
int y = 0; y < 8; y++) {
238 for (
int y = 0; y < 8; y++) {
248 for (y = 0; y < 8; y++) {
249 for (x = 0; x < 8; x++)
259 for (y = 0; y < 8; y++) {
260 for (x = 0; x < 8; x++) {
272 for (
int y = 0; y < 8; y++) {
282 for (y = 0; y < 8; y++) {
283 for (x = 0; x < 8; x++) {
297 for (y = 0; y < 8; y++) {
298 for (x = 0; x < 8; x++)
308 for (y = 0; y < 8; y++) {
309 for (x = 0; x < 8; x++)
319 for (y = 0; y < 8; y++) {
320 for (x = 0; x < 8; x++)
330 for (y = 0; y < 8; y++) {
331 for (x = 0; x < 8; x++)
338 const ptrdiff_t b_stride,
int quant)
341 int p0, p1, p2, p3, p4, p5, p6, p7, p8, p9;
342 int ql = (
quant + 10) >> 3;
344 for (
i = 0;
i < 8;
i++, ptr += b_stride) {
345 p0 = ptr[-5 * a_stride];
346 p1 = ptr[-4 * a_stride];
347 p2 = ptr[-3 * a_stride];
348 p3 = ptr[-2 * a_stride];
349 p4 = ptr[-1 * a_stride];
351 p6 = ptr[1 * a_stride];
352 p7 = ptr[2 * a_stride];
353 p8 = ptr[3 * a_stride];
354 p9 = ptr[4 * a_stride];
356 t = (
FFABS(p1 - p2) <= ql) +
357 (
FFABS(p2 - p3) <= ql) +
358 (
FFABS(p3 - p4) <= ql) +
359 (
FFABS(p4 - p5) <= ql);
363 t += (
FFABS(p5 - p6) <= ql) +
364 (
FFABS(p6 - p7) <= ql) +
365 (
FFABS(p7 - p8) <= ql) +
366 (
FFABS(p8 - p9) <= ql) +
367 (
FFABS(p0 - p1) <= ql);
388 ptr[-2 * a_stride] = (4 * p2 + 3 * p3 + 1 * p7 + 4) >> 3;
389 ptr[-1 * a_stride] = (3 * p2 + 3 * p4 + 2 * p7 + 4) >> 3;
390 ptr[0] = (2 * p2 + 3 * p5 + 3 * p7 + 4) >> 3;
391 ptr[1 * a_stride] = (1 * p2 + 3 * p6 + 4 * p7 + 4) >> 3;
401 x0 = (2 * p3 - 5 * p4 + 5 * p5 - 2 * p6 + 4) >> 3;
403 x1 = (2 * p1 - 5 * p2 + 5 * p3 - 2 * p4 + 4) >> 3;
404 x2 = (2 * p5 - 5 * p6 + 5 * p7 - 2 * p8 + 4) >> 3;
409 if (x > 0 && (m ^ x0) < 0) {
413 m = (m ^ sign) - sign;
421 x = (x ^ sign) - sign;
423 ptr[-1 * a_stride] -= x;