# HG changeset patch
# User Kavitha Sampath <[email protected]>
# Date 1391175842 -19800
# Fri Jan 31 19:14:02 2014 +0530
# Node ID 9da6b87cd543df003c3a3d86c23e29ab33bb6217
# Parent eb3713ab0641757729d68d876be4e6737f27eb7e
weightP: fix crash in 32 bit due to fabsf()
diff -r eb3713ab0641 -r 9da6b87cd543 source/encoder/slicetype.cpp
--- a/source/encoder/slicetype.cpp Thu Jan 30 18:19:02 2014 -0600
+++ b/source/encoder/slicetype.cpp Fri Jan 31 19:14:02 2014 +0530
@@ -1190,7 +1190,9 @@
refMean = (float)ref->wp_sum[0] / (fenc->lines * fenc->width) / (1 <<
(X265_DEPTH - 8));
/* Early termination */
- if (fabsf(refMean - fencMean) < 0.5f && fabsf(1.f - guessScale) < epsilon)
+ float meanDiff = refMean < fencMean ? fencMean - refMean : refMean -
fencMean;
+ float guessVal = guessScale > 1.f ? guessScale - 1.f : 1.f - guessScale;
+ if (meanDiff < 0.5 && guessVal < epsilon)
return;
/* Don't check chroma in lookahead, or if there wasn't a luma weight. */
diff -r eb3713ab0641 -r 9da6b87cd543 source/encoder/weightPrediction.cpp
--- a/source/encoder/weightPrediction.cpp Thu Jan 30 18:19:02 2014 -0600
+++ b/source/encoder/weightPrediction.cpp Fri Jan 31 19:14:02 2014 +0530
@@ -221,7 +221,9 @@
SET_WEIGHT(w, 0, 1, 0, 0);
SET_WEIGHT(fw[yuv], 0, 1 << denom, denom, 0);
/* Early termination */
- if (fabsf(refMean[yuv] - fencMean[yuv]) < 0.5f && fabsf(1.f -
guessScale[yuv]) < epsilon)
+ float meanDiff = refMean[yuv] < fencMean[yuv] ? fencMean[yuv]
- refMean[yuv] : refMean[yuv] - fencMean[yuv];
+ float guessVal = guessScale[yuv] > 1.f ? guessScale[yuv] - 1.f
: 1.f - guessScale[yuv];
+ if (meanDiff < 0.5 && guessVal < epsilon)
continue;
/* Don't check chroma in lookahead, or if there wasn't a luma
weight. */
_______________________________________________
x265-devel mailing list
[email protected]
https://mailman.videolan.org/listinfo/x265-devel