vp9_thread_test: parameterize VP9DecodeMultiThreadedTest
on a per-file basis; this will make sharding more effective
Change-Id: Ib797681a7cc3bd7ec835bb0c1c7a8d9f23512a0d
diff --git a/test/vp9_thread_test.cc b/test/vp9_thread_test.cc
index 5cac9ea..1ceef81 100644
--- a/test/vp9_thread_test.cc
+++ b/test/vp9_thread_test.cc
@@ -148,11 +148,6 @@
// -----------------------------------------------------------------------------
// Multi-threaded decode tests
#if CONFIG_WEBM_IO
-struct FileList {
- const char *name;
- const char *expected_md5;
-};
-
// Decodes |filename| with |num_threads|. Returns the md5 of the decoded frames.
string DecodeFile(const string &filename, int num_threads) {
libvpx_test::WebMVideoSource video(filename);
@@ -182,16 +177,6 @@
return string(md5.Get());
}
-void DecodeFiles(const FileList files[]) {
- for (const FileList *iter = files; iter->name != nullptr; ++iter) {
- SCOPED_TRACE(iter->name);
- for (int t = 1; t <= 8; ++t) {
- EXPECT_EQ(iter->expected_md5, DecodeFile(iter->name, t))
- << "threads = " << t;
- }
- }
-}
-
// Trivial serialized thread worker interface implementation.
// Note any worker that requires synchronization between other workers will
// hang.
@@ -228,88 +213,81 @@
EXPECT_EQ(expected_md5, DecodeFile(filename, 2));
}
-TEST(VP9DecodeMultiThreadedTest, NoTilesNonFrameParallel) {
- // no tiles or frame parallel; this exercises loop filter threading.
- EXPECT_EQ("b35a1b707b28e82be025d960aba039bc",
- DecodeFile("vp90-2-03-size-226x226.webm", 2));
+struct FileParam {
+ const char *name;
+ const char *expected_md5;
+ friend std::ostream &operator<<(std::ostream &os, const FileParam ¶m) {
+ return os << "file name: " << param.name
+ << " digest: " << param.expected_md5;
+ }
+};
+
+class VP9DecodeMultiThreadedTest : public ::testing::TestWithParam<FileParam> {
+};
+
+TEST_P(VP9DecodeMultiThreadedTest, Decode) {
+ for (int t = 1; t <= 8; ++t) {
+ EXPECT_EQ(GetParam().expected_md5, DecodeFile(GetParam().name, t))
+ << "threads = " << t;
+ }
}
-TEST(VP9DecodeMultiThreadedTest, FrameParallel) {
- static const FileList files[] = { { "vp90-2-08-tile_1x2_frame_parallel.webm",
- "68ede6abd66bae0a2edf2eb9232241b6" },
- { "vp90-2-08-tile_1x4_frame_parallel.webm",
- "368ebc6ebf3a5e478d85b2c3149b2848" },
- { "vp90-2-08-tile_1x8_frame_parallel.webm",
- "17e439da2388aff3a0f69cb22579c6c1" },
- { nullptr, nullptr } };
+const FileParam kNoTilesNonFrameParallelFiles[] = {
+ { "vp90-2-03-size-226x226.webm", "b35a1b707b28e82be025d960aba039bc" }
+};
- DecodeFiles(files);
-}
+const FileParam kFrameParallelFiles[] = {
+ { "vp90-2-08-tile_1x2_frame_parallel.webm",
+ "68ede6abd66bae0a2edf2eb9232241b6" },
+ { "vp90-2-08-tile_1x4_frame_parallel.webm",
+ "368ebc6ebf3a5e478d85b2c3149b2848" },
+ { "vp90-2-08-tile_1x8_frame_parallel.webm",
+ "17e439da2388aff3a0f69cb22579c6c1" },
+};
-TEST(VP9DecodeMultiThreadedTest, FrameParallelResize) {
- static const FileList files[] = {
- { "vp90-2-14-resize-fp-tiles-1-16.webm",
- "0cd5e632c326297e975f38949c31ea94" },
- { "vp90-2-14-resize-fp-tiles-1-2-4-8-16.webm",
- "5c78a96a42e7f4a4f6b2edcdb791e44c" },
- { "vp90-2-14-resize-fp-tiles-1-2.webm",
- "e030450ae85c3277be2a418769df98e2" },
- { "vp90-2-14-resize-fp-tiles-1-4.webm",
- "312eed4e2b64eb7a4e7f18916606a430" },
- { "vp90-2-14-resize-fp-tiles-16-1.webm",
- "1755c16d8af16a9cb3fe7338d90abe52" },
- { "vp90-2-14-resize-fp-tiles-16-2.webm",
- "500300592d3fcb6f12fab25e48aaf4df" },
- { "vp90-2-14-resize-fp-tiles-16-4.webm",
- "47c48379fa6331215d91c67648e1af6e" },
- { "vp90-2-14-resize-fp-tiles-16-8-4-2-1.webm",
- "eecf17290739bc708506fa4827665989" },
- { "vp90-2-14-resize-fp-tiles-16-8.webm",
- "29b6bb54e4c26b5ca85d5de5fed94e76" },
- { "vp90-2-14-resize-fp-tiles-1-8.webm",
- "1b6f175e08cd82cf84bb800ac6d1caa3" },
- { "vp90-2-14-resize-fp-tiles-2-16.webm",
- "ca3b03e4197995d8d5444ede7a6c0804" },
- { "vp90-2-14-resize-fp-tiles-2-1.webm",
- "99aec065369d70bbb78ccdff65afed3f" },
- { "vp90-2-14-resize-fp-tiles-2-4.webm",
- "22d0ebdb49b87d2920a85aea32e1afd5" },
- { "vp90-2-14-resize-fp-tiles-2-8.webm",
- "c2115cf051c62e0f7db1d4a783831541" },
- { "vp90-2-14-resize-fp-tiles-4-16.webm",
- "c690d7e1719b31367564cac0af0939cb" },
- { "vp90-2-14-resize-fp-tiles-4-1.webm",
- "a926020b2cc3e15ad4cc271853a0ff26" },
- { "vp90-2-14-resize-fp-tiles-4-2.webm",
- "42699063d9e581f1993d0cf890c2be78" },
- { "vp90-2-14-resize-fp-tiles-4-8.webm",
- "7f76d96036382f45121e3d5aa6f8ec52" },
- { "vp90-2-14-resize-fp-tiles-8-16.webm",
- "76a43fcdd7e658542913ea43216ec55d" },
- { "vp90-2-14-resize-fp-tiles-8-1.webm",
- "8e3fbe89486ca60a59299dea9da91378" },
- { "vp90-2-14-resize-fp-tiles-8-2.webm",
- "ae96f21f21b6370cc0125621b441fc52" },
- { "vp90-2-14-resize-fp-tiles-8-4.webm",
- "3eb4f24f10640d42218f7fd7b9fd30d4" },
- { nullptr, nullptr }
- };
+const FileParam kFrameParallelResizeFiles[] = {
+ { "vp90-2-14-resize-fp-tiles-1-16.webm", "0cd5e632c326297e975f38949c31ea94" },
+ { "vp90-2-14-resize-fp-tiles-1-2-4-8-16.webm",
+ "5c78a96a42e7f4a4f6b2edcdb791e44c" },
+ { "vp90-2-14-resize-fp-tiles-1-2.webm", "e030450ae85c3277be2a418769df98e2" },
+ { "vp90-2-14-resize-fp-tiles-1-4.webm", "312eed4e2b64eb7a4e7f18916606a430" },
+ { "vp90-2-14-resize-fp-tiles-16-1.webm", "1755c16d8af16a9cb3fe7338d90abe52" },
+ { "vp90-2-14-resize-fp-tiles-16-2.webm", "500300592d3fcb6f12fab25e48aaf4df" },
+ { "vp90-2-14-resize-fp-tiles-16-4.webm", "47c48379fa6331215d91c67648e1af6e" },
+ { "vp90-2-14-resize-fp-tiles-16-8-4-2-1.webm",
+ "eecf17290739bc708506fa4827665989" },
+ { "vp90-2-14-resize-fp-tiles-16-8.webm", "29b6bb54e4c26b5ca85d5de5fed94e76" },
+ { "vp90-2-14-resize-fp-tiles-1-8.webm", "1b6f175e08cd82cf84bb800ac6d1caa3" },
+ { "vp90-2-14-resize-fp-tiles-2-16.webm", "ca3b03e4197995d8d5444ede7a6c0804" },
+ { "vp90-2-14-resize-fp-tiles-2-1.webm", "99aec065369d70bbb78ccdff65afed3f" },
+ { "vp90-2-14-resize-fp-tiles-2-4.webm", "22d0ebdb49b87d2920a85aea32e1afd5" },
+ { "vp90-2-14-resize-fp-tiles-2-8.webm", "c2115cf051c62e0f7db1d4a783831541" },
+ { "vp90-2-14-resize-fp-tiles-4-16.webm", "c690d7e1719b31367564cac0af0939cb" },
+ { "vp90-2-14-resize-fp-tiles-4-1.webm", "a926020b2cc3e15ad4cc271853a0ff26" },
+ { "vp90-2-14-resize-fp-tiles-4-2.webm", "42699063d9e581f1993d0cf890c2be78" },
+ { "vp90-2-14-resize-fp-tiles-4-8.webm", "7f76d96036382f45121e3d5aa6f8ec52" },
+ { "vp90-2-14-resize-fp-tiles-8-16.webm", "76a43fcdd7e658542913ea43216ec55d" },
+ { "vp90-2-14-resize-fp-tiles-8-1.webm", "8e3fbe89486ca60a59299dea9da91378" },
+ { "vp90-2-14-resize-fp-tiles-8-2.webm", "ae96f21f21b6370cc0125621b441fc52" },
+ { "vp90-2-14-resize-fp-tiles-8-4.webm", "3eb4f24f10640d42218f7fd7b9fd30d4" },
+};
- DecodeFiles(files);
-}
+const FileParam kNonFrameParallelFiles[] = {
+ { "vp90-2-08-tile_1x2.webm", "570b4a5d5a70d58b5359671668328a16" },
+ { "vp90-2-08-tile_1x4.webm", "988d86049e884c66909d2d163a09841a" },
+ { "vp90-2-08-tile_1x8.webm", "0941902a52e9092cb010905eab16364c" },
+ { "vp90-2-08-tile-4x1.webm", "06505aade6647c583c8e00a2f582266f" },
+ { "vp90-2-08-tile-4x4.webm", "85c2299892460d76e2c600502d52bfe2" },
+};
-TEST(VP9DecodeMultiThreadedTest, NonFrameParallel) {
- static const FileList files[] = {
- { "vp90-2-08-tile_1x2.webm", "570b4a5d5a70d58b5359671668328a16" },
- { "vp90-2-08-tile_1x4.webm", "988d86049e884c66909d2d163a09841a" },
- { "vp90-2-08-tile_1x8.webm", "0941902a52e9092cb010905eab16364c" },
- { "vp90-2-08-tile-4x1.webm", "06505aade6647c583c8e00a2f582266f" },
- { "vp90-2-08-tile-4x4.webm", "85c2299892460d76e2c600502d52bfe2" },
- { nullptr, nullptr }
- };
-
- DecodeFiles(files);
-}
+INSTANTIATE_TEST_SUITE_P(NoTilesNonFrameParallel, VP9DecodeMultiThreadedTest,
+ ::testing::ValuesIn(kNoTilesNonFrameParallelFiles));
+INSTANTIATE_TEST_SUITE_P(FrameParallel, VP9DecodeMultiThreadedTest,
+ ::testing::ValuesIn(kFrameParallelFiles));
+INSTANTIATE_TEST_SUITE_P(FrameParallelResize, VP9DecodeMultiThreadedTest,
+ ::testing::ValuesIn(kFrameParallelResizeFiles));
+INSTANTIATE_TEST_SUITE_P(NonFrameParallel, VP9DecodeMultiThreadedTest,
+ ::testing::ValuesIn(kNonFrameParallelFiles));
#endif // CONFIG_WEBM_IO
INSTANTIATE_TEST_SUITE_P(Synchronous, VPxWorkerThreadTest, ::testing::Bool());