#include "./psnr.h" // NOLINT
-#include <math.h>
-
#ifdef _OPENMP
#include <omp.h>
#endif
#endif // __LP64__
#endif // _MSC_VER
-// PSNR formula: psnr = 10 * log10 (Peak Signal^2 * size / sse)
-double ComputePSNR(double sse, double size) {
- const double kMINSSE = 255.0 * 255.0 * size / pow(10., kMaxPSNR / 10.);
- if (sse <= kMINSSE)
- sse = kMINSSE; // Produces max PSNR of 128
- return 10.0 * log10(65025.0 * size / sse);
-}
+// libyuv provides this function when linking library for jpeg support.
+#if !defined(HAVE_JPEG)
#if !defined(LIBYUV_DISABLE_NEON) && defined(__ARM_NEON__)
#define HAS_SUMSQUAREERROR_NEON
}
return static_cast<double>(sse);
}
+#endif
+
+// PSNR formula: psnr = 10 * log10 (Peak Signal^2 * size / sse)
+// Returns 128.0 (kMaxPSNR) if sse is 0 (perfect match).
+double ComputePSNR(double sse, double size) {
+ const double kMINSSE = 255.0 * 255.0 * size / pow(10.0, kMaxPSNR / 10.0);
+ if (sse <= kMINSSE)
+ sse = kMINSSE; // Produces max PSNR of 128
+ return 10.0 * log10(255.0 * 255.0 * size / sse);
+}
#ifdef __cplusplus
} // extern "C"