avfilter/af_dynaudnorm: use better check for infinite loop
authorPaul B Mahol <onemda@gmail.com>
Sun, 7 Aug 2016 21:47:04 +0000 (23:47 +0200)
committerPaul B Mahol <onemda@gmail.com>
Sun, 7 Aug 2016 21:47:04 +0000 (23:47 +0200)
Apparently due to rounding this happens.

libavfilter/af_dynaudnorm.c

index 6801209..91ec45a 100644 (file)
@@ -519,7 +519,8 @@ static double setup_compress_thresh(double threshold)
         double step_size = 1.0;
 
         while (step_size > DBL_EPSILON) {
-            while ((current_threshold + step_size > current_threshold) &&
+            while ((llrint((current_threshold + step_size) * (UINT64_C(1) << 63)) >
+                    llrint(current_threshold * (UINT64_C(1) << 63))) &&
                    (bound(current_threshold + step_size, 1.0) <= threshold)) {
                 current_threshold += step_size;
             }