blob: 2abe24b57edfb056838526e7a889bd01247f60ff [file] [log] [blame]
David Barker5d34e6a2017-05-18 15:12:50 +01001/*
2 * Copyright (c) 2016, Alliance for Open Media. All rights reserved
3 *
4 * This source code is subject to the terms of the BSD 2 Clause License and
5 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
6 * was not distributed with this source code in the LICENSE file, you can
7 * obtain it at www.aomedia.org/license/software. If the Alliance for Open
8 * Media Patent License 1.0 was not distributed with this source code in the
9 * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
10 */
11
James Zerne1cbb132018-08-22 14:10:36 -070012#ifndef AOM_TEST_HIPREC_CONVOLVE_TEST_UTIL_H_
13#define AOM_TEST_HIPREC_CONVOLVE_TEST_UTIL_H_
David Barker5d34e6a2017-05-18 15:12:50 +010014
Tom Finegan44702c82018-05-22 13:00:39 -070015#include "config/av1_rtcd.h"
16
David Barker5d34e6a2017-05-18 15:12:50 +010017#include "test/acm_random.h"
18#include "test/util.h"
David Barker5d34e6a2017-05-18 15:12:50 +010019#include "test/clear_system_state.h"
20#include "test/register_state_check.h"
Imdad Sardharwallaaab6aee2018-01-26 16:05:14 +000021#include "third_party/googletest/src/googletest/include/gtest/gtest.h"
David Barker5d34e6a2017-05-18 15:12:50 +010022
Imdad Sardharwallaaab6aee2018-01-26 16:05:14 +000023#include "aom_ports/aom_timer.h"
Debargha Mukherjee26971392018-03-12 08:20:46 -070024#include "av1/common/convolve.h"
David Barker5d34e6a2017-05-18 15:12:50 +010025#include "av1/common/mv.h"
26
27namespace libaom_test {
28
29namespace AV1HiprecConvolve {
30
31typedef void (*hiprec_convolve_func)(const uint8_t *src, ptrdiff_t src_stride,
32 uint8_t *dst, ptrdiff_t dst_stride,
33 const int16_t *filter_x, int x_step_q4,
34 const int16_t *filter_y, int y_step_q4,
Debargha Mukherjee26971392018-03-12 08:20:46 -070035 int w, int h,
36 const ConvolveParams *conv_params);
David Barker5d34e6a2017-05-18 15:12:50 +010037
James Zern95612802018-03-30 11:37:54 -070038typedef ::testing::tuple<int, int, int, hiprec_convolve_func>
David Barker5d34e6a2017-05-18 15:12:50 +010039 HiprecConvolveParam;
40
41::testing::internal::ParamGenerator<HiprecConvolveParam> BuildParams(
42 hiprec_convolve_func filter);
43
44class AV1HiprecConvolveTest
45 : public ::testing::TestWithParam<HiprecConvolveParam> {
46 public:
47 virtual ~AV1HiprecConvolveTest();
48 virtual void SetUp();
49
50 virtual void TearDown();
51
52 protected:
53 void RunCheckOutput(hiprec_convolve_func test_impl);
Imdad Sardharwallaaab6aee2018-01-26 16:05:14 +000054 void RunSpeedTest(hiprec_convolve_func test_impl);
David Barker5d34e6a2017-05-18 15:12:50 +010055
56 libaom_test::ACMRandom rnd_;
57};
58
59} // namespace AV1HiprecConvolve
60
David Barker5d34e6a2017-05-18 15:12:50 +010061namespace AV1HighbdHiprecConvolve {
62typedef void (*highbd_hiprec_convolve_func)(
63 const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst,
64 ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4,
Debargha Mukherjee26971392018-03-12 08:20:46 -070065 const int16_t *filter_y, int y_step_q4, int w, int h,
66 const ConvolveParams *conv_params, int bps);
David Barker5d34e6a2017-05-18 15:12:50 +010067
James Zern95612802018-03-30 11:37:54 -070068typedef ::testing::tuple<int, int, int, int, highbd_hiprec_convolve_func>
David Barker5d34e6a2017-05-18 15:12:50 +010069 HighbdHiprecConvolveParam;
70
71::testing::internal::ParamGenerator<HighbdHiprecConvolveParam> BuildParams(
72 highbd_hiprec_convolve_func filter);
73
74class AV1HighbdHiprecConvolveTest
75 : public ::testing::TestWithParam<HighbdHiprecConvolveParam> {
76 public:
77 virtual ~AV1HighbdHiprecConvolveTest();
78 virtual void SetUp();
79
80 virtual void TearDown();
81
82 protected:
83 void RunCheckOutput(highbd_hiprec_convolve_func test_impl);
Imdad Sardharwallaaab6aee2018-01-26 16:05:14 +000084 void RunSpeedTest(highbd_hiprec_convolve_func test_impl);
David Barker5d34e6a2017-05-18 15:12:50 +010085
86 libaom_test::ACMRandom rnd_;
87};
88
89} // namespace AV1HighbdHiprecConvolve
David Barker5d34e6a2017-05-18 15:12:50 +010090
91} // namespace libaom_test
92
James Zerne1cbb132018-08-22 14:10:36 -070093#endif // AOM_TEST_HIPREC_CONVOLVE_TEST_UTIL_H_