Unified · Split
| @@ -351,12 +351,12 @@ yuv2mono_X_c_template(SwsContext *c, const int16_t *lumFilter, · 350 unmodified lines | ||
| 351 | 351 | Y2 = av_clip_uint8(Y2); |
| 352 | 352 | } |
| 353 | 353 | if (c->flags & SWS_ERROR_DIFFUSION) { |
| 354 | − Y1 += (7*err + 1*c->dither_error[0][i] + 5*c->dither_error[0][i+1] + 3*c->dither_error[0][i+2])>>4; | |
| 354 | + Y1 += (7*err + 1*c->dither_error[0][i] + 5*c->dither_error[0][i+1] + 3*c->dither_error[0][i+2] + 8 - 256)>>4; | |
| 355 | 355 | c->dither_error[0][i] = err; |
| 356 | 356 | acc = 2*acc + (Y1 >= 128); |
| 357 | 357 | Y1 -= 220*(acc&1); |
| 358 | 358 | |
| 359 | − err = Y2 + ((7*Y1 + 1*c->dither_error[0][i+1] + 5*c->dither_error[0][i+2] + 3*c->dither_error[0][i+3])>>4); | |
| 359 | + err = Y2 + ((7*Y1 + 1*c->dither_error[0][i+1] + 5*c->dither_error[0][i+2] + 3*c->dither_error[0][i+3] + 8 - 256)>>4); | |
| 360 | 360 | c->dither_error[0][i+1] = Y1; |
| 361 | 361 | acc = 2*acc + (err >= 128); |
| 362 | 362 | err -= 220*(acc&1); |
| @@ -394,13 +394,13 @@ yuv2mono_2_c_template(SwsContext *c, const int16_t *buf[2], · 31 unmodified lines | ||
| 394 | 394 | int Y; |
| 395 | 395 | |
| 396 | 396 | Y = (buf0[i + 0] * yalpha1 + buf1[i + 0] * yalpha) >> 19; |
| 397 | − Y += (7*err + 1*c->dither_error[0][i] + 5*c->dither_error[0][i+1] + 3*c->dither_error[0][i+2])>>4; | |
| 397 | + Y += (7*err + 1*c->dither_error[0][i] + 5*c->dither_error[0][i+1] + 3*c->dither_error[0][i+2] + 8 - 256)>>4; | |
| 398 | 398 | c->dither_error[0][i] = err; |
| 399 | 399 | acc = 2*acc + (Y >= 128); |
| 400 | 400 | Y -= 220*(acc&1); |
| 401 | 401 | |
| 402 | 402 | err = (buf0[i + 1] * yalpha1 + buf1[i + 1] * yalpha) >> 19; |
| 403 | − err += (7*Y + 1*c->dither_error[0][i+1] + 5*c->dither_error[0][i+2] + 3*c->dither_error[0][i+3])>>4; | |
| 403 | + err += (7*Y + 1*c->dither_error[0][i+1] + 5*c->dither_error[0][i+2] + 3*c->dither_error[0][i+3] + 8 - 256)>>4; | |
| 404 | 404 | c->dither_error[0][i+1] = Y; |
| 405 | 405 | acc = 2*acc + (err >= 128); |
| 406 | 406 | err -= 220*(acc&1); |
| @@ -451,13 +451,13 @@ yuv2mono_1_c_template(SwsContext *c, const int16_t *buf0, · 44 unmodified lines | ||
| 451 | 451 | int Y; |
| 452 | 452 | |
| 453 | 453 | Y = ((buf0[i + 0] + 64) >> 7); |
| 454 | − Y += (7*err + 1*c->dither_error[0][i] + 5*c->dither_error[0][i+1] + 3*c->dither_error[0][i+2])>>4; | |
| 454 | + Y += (7*err + 1*c->dither_error[0][i] + 5*c->dither_error[0][i+1] + 3*c->dither_error[0][i+2] + 8 - 256)>>4; | |
| 455 | 455 | c->dither_error[0][i] = err; |
| 456 | 456 | acc = 2*acc + (Y >= 128); |
| 457 | 457 | Y -= 220*(acc&1); |
| 458 | 458 | |
| 459 | 459 | err = ((buf0[i + 1] + 64) >> 7); |
| 460 | − err += (7*Y + 1*c->dither_error[0][i+1] + 5*c->dither_error[0][i+2] + 3*c->dither_error[0][i+3])>>4; | |
| 460 | + err += (7*Y + 1*c->dither_error[0][i+1] + 5*c->dither_error[0][i+2] + 3*c->dither_error[0][i+3] + 8 - 256)>>4; | |
| 461 | 461 | c->dither_error[0][i+1] = Y; |
| 462 | 462 | acc = 2*acc + (err >= 128); |
| 463 | 463 | err -= 220*(acc&1); |