summaryrefslogtreecommitdiffstats
path: root/third_party/aom/test/dr_prediction_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/aom/test/dr_prediction_test.cc')
-rw-r--r--third_party/aom/test/dr_prediction_test.cc52
1 files changed, 31 insertions, 21 deletions
diff --git a/third_party/aom/test/dr_prediction_test.cc b/third_party/aom/test/dr_prediction_test.cc
index 22b9832a1..ff2c1de4e 100644
--- a/third_party/aom/test/dr_prediction_test.cc
+++ b/third_party/aom/test/dr_prediction_test.cc
@@ -143,8 +143,8 @@ class DrPredTest : public ::testing::TestWithParam<DrPredFunc<FuncType> > {
static const int kBufSize = ((2 * MAX_TX_SIZE) << 1) + 16;
DrPredTest()
- : upsample_above_(0), upsample_left_(0), bw_(0), bh_(0), dx_(1), dy_(1),
- bd_(8), txsize_(TX_4X4) {
+ : enable_upsample_(0), upsample_above_(0), upsample_left_(0), bw_(0),
+ bh_(0), dx_(1), dy_(1), bd_(8), txsize_(TX_4X4) {
params_ = this->GetParam();
start_angle_ = params_.start_angle;
stop_angle_ = start_angle_ + 90;
@@ -193,7 +193,7 @@ class DrPredTest : public ::testing::TestWithParam<DrPredFunc<FuncType> > {
OutputTimes(kNumTests, ref_time, tst_time, tx);
}
- void RunTest(bool speedtest) {
+ void RunTest(bool speedtest, int p_angle) {
for (int i = 0; i < kBufSize; ++i) {
above_data_[i] = left_data_[i] = (1 << bd_) - 1;
}
@@ -212,6 +212,15 @@ class DrPredTest : public ::testing::TestWithParam<DrPredFunc<FuncType> > {
bw_ = tx_size_wide[kTxSize[tx]];
bh_ = tx_size_high[kTxSize[tx]];
+ if (enable_upsample_) {
+ upsample_above_ =
+ av1_use_intra_edge_upsample(bw_, bh_, p_angle - 90, 0);
+ upsample_left_ =
+ av1_use_intra_edge_upsample(bw_, bh_, p_angle - 180, 0);
+ } else {
+ upsample_above_ = upsample_left_ = 0;
+ }
+
Predict(speedtest, tx);
for (int r = 0; r < bh_; ++r) {
@@ -252,6 +261,7 @@ class DrPredTest : public ::testing::TestWithParam<DrPredFunc<FuncType> > {
Pixel *left_;
int dst_stride_;
+ int enable_upsample_;
int upsample_above_;
int upsample_left_;
int bw_;
@@ -273,25 +283,25 @@ class LowbdDrPredTest : public DrPredTest<uint8_t, DrPred> {};
TEST_P(LowbdDrPredTest, SaturatedValues) {
for (int iter = 0; iter < kIterations && !HasFatalFailure(); ++iter) {
- upsample_above_ = iter & 1;
+ enable_upsample_ = iter & 1;
for (int angle = start_angle_; angle < stop_angle_; ++angle) {
dx_ = av1_get_dx(angle);
dy_ = av1_get_dy(angle);
- if (dx_ && dy_) RunTest(false);
+ if (dx_ && dy_) RunTest(false, angle);
}
}
}
TEST_P(LowbdDrPredTest, DISABLED_Speed) {
const int angles[] = { 3, 45, 87 };
- for (upsample_above_ = 0; upsample_above_ < 2; ++upsample_above_) {
- upsample_left_ = upsample_above_;
+ for (enable_upsample_ = 0; enable_upsample_ < 2; ++enable_upsample_) {
for (int i = 0; i < 3; ++i) {
- dx_ = av1_get_dx(angles[i] + start_angle_);
- dy_ = av1_get_dy(angles[i] + start_angle_);
- printf("upsample_above: %d upsample_left: %d angle: %d ~~~~~~~~~~~~~~~\n",
- upsample_above_, upsample_left_, angles[i] + start_angle_);
- if (dx_ && dy_) RunTest(true);
+ const int angle = angles[i] + start_angle_;
+ dx_ = av1_get_dx(angle);
+ dy_ = av1_get_dy(angle);
+ printf("enable_upsample: %d angle: %d ~~~~~~~~~~~~~~~\n",
+ enable_upsample_, angle);
+ if (dx_ && dy_) RunTest(true, angle);
}
}
}
@@ -311,25 +321,25 @@ class HighbdDrPredTest : public DrPredTest<uint16_t, DrPred_Hbd> {};
TEST_P(HighbdDrPredTest, SaturatedValues) {
for (int iter = 0; iter < kIterations && !HasFatalFailure(); ++iter) {
- upsample_above_ = iter & 1;
+ enable_upsample_ = iter & 1;
for (int angle = start_angle_; angle < stop_angle_; ++angle) {
dx_ = av1_get_dx(angle);
dy_ = av1_get_dy(angle);
- if (dx_ && dy_) RunTest(false);
+ if (dx_ && dy_) RunTest(false, angle);
}
}
}
TEST_P(HighbdDrPredTest, DISABLED_Speed) {
const int angles[] = { 3, 45, 87 };
- for (upsample_above_ = 0; upsample_above_ < 2; ++upsample_above_) {
- upsample_left_ = upsample_above_;
+ for (enable_upsample_ = 0; enable_upsample_ < 2; ++enable_upsample_) {
for (int i = 0; i < 3; ++i) {
- dx_ = av1_get_dx(angles[i] + start_angle_);
- dy_ = av1_get_dy(angles[i] + start_angle_);
- printf("upsample_above: %d upsample_left: %d angle: %d ~~~~~~~~~~~~~~~\n",
- upsample_above_, upsample_left_, angles[i] + start_angle_);
- if (dx_ && dy_) RunTest(true);
+ const int angle = angles[i] + start_angle_;
+ dx_ = av1_get_dx(angle);
+ dy_ = av1_get_dy(angle);
+ printf("enable_upsample: %d angle: %d ~~~~~~~~~~~~~~~\n",
+ enable_upsample_, angle);
+ if (dx_ && dy_) RunTest(true, angle);
}
}
}