[SCM] libav/experimental: Make C code in yuv2yuv1() do accurate rounding, this could be split depending on SWS_ACCURATE as well if someone wants.

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:25:32 UTC 2013


The following commit has been merged in the experimental branch:
commit a1f3ffa3ce52d207bd5b8afddcd0ad56c56d8f3b
Author: Michael Niedermayer <michaelni at gmx.at>
Date:   Fri Jul 18 00:09:09 2008 +0000

    Make C code in yuv2yuv1() do accurate rounding, this could be split
    depending on SWS_ACCURATE as well if someone wants.
    
    Originally committed as revision 27323 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale

diff --git a/libswscale/swscale_template.c b/libswscale/swscale_template.c
index 45cd491..1280ba6 100644
--- a/libswscale/swscale_template.c
+++ b/libswscale/swscale_template.c
@@ -1020,7 +1020,7 @@ static inline void RENAME(yuv2yuv1)(SwsContext *c, int16_t *lumSrc, int16_t *chr
     int i;
     for (i=0; i<dstW; i++)
     {
-        int val= lumSrc[i]>>7;
+        int val= (lumSrc[i]+64)>>7;
 
         if (val&256){
             if (val<0) val=0;
@@ -1033,8 +1033,8 @@ static inline void RENAME(yuv2yuv1)(SwsContext *c, int16_t *lumSrc, int16_t *chr
     if (uDest)
         for (i=0; i<chrDstW; i++)
         {
-            int u=chrSrc[i]>>7;
-            int v=chrSrc[i + VOFW]>>7;
+            int u=(chrSrc[i       ]+64)>>7;
+            int v=(chrSrc[i + VOFW]+64)>>7;
 
             if ((u|v)&256){
                 if (u<0)        u=0;

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list