avfilter/vf_idet: fix rounding of av_dict_set_fxp()
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 3 Nov 2014 16:14:29 +0000 (17:14 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 3 Nov 2014 16:14:29 +0000 (17:14 +0100)
fixes the remainder overflowing beyond .999

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavfilter/vf_idet.c

index 01d7eca..05f361a 100644 (file)
@@ -62,8 +62,13 @@ static int av_dict_set_fxp(AVDictionary **pm, const char *key, uint64_t value, u
                 int flags)
 {
     char valuestr[44];
+    uint64_t print_precision = uintpow(10, digits);
+
+    value = av_rescale(value, print_precision, PRECISION);
+
     snprintf(valuestr, sizeof(valuestr), "%"PRId64".%0*"PRId64,
-             value / PRECISION, digits, ( value % PRECISION ) / ( PRECISION / uintpow(10,digits) ));
+             value / print_precision, digits, value % print_precision);
+
     return av_dict_set(pm, key, valuestr, flags);
 }