]> git.sesse.net Git - ffmpeg/blobdiff - libswscale/output.c
Merge remote-tracking branch 'qatar/master'
[ffmpeg] / libswscale / output.c
index 6b17c922baa06aab8b4bb23e005702bb5d307b7b..c8365219f8288a4d8297b3c0c900e14a1355540c 100644 (file)
@@ -356,7 +356,7 @@ yuv2mono_2_c_template(SwsContext *c, const int16_t *buf[2],
 {
     const int16_t *buf0  = buf[0],  *buf1  = buf[1];
     const uint8_t * const d128 = dither_8x8_220[y & 7];
-    int  yalpha1 = 4095 - yalpha;
+    int  yalpha1 = 4096 - yalpha;
     int i;
 
     for (i = 0; i < dstW; i += 8) {
@@ -469,7 +469,7 @@ yuv2422_X_c_template(SwsContext *c, const int16_t *lumFilter,
 {
     int i;
 
-    for (i = 0; i < (dstW >> 1); i++) {
+    for (i = 0; i < ((dstW + 1) >> 1); i++) {
         int j;
         int Y1 = 1 << 18;
         int Y2 = 1 << 18;
@@ -508,11 +508,11 @@ yuv2422_2_c_template(SwsContext *c, const int16_t *buf[2],
     const int16_t *buf0  = buf[0],  *buf1  = buf[1],
                   *ubuf0 = ubuf[0], *ubuf1 = ubuf[1],
                   *vbuf0 = vbuf[0], *vbuf1 = vbuf[1];
-    int  yalpha1 = 4095 - yalpha;
-    int uvalpha1 = 4095 - uvalpha;
+    int  yalpha1 = 4096 - yalpha;
+    int uvalpha1 = 4096 - uvalpha;
     int i;
 
-    for (i = 0; i < (dstW >> 1); i++) {
+    for (i = 0; i < ((dstW + 1) >> 1); i++) {
         int Y1 = (buf0[i * 2]     * yalpha1  + buf1[i * 2]     * yalpha)  >> 19;
         int Y2 = (buf0[i * 2 + 1] * yalpha1  + buf1[i * 2 + 1] * yalpha)  >> 19;
         int U  = (ubuf0[i]        * uvalpha1 + ubuf1[i]        * uvalpha) >> 19;
@@ -539,7 +539,7 @@ yuv2422_1_c_template(SwsContext *c, const int16_t *buf0,
     int i;
 
     if (uvalpha < 2048) {
-        for (i = 0; i < (dstW >> 1); i++) {
+        for (i = 0; i < ((dstW + 1) >> 1); i++) {
             int Y1 = (buf0[i * 2    ]+64) >> 7;
             int Y2 = (buf0[i * 2 + 1]+64) >> 7;
             int U  = (ubuf0[i]       +64) >> 7;
@@ -561,7 +561,7 @@ yuv2422_1_c_template(SwsContext *c, const int16_t *buf0,
         }
     } else {
         const int16_t *ubuf1 = ubuf[1], *vbuf1 = vbuf[1];
-        for (i = 0; i < (dstW >> 1); i++) {
+        for (i = 0; i < ((dstW + 1) >> 1); i++) {
             int Y1 = (buf0[i * 2    ]    + 64) >> 7;
             int Y2 = (buf0[i * 2 + 1]    + 64) >> 7;
             int U  = (ubuf0[i] + ubuf1[i]+128) >> 8;
@@ -608,7 +608,7 @@ yuv2rgb48_X_c_template(SwsContext *c, const int16_t *lumFilter,
 {
     int i;
 
-    for (i = 0; i < (dstW >> 1); i++) {
+    for (i = 0; i < ((dstW + 1) >> 1); i++) {
         int j;
         int Y1 = -0x40000000;
         int Y2 = -0x40000000;
@@ -667,11 +667,11 @@ yuv2rgb48_2_c_template(SwsContext *c, const int32_t *buf[2],
     const int32_t *buf0  = buf[0],  *buf1  = buf[1],
                   *ubuf0 = ubuf[0], *ubuf1 = ubuf[1],
                   *vbuf0 = vbuf[0], *vbuf1 = vbuf[1];
-    int  yalpha1 = 4095 - yalpha;
-    int uvalpha1 = 4095 - uvalpha;
+    int  yalpha1 = 4096 - yalpha;
+    int uvalpha1 = 4096 - uvalpha;
     int i;
 
-    for (i = 0; i < (dstW >> 1); i++) {
+    for (i = 0; i < ((dstW + 1) >> 1); i++) {
         int Y1 = (buf0[i * 2]     * yalpha1  + buf1[i * 2]     * yalpha) >> 14;
         int Y2 = (buf0[i * 2 + 1] * yalpha1  + buf1[i * 2 + 1] * yalpha) >> 14;
         int U  = (ubuf0[i]        * uvalpha1 + ubuf1[i]        * uvalpha + (-128 << 23)) >> 14;
@@ -709,7 +709,7 @@ yuv2rgb48_1_c_template(SwsContext *c, const int32_t *buf0,
     int i;
 
     if (uvalpha < 2048) {
-        for (i = 0; i < (dstW >> 1); i++) {
+        for (i = 0; i < ((dstW + 1) >> 1); i++) {
             int Y1 = (buf0[i * 2]    ) >> 2;
             int Y2 = (buf0[i * 2 + 1]) >> 2;
             int U  = (ubuf0[i] + (-128 << 11)) >> 2;
@@ -737,7 +737,7 @@ yuv2rgb48_1_c_template(SwsContext *c, const int32_t *buf0,
         }
     } else {
         const int32_t *ubuf1 = ubuf[1], *vbuf1 = vbuf[1];
-        for (i = 0; i < (dstW >> 1); i++) {
+        for (i = 0; i < ((dstW + 1) >> 1); i++) {
             int Y1 = (buf0[i * 2]    ) >> 2;
             int Y2 = (buf0[i * 2 + 1]) >> 2;
             int U  = (ubuf0[i] + ubuf1[i] + (-128 << 12)) >> 3;
@@ -952,7 +952,7 @@ yuv2rgb_X_c_template(SwsContext *c, const int16_t *lumFilter,
 {
     int i;
 
-    for (i = 0; i < (dstW >> 1); i++) {
+    for (i = 0; i < ((dstW + 1) >> 1); i++) {
         int j, A1, A2;
         int Y1 = 1 << 18;
         int Y2 = 1 << 18;
@@ -1008,11 +1008,11 @@ yuv2rgb_2_c_template(SwsContext *c, const int16_t *buf[2],
                   *vbuf0 = vbuf[0], *vbuf1 = vbuf[1],
                   *abuf0 = hasAlpha ? abuf[0] : NULL,
                   *abuf1 = hasAlpha ? abuf[1] : NULL;
-    int  yalpha1 = 4095 - yalpha;
-    int uvalpha1 = 4095 - uvalpha;
+    int  yalpha1 = 4096 - yalpha;
+    int uvalpha1 = 4096 - uvalpha;
     int i;
 
-    for (i = 0; i < (dstW >> 1); i++) {
+    for (i = 0; i < ((dstW + 1) >> 1); i++) {
         int Y1 = (buf0[i * 2]     * yalpha1  + buf1[i * 2]     * yalpha)  >> 19;
         int Y2 = (buf0[i * 2 + 1] * yalpha1  + buf1[i * 2 + 1] * yalpha)  >> 19;
         int U  = (ubuf0[i]        * uvalpha1 + ubuf1[i]        * uvalpha) >> 19;
@@ -1022,11 +1022,6 @@ yuv2rgb_2_c_template(SwsContext *c, const int16_t *buf[2],
                    *g = (c->table_gU[U + YUVRGB_TABLE_HEADROOM] + c->table_gV[V + YUVRGB_TABLE_HEADROOM]),
                    *b =  c->table_bU[U + YUVRGB_TABLE_HEADROOM];
 
-        Y1 = av_clip_uint8(Y1);
-        Y2 = av_clip_uint8(Y2);
-        U  = av_clip_uint8(U);
-        V  = av_clip_uint8(V);
-
         if (hasAlpha) {
             A1 = (abuf0[i * 2    ] * yalpha1 + abuf1[i * 2    ] * yalpha) >> 19;
             A2 = (abuf0[i * 2 + 1] * yalpha1 + abuf1[i * 2 + 1] * yalpha) >> 19;
@@ -1050,7 +1045,7 @@ yuv2rgb_1_c_template(SwsContext *c, const int16_t *buf0,
     int i;
 
     if (uvalpha < 2048) {
-        for (i = 0; i < (dstW >> 1); i++) {
+        for (i = 0; i < ((dstW + 1) >> 1); i++) {
             int Y1 = (buf0[i * 2    ] + 64) >> 7;
             int Y2 = (buf0[i * 2 + 1] + 64) >> 7;
             int U  = (ubuf0[i]        + 64) >> 7;
@@ -1060,11 +1055,6 @@ yuv2rgb_1_c_template(SwsContext *c, const int16_t *buf0,
                        *g = (c->table_gU[U + YUVRGB_TABLE_HEADROOM] + c->table_gV[V + YUVRGB_TABLE_HEADROOM]),
                        *b =  c->table_bU[U + YUVRGB_TABLE_HEADROOM];
 
-            Y1 = av_clip_uint8(Y1);
-            Y2 = av_clip_uint8(Y2);
-            U  = av_clip_uint8(U);
-            V  = av_clip_uint8(V);
-
             if (hasAlpha) {
                 A1 = abuf0[i * 2    ] * 255 + 16384 >> 15;
                 A2 = abuf0[i * 2 + 1] * 255 + 16384 >> 15;
@@ -1077,7 +1067,7 @@ yuv2rgb_1_c_template(SwsContext *c, const int16_t *buf0,
         }
     } else {
         const int16_t *ubuf1 = ubuf[1], *vbuf1 = vbuf[1];
-        for (i = 0; i < (dstW >> 1); i++) {
+        for (i = 0; i < ((dstW + 1) >> 1); i++) {
             int Y1 = (buf0[i * 2    ]     +  64) >> 7;
             int Y2 = (buf0[i * 2 + 1]     +  64) >> 7;
             int U  = (ubuf0[i] + ubuf1[i] + 128) >> 8;
@@ -1087,11 +1077,6 @@ yuv2rgb_1_c_template(SwsContext *c, const int16_t *buf0,
                        *g = (c->table_gU[U + YUVRGB_TABLE_HEADROOM] + c->table_gV[V + YUVRGB_TABLE_HEADROOM]),
                        *b =  c->table_bU[U + YUVRGB_TABLE_HEADROOM];
 
-            Y1 = av_clip_uint8(Y1);
-            Y2 = av_clip_uint8(Y2);
-            U  = av_clip_uint8(U);
-            V  = av_clip_uint8(V);
-
             if (hasAlpha) {
                 A1 = (abuf0[i * 2    ] + 64) >> 7;
                 A2 = (abuf0[i * 2 + 1] + 64) >> 7;