[FFmpeg-cvslog] swscale: Use av_clip_uintp2()

Michael Niedermayer git at videolan.org
Sat Feb 21 14:59:10 CET 2015


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Sat Feb 21 14:49:17 2015 +0100| [03bffb68f6df8f4d730542076f8ede8e0cb2495c] | committer: Michael Niedermayer

swscale: Use av_clip_uintp2()

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=03bffb68f6df8f4d730542076f8ede8e0cb2495c
---

 libswscale/output.c  |   24 ++++++++++++------------
 libswscale/swscale.c |   12 ++++++------
 2 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/libswscale/output.c b/libswscale/output.c
index eee6b48..88fa2b5 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 16a31ce..6e47a92 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) {



More information about the ffmpeg-cvslog mailing list