diff --git a/libswscale/output.c b/libswscale/output.c index eee6b4874b..88fa2b57ae 100644 --- a/libswscale/output.c +++ b/libswscale/output.c @@ -1549,16 +1549,16 @@ static av_always_inline void yuv2rgb_write_full(SwsContext *c, r = (((R >> 19) + A_DITHER(i,y) -96)>>8); g = (((G >> 19) + A_DITHER(i + 17,y) - 96)>>8); b = (((B >> 20) + A_DITHER(i + 17*2,y) -96)>>8); - r = av_clip(r, 0, 7); - g = av_clip(g, 0, 7); - b = av_clip(b, 0, 3); + r = av_clip_uintp2(r, 3); + g = av_clip_uintp2(g, 3); + b = av_clip_uintp2(b, 2); } else { r = (((R >> 21) + A_DITHER(i,y)-256)>>8); g = (((G >> 19) + A_DITHER(i + 17,y)-256)>>8); b = (((B >> 21) + A_DITHER(i + 17*2,y)-256)>>8); - r = av_clip(r, 0, 1); - g = av_clip(g, 0, 3); - b = av_clip(b, 0, 1); + r = av_clip_uintp2(r, 1); + g = av_clip_uintp2(g, 2); + b = av_clip_uintp2(b, 1); } break; case SWS_DITHER_X_DITHER: @@ -1568,16 +1568,16 @@ static av_always_inline void yuv2rgb_write_full(SwsContext *c, r = (((R >> 19) + X_DITHER(i,y) - 96)>>8); g = (((G >> 19) + X_DITHER(i + 17,y) - 96)>>8); b = (((B >> 20) + X_DITHER(i + 17*2,y) - 96)>>8); - r = av_clip(r, 0, 7); - g = av_clip(g, 0, 7); - b = av_clip(b, 0, 3); + r = av_clip_uintp2(r, 3); + g = av_clip_uintp2(g, 3); + b = av_clip_uintp2(b, 2); } else { r = (((R >> 21) + X_DITHER(i,y)-256)>>8); g = (((G >> 19) + X_DITHER(i + 17,y)-256)>>8); b = (((B >> 21) + X_DITHER(i + 17*2,y)-256)>>8); - r = av_clip(r, 0, 1); - g = av_clip(g, 0, 3); - b = av_clip(b, 0, 1); + r = av_clip_uintp2(r, 1); + g = av_clip_uintp2(g, 2); + b = av_clip_uintp2(b, 1); } break; diff --git a/libswscale/swscale.c b/libswscale/swscale.c index 16a31cee40..6e47a92ac7 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -805,9 +805,9 @@ static void xyz12Torgb48(struct SwsContext *c, uint16_t *dst, c->xyz2rgb_matrix[2][2] * z >> 12; // limit values to 12-bit depth - r = av_clip(r, 0, 4095); - g = av_clip(g, 0, 4095); - b = av_clip(b, 0, 4095); + r = av_clip_uintp2(r, 12); + g = av_clip_uintp2(g, 12); + b = av_clip_uintp2(b, 12); // convert from sRGBlinear to RGB and scale from 12bit to 16bit if (desc->flags & AV_PIX_FMT_FLAG_BE) { @@ -861,9 +861,9 @@ static void rgb48Toxyz12(struct SwsContext *c, uint16_t *dst, c->rgb2xyz_matrix[2][2] * b >> 12; // limit values to 12-bit depth - x = av_clip(x, 0, 4095); - y = av_clip(y, 0, 4095); - z = av_clip(z, 0, 4095); + x = av_clip_uintp2(x, 12); + y = av_clip_uintp2(y, 12); + z = av_clip_uintp2(z, 12); // convert from XYZlinear to X'Y'Z' and scale from 12bit to 16bit if (desc->flags & AV_PIX_FMT_FLAG_BE) {