Add EndToEndAllIntraTest for allintra encoding
Added EndToEndAllIntraTest and EndToEndAllIntraTestLarge tests for
allintra encoding to check the adherence to a given PSNR value.
BUG=aomedia:2959
Change-Id: I4b5ab30c2d4fd3e87d39735cc64e96147cc7f922
diff --git a/test/end_to_end_test.cc b/test/end_to_end_test.cc
index d98c54e..5574c1a 100644
--- a/test/end_to_end_test.cc
+++ b/test/end_to_end_test.cc
@@ -27,11 +27,15 @@
const unsigned int kFramerate = 50;
const unsigned int kFrames = 10;
const int kBitrate = 500;
-// List of psnr thresholds for speed settings 0-6 and 3 encoding modes
-const double kPsnrThreshold[][3] = { { 35.7, 44.4, 39.5 }, { 35.7, 44.4, 39.5 },
- { 35.7, 44.4, 39.4 }, { 35.7, 44.4, 39.1 },
- { 35.6, 44.4, 39.1 }, { 35.0, 44.3, 38.7 },
- { 35.0, 44.3, 38.7 } };
+const unsigned int kCqLevel = 18;
+// List of psnr thresholds for speed settings 0-8 and 4 encoding modes
+const double kPsnrThreshold[][4] = {
+ { 35.7, 44.4, 39.5, 41.9 }, { 35.7, 44.4, 39.5, 41.9 },
+ { 35.7, 44.4, 39.4, 41.9 }, { 35.7, 44.4, 39.1, 41.8 },
+ { 35.6, 44.4, 39.1, 41.8 }, { 35.0, 44.3, 38.7, 41.8 },
+ { 35.0, 44.3, 38.7, 41.3 }, { 35.0, 44.3, 38.7, 40.8 },
+ { 35.0, 44.3, 38.7, 40.8 }
+};
typedef struct {
const char *filename;
@@ -94,9 +98,10 @@
virtual void SetUp() {
InitializeConfig(encoding_mode_);
- if (encoding_mode_ != ::libaom_test::kRealTime) {
+ if (encoding_mode_ == ::libaom_test::kOnePassGood ||
+ encoding_mode_ == ::libaom_test::kTwoPassGood) {
cfg_.g_lag_in_frames = 5;
- } else {
+ } else if (encoding_mode_ == ::libaom_test::kRealTime) {
cfg_.rc_buf_sz = 1000;
cfg_.rc_buf_initial_sz = 500;
cfg_.rc_buf_optimal_sz = 600;
@@ -124,10 +129,13 @@
encoder->Control(AV1E_SET_TUNE_CONTENT, AOM_CONTENT_SCREEN);
else
encoder->Control(AV1E_SET_TUNE_CONTENT, AOM_CONTENT_DEFAULT);
- if (encoding_mode_ != ::libaom_test::kRealTime) {
+ if (encoding_mode_ == ::libaom_test::kOnePassGood ||
+ encoding_mode_ == ::libaom_test::kTwoPassGood) {
encoder->Control(AOME_SET_ENABLEAUTOALTREF, 1);
encoder->Control(AOME_SET_ARNR_MAXFRAMES, 7);
encoder->Control(AOME_SET_ARNR_STRENGTH, 5);
+ } else if (encoding_mode_ == ::libaom_test::kAllIntra) {
+ encoder->Control(AOME_SET_CQ_LEVEL, kCqLevel);
}
}
}
@@ -178,10 +186,18 @@
class EndToEndTestLarge : public EndToEndTest {};
+class EndToEndAllIntraTestLarge : public EndToEndTest {};
+
+class EndToEndAllIntraTest : public EndToEndTest {};
+
TEST_P(EndToEndTestLarge, EndtoEndPSNRTest) { DoTest(); }
TEST_P(EndToEndTest, EndtoEndPSNRTest) { DoTest(); }
+TEST_P(EndToEndAllIntraTestLarge, EndtoEndPSNRTest) { DoTest(); }
+
+TEST_P(EndToEndAllIntraTest, EndtoEndPSNRTest) { DoTest(); }
+
AV1_INSTANTIATE_TEST_SUITE(EndToEndTestLarge,
::testing::ValuesIn(kEncodingModeVectors),
::testing::ValuesIn(kTestVectors),
@@ -191,4 +207,14 @@
::testing::Values(::libaom_test::kTwoPassGood),
::testing::Values(kTestVectors[2]), // 444
::testing::Values(3)); // cpu_used
+
+AV1_INSTANTIATE_TEST_SUITE(EndToEndAllIntraTestLarge,
+ ::testing::Values(::libaom_test::kAllIntra),
+ ::testing::ValuesIn(kTestVectors),
+ ::testing::Values(2, 4, 6, 8)); // cpu_used
+
+AV1_INSTANTIATE_TEST_SUITE(EndToEndAllIntraTest,
+ ::testing::Values(::libaom_test::kAllIntra),
+ ::testing::Values(kTestVectors[0]), // 420
+ ::testing::Values(6)); // cpu_used
} // namespace