From ebe919cce2f46eedeb54948a3e49fa33f68bfbb0 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michaelni@gmx.at>
Date: Sun, 31 May 2015 00:50:45 +0200
Subject: [PATCH] postproc/postprocess_template: Compute packedYScale and
 QPCorrecture without floats

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
---
 libpostproc/postprocess_template.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/libpostproc/postprocess_template.c b/libpostproc/postprocess_template.c
index b7296c4da17..fc49e193377 100644
--- a/libpostproc/postprocess_template.c
+++ b/libpostproc/postprocess_template.c
@@ -3372,7 +3372,7 @@ static void RENAME(postProcess)(const uint8_t src[], int srcStride, uint8_t dst[
         int i;
         uint64_t maxClipped;
         uint64_t clipped;
-        double scale;
+        AVRational scale;
 
         c.frameNum++;
         // first frame is fscked so we ignore it
@@ -3397,13 +3397,13 @@ static void RENAME(postProcess)(const uint8_t src[], int srcStride, uint8_t dst[
             clipped-= yHistogram[white];
         }
 
-        scale= (double)(c.ppMode.maxAllowedY - c.ppMode.minAllowedY) / (double)(white-black);
+        scale = (AVRational){c.ppMode.maxAllowedY - c.ppMode.minAllowedY, white - black};
 
 #if TEMPLATE_PP_MMXEXT
-        c.packedYScale= (uint16_t)(scale*256.0 + 0.5);
+        c.packedYScale = (uint16_t)av_rescale(scale.num, 256, scale.den);
         c.packedYOffset= (((black*c.packedYScale)>>8) - c.ppMode.minAllowedY) & 0xFFFF;
 #else
-        c.packedYScale= (uint16_t)(scale*1024.0 + 0.5);
+        c.packedYScale = (uint16_t)av_rescale(scale.num, 1024, scale.den);
         c.packedYOffset= (black - c.ppMode.minAllowedY) & 0xFFFF;
 #endif
 
@@ -3413,7 +3413,7 @@ static void RENAME(postProcess)(const uint8_t src[], int srcStride, uint8_t dst[
         c.packedYScale|= c.packedYScale<<32;
         c.packedYScale|= c.packedYScale<<16;
 
-        if(mode & LEVEL_FIX)        QPCorrecture= (int)(scale*256*256 + 0.5);
+        if(mode & LEVEL_FIX)        QPCorrecture= (int)av_rescale(scale.num, 256*256, scale.den);
         else                        QPCorrecture= 256*256;
     }else{
         c.packedYScale= 0x0100010001000100LL;
-- 
GitLab