swscale: Use av_clip_uintp2()
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 21 Feb 2015 13:49:17 +0000 (14:49 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 21 Feb 2015 13:49:17 +0000 (14:49 +0100)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libswscale/output.c
libswscale/swscale.c

index eee6b48..88fa2b5 100644 (file)
@@ -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;
index 16a31ce..6e47a92 100644 (file)
@@ -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) {