diff --git a/webrtc/common_video/libyuv/include/webrtc_libyuv.h b/webrtc/common_video/libyuv/include/webrtc_libyuv.h index 777e7c72d9..1bea4f1852 100644 --- a/webrtc/common_video/libyuv/include/webrtc_libyuv.h +++ b/webrtc/common_video/libyuv/include/webrtc_libyuv.h @@ -44,7 +44,7 @@ enum VideoType { }; // This is the max PSNR value our algorithms can return. -const double kInfinitePSNR = 48.0f; +const double kPerfectPSNR = 48.0f; // Conversion between the RawVideoType and the LibYuv videoType. // TODO(wu): Consolidate types into one type throughout WebRtc. diff --git a/webrtc/common_video/libyuv/webrtc_libyuv.cc b/webrtc/common_video/libyuv/webrtc_libyuv.cc index fdef255302..750235528f 100644 --- a/webrtc/common_video/libyuv/webrtc_libyuv.cc +++ b/webrtc/common_video/libyuv/webrtc_libyuv.cc @@ -354,7 +354,7 @@ double I420PSNR(const I420VideoFrame* ref_frame, test_frame->width(), test_frame->height()); // LibYuv sets the max psnr value to 128, we restrict it here. // In case of 0 mse in one frame, 128 can skew the results significantly. - return (psnr > kInfinitePSNR) ? kInfinitePSNR : psnr; + return (psnr > kPerfectPSNR) ? kPerfectPSNR : psnr; } // Compute SSIM for an I420 frame (all planes) @@ -409,7 +409,7 @@ double I420PSNR(const uint8_t* ref_frame, width, height); // LibYuv sets the max psnr value to 128, we restrict it here. // In case of 0 mse in one frame, 128 can skew the results significantly. - return (psnr > kInfinitePSNR) ? kInfinitePSNR : psnr; + return (psnr > kPerfectPSNR) ? kPerfectPSNR : psnr; } // Compute SSIM for an I420 frame (all planes) double I420SSIM(const uint8_t* ref_frame, diff --git a/webrtc/test/testsupport/metrics/video_metrics.cc b/webrtc/test/testsupport/metrics/video_metrics.cc index c9d6d9dcc5..632786af8a 100644 --- a/webrtc/test/testsupport/metrics/video_metrics.cc +++ b/webrtc/test/testsupport/metrics/video_metrics.cc @@ -21,7 +21,7 @@ namespace webrtc { namespace test { // Copy here so our callers won't need to include libyuv for this constant. -double kMetricsInfinitePSNR = kInfinitePSNR; +double kMetricsPerfectPSNR = kPerfectPSNR; // Used for calculating min and max values. static bool LessForFrameResultValue (const FrameResult& s1, diff --git a/webrtc/test/testsupport/metrics/video_metrics.h b/webrtc/test/testsupport/metrics/video_metrics.h index 36e62a0769..8448ccfd24 100644 --- a/webrtc/test/testsupport/metrics/video_metrics.h +++ b/webrtc/test/testsupport/metrics/video_metrics.h @@ -18,7 +18,7 @@ namespace webrtc { namespace test { // The highest PSNR value our algorithms will return. -extern double kMetricsInfinitePSNR; +extern double kMetricsPerfectPSNR; // Contains video quality metrics result for a single frame. struct FrameResult { diff --git a/webrtc/video_engine/test/auto_test/automated/vie_video_verification_test.cc b/webrtc/video_engine/test/auto_test/automated/vie_video_verification_test.cc index c0094dd83e..23e56a9fba 100644 --- a/webrtc/video_engine/test/auto_test/automated/vie_video_verification_test.cc +++ b/webrtc/video_engine/test/auto_test/automated/vie_video_verification_test.cc @@ -160,6 +160,8 @@ TEST_F(ViEVideoVerificationTest, RunsBaseStandardTestWithoutErrors) { // However, it's hard to make 100% stringent requirements on the video engine // since for instance the jitter buffer has non-deterministic elements. If it // breaks five times in a row though, you probably introduced a bug. + const double kReasonablePsnr = webrtc::test::kMetricsPerfectPSNR - 2.0f; + const double kReasonableSsim = 0.99f; const int kNumAttempts = 5; for (int attempt = 0; attempt < kNumAttempts; ++attempt) { InitializeFileRenderers(); @@ -176,8 +178,7 @@ TEST_F(ViEVideoVerificationTest, RunsBaseStandardTestWithoutErrors) { TearDownFileRenderers(); - if (actual_psnr == webrtc::test::kMetricsInfinitePSNR && - actual_ssim == 1.0f) { + if (actual_psnr > kReasonablePsnr && actual_ssim > kReasonableSsim) { // Test successful. return; } else { @@ -185,7 +186,7 @@ TEST_F(ViEVideoVerificationTest, RunsBaseStandardTestWithoutErrors) { } } - FAIL() << "Failed to achieve perfect PSNR and SSIM results after " << + FAIL() << "Failed to achieve near-perfect PSNR and SSIM results after " << kNumAttempts << " attempts."; }