• 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 "config/av1_rtcd.h"
16 
17 #include "test/acm_random.h"
18 #include "test/util.h"
19 #include "test/clear_system_state.h"
20 #include "test/register_state_check.h"
21 #include "third_party/googletest/src/googletest/include/gtest/gtest.h"
22 
23 #include "aom_ports/aom_timer.h"
24 #include "av1/common/convolve.h"
25 #include "av1/common/mv.h"
26 
27 namespace libaom_test {
28 
29 namespace AV1HiprecConvolve {
30 
31 typedef 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,
35                                      int w, int h,
36                                      const ConvolveParams *conv_params);
37 
38 typedef ::testing::tuple<int, int, int, hiprec_convolve_func>
39     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 namespace AV1HighbdHiprecConvolve {
62 typedef 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,
65     const int16_t *filter_y, int y_step_q4, int w, int h,
66     const ConvolveParams *conv_params, int bps);
67 
68 typedef ::testing::tuple<int, int, int, int, highbd_hiprec_convolve_func>
69     HighbdHiprecConvolveParam;
70 
71 ::testing::internal::ParamGenerator<HighbdHiprecConvolveParam> BuildParams(
72     highbd_hiprec_convolve_func filter);
73 
74 class 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);
84   void RunSpeedTest(highbd_hiprec_convolve_func test_impl);
85 
86   libaom_test::ACMRandom rnd_;
87 };
88 
89 }  // namespace AV1HighbdHiprecConvolve
90 
91 }  // namespace libaom_test
92 
93 #endif  // AOM_TEST_HIPREC_CONVOLVE_TEST_UTIL_H_
94