[FFmpeg-cvslog] sws: fix extreem downscaling

Michael Niedermayer git at videolan.org
Sat Oct 27 16:41:00 CEST 2012


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Sat Oct 27 16:26:39 2012 +0200| [7de21960292c15e544807f09d1bfc9935a88e5ce] | committer: Michael Niedermayer

sws: fix extreem downscaling

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

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

 libswscale/utils.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libswscale/utils.c b/libswscale/utils.c
index 81da98d..2fa1c13 100644
--- a/libswscale/utils.c
+++ b/libswscale/utils.c
@@ -230,7 +230,7 @@ static int initFilter(int16_t **outFilter, int32_t **filterPos,
     int minFilterSize;
     int64_t *filter    = NULL;
     int64_t *filter2   = NULL;
-    const int64_t fone = 1LL << 54;
+    const int64_t fone = 1LL << (54 - FFMIN(av_log2(srcW/dstW), 8));
     int ret            = -1;
 
     emms_c(); // FIXME should not be required but IS (even for non-MMX versions)
@@ -356,7 +356,7 @@ static int initFilter(int16_t **outFilter, int32_t **filterPos,
                                     (-12 * B - 48 * C) * d   +
                                       (8 * B + 24 * C) * (1 << 30);
                     }
-                    coeff *= fone >> (30 + 24);
+                    coeff /= (1LL<<54)/fone;
                 }
 #if 0
                 else if (flags & SWS_X) {



More information about the ffmpeg-cvslog mailing list