• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
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 
12 #ifndef AOM_TEST_HIPREC_CONVOLVE_TEST_UTIL_H_
13 #define AOM_TEST_HIPREC_CONVOLVE_TEST_UTIL_H_
14 
15 #include <tuple>
16 
17 #include "config/av1_rtcd.h"
18 
19 #include "test/acm_random.h"
20 #include "test/util.h"
21 #include "test/register_state_check.h"
22 #include "third_party/googletest/src/googletest/include/gtest/gtest.h"
23 
24 #include "aom_ports/aom_timer.h"
25 #include "av1/common/convolve.h"
26 #include "av1/common/mv.h"
27 
28 namespace libaom_test {
29 
30 namespace AV1HiprecConvolve {
31 
32 typedef void (*hiprec_convolve_func)(const uint8_t *src, ptrdiff_t src_stride,
33                                      uint8_t *dst, ptrdiff_t dst_stride,
34                                      const int16_t *filter_x, int x_step_q4,
35                                      const int16_t *filter_y, int y_step_q4,
36                                      int w, int h,
37                                      const ConvolveParams *conv_params);
38 
39 typedef std::tuple<int, int, int, hiprec_convolve_func> HiprecConvolveParam;
40 
41 ::testing::internal::ParamGenerator<HiprecConvolveParam> BuildParams(
42     hiprec_convolve_func filter);
43 
44 class 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);
54   void RunSpeedTest(hiprec_convolve_func test_impl);
55 
56   libaom_test::ACMRandom rnd_;
57 };
58 
59 }  // namespace AV1HiprecConvolve
60 
61 #if CONFIG_AV1_HIGHBITDEPTH
62 namespace AV1HighbdHiprecConvolve {
63 typedef void (*highbd_hiprec_convolve_func)(
64     const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst,
65     ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4,
66     const int16_t *filter_y, int y_step_q4, int w, int h,
67     const ConvolveParams *conv_params, int bps);
68 
69 typedef std::tuple<int, int, int, int, highbd_hiprec_convolve_func>
70     HighbdHiprecConvolveParam;
71 
72 ::testing::internal::ParamGenerator<HighbdHiprecConvolveParam> BuildParams(
73     highbd_hiprec_convolve_func filter);
74 
75 class AV1HighbdHiprecConvolveTest
76     : public ::testing::TestWithParam<HighbdHiprecConvolveParam> {
77  public:
78   virtual ~AV1HighbdHiprecConvolveTest();
79   virtual void SetUp();
80 
81   virtual void TearDown();
82 
83  protected:
84   void RunCheckOutput(highbd_hiprec_convolve_func test_impl);
85   void RunSpeedTest(highbd_hiprec_convolve_func test_impl);
86 
87   libaom_test::ACMRandom rnd_;
88 };
89 
90 }  // namespace AV1HighbdHiprecConvolve
91 #endif  // CONFIG_AV1_HIGHBITDEPTH
92 }  // namespace libaom_test
93 
94 #endif  // AOM_TEST_HIPREC_CONVOLVE_TEST_UTIL_H_
95