summaryrefslogtreecommitdiffstats
path: root/third_party/aom/test/hbd_metrics_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/aom/test/hbd_metrics_test.cc')
-rw-r--r--third_party/aom/test/hbd_metrics_test.cc239
1 files changed, 0 insertions, 239 deletions
diff --git a/third_party/aom/test/hbd_metrics_test.cc b/third_party/aom/test/hbd_metrics_test.cc
deleted file mode 100644
index 09df9bde4..000000000
--- a/third_party/aom/test/hbd_metrics_test.cc
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * Copyright (c) 2016, Alliance for Open Media. All rights reserved
- *
- * This source code is subject to the terms of the BSD 2 Clause License and
- * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
- * was not distributed with this source code in the LICENSE file, you can
- * obtain it at www.aomedia.org/license/software. If the Alliance for Open
- * Media Patent License 1.0 was not distributed with this source code in the
- * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
- */
-
-#include <math.h>
-#include <stdlib.h>
-#include <new>
-
-#include "third_party/googletest/src/googletest/include/gtest/gtest.h"
-#include "test/acm_random.h"
-#include "test/util.h"
-
-#include "config/aom_config.h"
-
-#include "aom_dsp/psnr.h"
-#include "aom_dsp/ssim.h"
-#include "aom_ports/mem.h"
-#include "aom_ports/msvc.h"
-#include "aom_scale/yv12config.h"
-
-using libaom_test::ACMRandom;
-
-namespace {
-
-typedef double (*LBDMetricFunc)(const YV12_BUFFER_CONFIG *source,
- const YV12_BUFFER_CONFIG *dest);
-typedef double (*HBDMetricFunc)(const YV12_BUFFER_CONFIG *source,
- const YV12_BUFFER_CONFIG *dest, uint32_t in_bd,
- uint32_t bd);
-
-double compute_hbd_psnr(const YV12_BUFFER_CONFIG *source,
- const YV12_BUFFER_CONFIG *dest, uint32_t in_bd,
- uint32_t bd) {
- PSNR_STATS psnr;
- aom_calc_highbd_psnr(source, dest, &psnr, bd, in_bd);
- return psnr.psnr[0];
-}
-
-double compute_psnr(const YV12_BUFFER_CONFIG *source,
- const YV12_BUFFER_CONFIG *dest) {
- PSNR_STATS psnr;
- aom_calc_psnr(source, dest, &psnr);
- return psnr.psnr[0];
-}
-
-double compute_hbd_psnrhvs(const YV12_BUFFER_CONFIG *source,
- const YV12_BUFFER_CONFIG *dest, uint32_t in_bd,
- uint32_t bd) {
- double tempy, tempu, tempv;
- return aom_psnrhvs(source, dest, &tempy, &tempu, &tempv, bd, in_bd);
-}
-
-double compute_psnrhvs(const YV12_BUFFER_CONFIG *source,
- const YV12_BUFFER_CONFIG *dest) {
- double tempy, tempu, tempv;
- return aom_psnrhvs(source, dest, &tempy, &tempu, &tempv, 8, 8);
-}
-
-double compute_hbd_fastssim(const YV12_BUFFER_CONFIG *source,
- const YV12_BUFFER_CONFIG *dest, uint32_t in_bd,
- uint32_t bd) {
- double tempy, tempu, tempv;
- return aom_calc_fastssim(source, dest, &tempy, &tempu, &tempv, bd, in_bd);
-}
-
-double compute_fastssim(const YV12_BUFFER_CONFIG *source,
- const YV12_BUFFER_CONFIG *dest) {
- double tempy, tempu, tempv;
- return aom_calc_fastssim(source, dest, &tempy, &tempu, &tempv, 8, 8);
-}
-
-double compute_hbd_aomssim(const YV12_BUFFER_CONFIG *source,
- const YV12_BUFFER_CONFIG *dest, uint32_t in_bd,
- uint32_t bd) {
- double ssim, weight;
- ssim = aom_highbd_calc_ssim(source, dest, &weight, bd, in_bd);
- return 100 * pow(ssim / weight, 8.0);
-}
-
-double compute_aomssim(const YV12_BUFFER_CONFIG *source,
- const YV12_BUFFER_CONFIG *dest) {
- double ssim, weight;
- ssim = aom_calc_ssim(source, dest, &weight);
- return 100 * pow(ssim / weight, 8.0);
-}
-
-class HBDMetricsTestBase {
- public:
- virtual ~HBDMetricsTestBase() {}
-
- protected:
- void RunAccuracyCheck() {
- const int width = 1920;
- const int height = 1080;
- size_t i = 0;
- const uint8_t kPixFiller = 128;
- YV12_BUFFER_CONFIG lbd_src, lbd_dst;
- YV12_BUFFER_CONFIG hbd_src, hbd_dst;
- ACMRandom rnd(ACMRandom::DeterministicSeed());
- double lbd_db, hbd_db;
-
- memset(&lbd_src, 0, sizeof(lbd_src));
- memset(&lbd_dst, 0, sizeof(lbd_dst));
- memset(&hbd_src, 0, sizeof(hbd_src));
- memset(&hbd_dst, 0, sizeof(hbd_dst));
-
- aom_alloc_frame_buffer(&lbd_src, width, height, 1, 1, 0, 32, 16);
- aom_alloc_frame_buffer(&lbd_dst, width, height, 1, 1, 0, 32, 16);
- aom_alloc_frame_buffer(&hbd_src, width, height, 1, 1, 1, 32, 16);
- aom_alloc_frame_buffer(&hbd_dst, width, height, 1, 1, 1, 32, 16);
-
- memset(lbd_src.buffer_alloc, kPixFiller, lbd_src.buffer_alloc_sz);
- while (i < lbd_src.buffer_alloc_sz) {
- uint16_t spel, dpel;
- spel = lbd_src.buffer_alloc[i];
- // Create some distortion for dst buffer.
- dpel = rnd.Rand8();
- lbd_dst.buffer_alloc[i] = (uint8_t)dpel;
- ((uint16_t *)(hbd_src.buffer_alloc))[i] = spel << (bit_depth_ - 8);
- ((uint16_t *)(hbd_dst.buffer_alloc))[i] = dpel << (bit_depth_ - 8);
- i++;
- }
-
- lbd_db = lbd_metric_(&lbd_src, &lbd_dst);
- hbd_db = hbd_metric_(&hbd_src, &hbd_dst, input_bit_depth_, bit_depth_);
- EXPECT_LE(fabs(lbd_db - hbd_db), threshold_);
-
- i = 0;
- while (i < lbd_src.buffer_alloc_sz) {
- uint16_t dpel;
- // Create some small distortion for dst buffer.
- dpel = 120 + (rnd.Rand8() >> 4);
- lbd_dst.buffer_alloc[i] = (uint8_t)dpel;
- ((uint16_t *)(hbd_dst.buffer_alloc))[i] = dpel << (bit_depth_ - 8);
- i++;
- }
-
- lbd_db = lbd_metric_(&lbd_src, &lbd_dst);
- hbd_db = hbd_metric_(&hbd_src, &hbd_dst, input_bit_depth_, bit_depth_);
- EXPECT_LE(fabs(lbd_db - hbd_db), threshold_);
-
- i = 0;
- while (i < lbd_src.buffer_alloc_sz) {
- uint16_t dpel;
- // Create some small distortion for dst buffer.
- dpel = 126 + (rnd.Rand8() >> 6);
- lbd_dst.buffer_alloc[i] = (uint8_t)dpel;
- ((uint16_t *)(hbd_dst.buffer_alloc))[i] = dpel << (bit_depth_ - 8);
- i++;
- }
-
- lbd_db = lbd_metric_(&lbd_src, &lbd_dst);
- hbd_db = hbd_metric_(&hbd_src, &hbd_dst, input_bit_depth_, bit_depth_);
- EXPECT_LE(fabs(lbd_db - hbd_db), threshold_);
-
- aom_free_frame_buffer(&lbd_src);
- aom_free_frame_buffer(&lbd_dst);
- aom_free_frame_buffer(&hbd_src);
- aom_free_frame_buffer(&hbd_dst);
- }
-
- int input_bit_depth_;
- int bit_depth_;
- double threshold_;
- LBDMetricFunc lbd_metric_;
- HBDMetricFunc hbd_metric_;
-};
-
-typedef ::testing::tuple<LBDMetricFunc, HBDMetricFunc, int, int, double>
- MetricTestTParam;
-class HBDMetricsTest : public HBDMetricsTestBase,
- public ::testing::TestWithParam<MetricTestTParam> {
- public:
- virtual void SetUp() {
- lbd_metric_ = GET_PARAM(0);
- hbd_metric_ = GET_PARAM(1);
- input_bit_depth_ = GET_PARAM(2);
- bit_depth_ = GET_PARAM(3);
- threshold_ = GET_PARAM(4);
- }
- virtual void TearDown() {}
-};
-
-TEST_P(HBDMetricsTest, RunAccuracyCheck) { RunAccuracyCheck(); }
-
-// Allow small variation due to floating point operations.
-static const double kSsim_thresh = 0.001;
-// Allow some additional errors accumulated in floating point operations.
-static const double kFSsim_thresh = 0.03;
-// Allow some extra variation due to rounding error accumulated in dct.
-static const double kPhvs_thresh = 0.3;
-
-INSTANTIATE_TEST_CASE_P(
- AOMSSIM, HBDMetricsTest,
- ::testing::Values(MetricTestTParam(&compute_aomssim, &compute_hbd_aomssim,
- 8, 10, kSsim_thresh),
- MetricTestTParam(&compute_aomssim, &compute_hbd_aomssim,
- 10, 10, kPhvs_thresh),
- MetricTestTParam(&compute_aomssim, &compute_hbd_aomssim,
- 8, 12, kSsim_thresh),
- MetricTestTParam(&compute_aomssim, &compute_hbd_aomssim,
- 12, 12, kPhvs_thresh)));
-INSTANTIATE_TEST_CASE_P(
- FASTSSIM, HBDMetricsTest,
- ::testing::Values(MetricTestTParam(&compute_fastssim, &compute_hbd_fastssim,
- 8, 10, kFSsim_thresh),
- MetricTestTParam(&compute_fastssim, &compute_hbd_fastssim,
- 10, 10, kFSsim_thresh),
- MetricTestTParam(&compute_fastssim, &compute_hbd_fastssim,
- 8, 12, kFSsim_thresh),
- MetricTestTParam(&compute_fastssim, &compute_hbd_fastssim,
- 12, 12, kFSsim_thresh)));
-INSTANTIATE_TEST_CASE_P(
- PSNRHVS, HBDMetricsTest,
- ::testing::Values(MetricTestTParam(&compute_psnrhvs, &compute_hbd_psnrhvs,
- 8, 10, kPhvs_thresh),
- MetricTestTParam(&compute_psnrhvs, &compute_hbd_psnrhvs,
- 10, 10, kPhvs_thresh),
- MetricTestTParam(&compute_psnrhvs, &compute_hbd_psnrhvs,
- 8, 12, kPhvs_thresh),
- MetricTestTParam(&compute_psnrhvs, &compute_hbd_psnrhvs,
- 12, 12, kPhvs_thresh)));
-INSTANTIATE_TEST_CASE_P(
- PSNR, HBDMetricsTest,
- ::testing::Values(
- MetricTestTParam(&compute_psnr, &compute_hbd_psnr, 8, 10, kPhvs_thresh),
- MetricTestTParam(&compute_psnr, &compute_hbd_psnr, 10, 10,
- kPhvs_thresh),
- MetricTestTParam(&compute_psnr, &compute_hbd_psnr, 8, 12, kPhvs_thresh),
- MetricTestTParam(&compute_psnr, &compute_hbd_psnr, 12, 12,
- kPhvs_thresh)));
-} // namespace