Simplify creation of SvcTestParameters in pc/test/svc_e2e_tests.cc

No functional changes are intended.

Bug: None
Change-Id: I361b04da5ed22e12951d8bcc1d16e4e4d00985d6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/275901
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Daniel.L (Byoungchan) Lee <daniel.l@hpcnt.com>
Cr-Commit-Position: refs/heads/main@{#38139}
diff --git a/pc/BUILD.gn b/pc/BUILD.gn
index 4962e75..9d31258 100644
--- a/pc/BUILD.gn
+++ b/pc/BUILD.gn
@@ -2711,6 +2711,7 @@
       "../api/video_codecs:video_codecs_api",
       "../call:simulated_network",
       "../modules/video_coding:webrtc_vp9",
+      "../modules/video_coding/svc:scalability_mode_util",
       "../rtc_base/containers:flat_map",
       "../system_wrappers:field_trial",
       "../test:field_trial",
diff --git a/pc/test/svc_e2e_tests.cc b/pc/test/svc_e2e_tests.cc
index 6948ab3..4e15c6c 100644
--- a/pc/test/svc_e2e_tests.cc
+++ b/pc/test/svc_e2e_tests.cc
@@ -24,6 +24,7 @@
 #include "api/video_codecs/vp9_profile.h"
 #include "call/simulated_network.h"
 #include "modules/video_coding/codecs/vp9/include/vp9.h"
+#include "modules/video_coding/svc/scalability_mode_util.h"
 #include "rtc_base/containers/flat_map.h"
 #include "system_wrappers/include/field_trial.h"
 #include "test/field_trial.h"
@@ -109,6 +110,22 @@
 };
 
 struct SvcTestParameters {
+  static SvcTestParameters Create(const std::string& codec_name,
+                                  const std::string& scalability_mode_str) {
+    absl::optional<ScalabilityMode> scalability_mode =
+        ScalabilityModeFromString(scalability_mode_str);
+    RTC_CHECK(scalability_mode.has_value())
+        << "Unsupported scalability mode: " << scalability_mode_str;
+
+    int num_spatial_layers =
+        ScalabilityModeToNumSpatialLayers(*scalability_mode);
+    int num_temporal_layers =
+        ScalabilityModeToNumTemporalLayers(*scalability_mode);
+
+    return SvcTestParameters{codec_name, scalability_mode_str,
+                             num_spatial_layers, num_temporal_layers};
+  }
+
   std::string codec_name;
   std::string scalability_mode;
   int expected_spatial_layers;
@@ -305,9 +322,9 @@
 INSTANTIATE_TEST_SUITE_P(
     SvcTestVP8,
     SvcTest,
-    Combine(Values(SvcTestParameters{kVp8CodecName, "L1T1", 1, 1},
-                   SvcTestParameters{kVp8CodecName, "L1T2", 1, 2},
-                   SvcTestParameters{kVp8CodecName, "L1T3", 1, 3}),
+    Combine(Values(SvcTestParameters::Create(kVp8CodecName, "L1T1"),
+                   SvcTestParameters::Create(kVp8CodecName, "L1T2"),
+                   SvcTestParameters::Create(kVp8CodecName, "L1T3")),
             Values(UseDependencyDescriptor::Disabled,
                    UseDependencyDescriptor::Enabled)),
     SvcTestNameGenerator);
@@ -317,9 +334,9 @@
     SvcTestH264,
     SvcTest,
     Combine(ValuesIn({
-                SvcTestParameters{kH264CodecName, "L1T1", 1, 1},
-                // SvcTestParameters{kH264CodecName, "L1T2", 1, 2},
-                // SvcTestParameters{kH264CodecName, "L1T3", 1, 3},
+                SvcTestParameters::Create(kH264CodecName, "L1T1"),
+                // SSvcTestParameters::Create(kH264CodecName, "L1T2"),
+                // SSvcTestParameters::Create(kH264CodecName, "L1T3"),
             }),
             Values(UseDependencyDescriptor::Disabled,
                    UseDependencyDescriptor::Enabled)),
@@ -333,43 +350,43 @@
     Combine(
         // TODO(bugs.webrtc.org/13960): Fix and enable remaining VP9 modes
         ValuesIn({
-            SvcTestParameters{kVp9CodecName, "L1T1", 1, 1},
-            SvcTestParameters{kVp9CodecName, "L1T2", 1, 2},
-            SvcTestParameters{kVp9CodecName, "L1T3", 1, 3},
-            SvcTestParameters{kVp9CodecName, "L2T1", 2, 1},
-            SvcTestParameters{kVp9CodecName, "L2T1h", 2, 1},
-            SvcTestParameters{kVp9CodecName, "L2T1_KEY", 2, 1},
-            SvcTestParameters{kVp9CodecName, "L2T2", 2, 2},
-            SvcTestParameters{kVp9CodecName, "L2T2h", 2, 2},
-            SvcTestParameters{kVp9CodecName, "L2T2_KEY", 2, 2},
-            SvcTestParameters{kVp9CodecName, "L2T2_KEY_SHIFT", 2, 2},
-            SvcTestParameters{kVp9CodecName, "L2T3", 2, 3},
-            SvcTestParameters{kVp9CodecName, "L2T3h", 2, 3},
-            SvcTestParameters{kVp9CodecName, "L2T3_KEY", 2, 3},
-            // SvcTestParameters{kVp9CodecName, "L2T3_KEY_SHIFT", 2, 3},
-            SvcTestParameters{kVp9CodecName, "L3T1", 3, 1},
-            SvcTestParameters{kVp9CodecName, "L3T1h", 3, 1},
-            SvcTestParameters{kVp9CodecName, "L3T1_KEY", 3, 1},
-            SvcTestParameters{kVp9CodecName, "L3T2", 3, 2},
-            SvcTestParameters{kVp9CodecName, "L3T2h", 3, 2},
-            SvcTestParameters{kVp9CodecName, "L3T2_KEY", 3, 2},
-            // SvcTestParameters{kVp9CodecName, "L3T2_KEY_SHIFT", 3, 2},
-            SvcTestParameters{kVp9CodecName, "L3T3", 3, 3},
-            SvcTestParameters{kVp9CodecName, "L3T3h", 3, 3},
-            SvcTestParameters{kVp9CodecName, "L3T3_KEY", 3, 3},
-            // SvcTestParameters{kVp9CodecName, "L3T3_KEY_SHIFT", 3, 3},
-            // SvcTestParameters{kVp9CodecName, "S2T1", 2, 1},
-            // SvcTestParameters{kVp9CodecName, "S2T1h", 2, 1},
-            // SvcTestParameters{kVp9CodecName, "S2T2", 2, 2},
-            // SvcTestParameters{kVp9CodecName, "S2T2h", 2, 2},
-            SvcTestParameters{kVp9CodecName, "S2T3", 2, 3},
-            // SvcTestParameters{kVp9CodecName, "S2T3h", 2, 3},
-            // SvcTestParameters{kVp9CodecName, "S3T1", 3, 1},
-            // SvcTestParameters{kVp9CodecName, "S3T1h", 3, 1},
-            // SvcTestParameters{kVp9CodecName, "S3T2", 3, 2},
-            // SvcTestParameters{kVp9CodecName, "S3T2h", 3, 2},
-            // SvcTestParameters{kVp9CodecName, "S3T3", 3, 3},
-            // SvcTestParameters{kVp9CodecName, "S3T3h", 3, 3},
+            SvcTestParameters::Create(kVp9CodecName, "L1T1"),
+            SvcTestParameters::Create(kVp9CodecName, "L1T2"),
+            SvcTestParameters::Create(kVp9CodecName, "L1T3"),
+            SvcTestParameters::Create(kVp9CodecName, "L2T1"),
+            SvcTestParameters::Create(kVp9CodecName, "L2T1h"),
+            SvcTestParameters::Create(kVp9CodecName, "L2T1_KEY"),
+            SvcTestParameters::Create(kVp9CodecName, "L2T2"),
+            SvcTestParameters::Create(kVp9CodecName, "L2T2h"),
+            SvcTestParameters::Create(kVp9CodecName, "L2T2_KEY"),
+            SvcTestParameters::Create(kVp9CodecName, "L2T2_KEY_SHIFT"),
+            SvcTestParameters::Create(kVp9CodecName, "L2T3"),
+            SvcTestParameters::Create(kVp9CodecName, "L2T3h"),
+            SvcTestParameters::Create(kVp9CodecName, "L2T3_KEY"),
+            // SvcTestParameters::Create(kVp9CodecName, "L2T3_KEY_SHIFT"),
+            SvcTestParameters::Create(kVp9CodecName, "L3T1"),
+            SvcTestParameters::Create(kVp9CodecName, "L3T1h"),
+            SvcTestParameters::Create(kVp9CodecName, "L3T1_KEY"),
+            SvcTestParameters::Create(kVp9CodecName, "L3T2"),
+            SvcTestParameters::Create(kVp9CodecName, "L3T2h"),
+            SvcTestParameters::Create(kVp9CodecName, "L3T2_KEY"),
+            // SvcTestParameters::Create(kVp9CodecName, "L3T2_KEY_SHIFT"),
+            SvcTestParameters::Create(kVp9CodecName, "L3T3"),
+            SvcTestParameters::Create(kVp9CodecName, "L3T3h"),
+            SvcTestParameters::Create(kVp9CodecName, "L3T3_KEY"),
+            // SvcTestParameters::Create(kVp9CodecName, "L3T3_KEY_SHIFT"),
+            // SvcTestParameters::Create(kVp9CodecName, "S2T1"),
+            // SvcTestParameters::Create(kVp9CodecName, "S2T1h"),
+            // SvcTestParameters::Create(kVp9CodecName, "S2T2"),
+            // SvcTestParameters::Create(kVp9CodecName, "S2T2h"),
+            SvcTestParameters::Create(kVp9CodecName, "S2T3"),
+            // SvcTestParameters::Create(kVp9CodecName, "S2T3h"),
+            // SvcTestParameters::Create(kVp9CodecName, "S3T1"),
+            // SvcTestParameters::Create(kVp9CodecName, "S3T1h"),
+            // SvcTestParameters::Create(kVp9CodecName, "S3T2"),
+            // SvcTestParameters::Create(kVp9CodecName, "S3T2h"),
+            // SvcTestParameters::Create(kVp9CodecName, "S3T3"),
+            // SvcTestParameters::Create(kVp9CodecName, "S3T3h"),
         }),
         Values(UseDependencyDescriptor::Disabled,
                UseDependencyDescriptor::Enabled)),
@@ -379,43 +396,43 @@
     SvcTestAV1,
     SvcTest,
     Combine(ValuesIn({
-                SvcTestParameters{kAv1CodecName, "L1T1", 1, 1},
-                SvcTestParameters{kAv1CodecName, "L1T2", 1, 2},
-                SvcTestParameters{kAv1CodecName, "L1T3", 1, 3},
-                SvcTestParameters{kAv1CodecName, "L2T1", 2, 1},
-                SvcTestParameters{kAv1CodecName, "L2T1h", 2, 1},
-                SvcTestParameters{kAv1CodecName, "L2T1_KEY", 2, 1},
-                SvcTestParameters{kAv1CodecName, "L2T2", 2, 2},
-                SvcTestParameters{kAv1CodecName, "L2T2h", 2, 2},
-                SvcTestParameters{kAv1CodecName, "L2T2_KEY", 2, 2},
-                SvcTestParameters{kAv1CodecName, "L2T2_KEY_SHIFT", 2, 2},
-                SvcTestParameters{kAv1CodecName, "L2T3", 2, 3},
-                SvcTestParameters{kAv1CodecName, "L2T3h", 2, 3},
-                SvcTestParameters{kAv1CodecName, "L2T3_KEY", 2, 3},
-                // SvcTestParameters{kAv1CodecName, "L2T3_KEY_SHIFT", 2, 3},
-                SvcTestParameters{kAv1CodecName, "L3T1", 3, 1},
-                SvcTestParameters{kAv1CodecName, "L3T1h", 3, 1},
-                SvcTestParameters{kAv1CodecName, "L3T1_KEY", 3, 1},
-                SvcTestParameters{kAv1CodecName, "L3T2", 3, 2},
-                SvcTestParameters{kAv1CodecName, "L3T2h", 3, 2},
-                SvcTestParameters{kAv1CodecName, "L3T2_KEY", 3, 2},
-                // SvcTestParameters{kAv1CodecName, "L3T2_KEY_SHIFT", 3, 2},
-                SvcTestParameters{kAv1CodecName, "L3T3", 3, 3},
-                SvcTestParameters{kAv1CodecName, "L3T3h", 3, 3},
-                SvcTestParameters{kAv1CodecName, "L3T3_KEY", 3, 3},
-                // SvcTestParameters{kAv1CodecName, "L3T3_KEY_SHIFT", 3, 3},
-                // SvcTestParameters{kAv1CodecName, "S2T1", 2, 1},
-                // SvcTestParameters{kAv1CodecName, "S2T1h", 2, 1},
-                // SvcTestParameters{kAv1CodecName, "S2T2", 2, 2},
-                // SvcTestParameters{kAv1CodecName, "S2T2h", 2, 2},
-                // SvcTestParameters{kAv1CodecName, "S2T3", 2, 3},
-                // SvcTestParameters{kAv1CodecName, "S2T3h", 2, 3},
-                // SvcTestParameters{kAv1CodecName, "S3T1", 3, 1},
-                // SvcTestParameters{kAv1CodecName, "S3T1h", 3, 1},
-                // SvcTestParameters{kAv1CodecName, "S3T2", 3, 2},
-                // SvcTestParameters{kAv1CodecName, "S3T2h", 3, 2},
-                // SvcTestParameters{kAv1CodecName, "S3T3", 3, 3},
-                // SvcTestParameters{kAv1CodecName, "S3T3h", 3, 3},
+                SvcTestParameters::Create(kAv1CodecName, "L1T1"),
+                SvcTestParameters::Create(kAv1CodecName, "L1T2"),
+                SvcTestParameters::Create(kAv1CodecName, "L1T3"),
+                SvcTestParameters::Create(kAv1CodecName, "L2T1"),
+                SvcTestParameters::Create(kAv1CodecName, "L2T1h"),
+                SvcTestParameters::Create(kAv1CodecName, "L2T1_KEY"),
+                SvcTestParameters::Create(kAv1CodecName, "L2T2"),
+                SvcTestParameters::Create(kAv1CodecName, "L2T2h"),
+                SvcTestParameters::Create(kAv1CodecName, "L2T2_KEY"),
+                SvcTestParameters::Create(kAv1CodecName, "L2T2_KEY_SHIFT"),
+                SvcTestParameters::Create(kAv1CodecName, "L2T3"),
+                SvcTestParameters::Create(kAv1CodecName, "L2T3h"),
+                SvcTestParameters::Create(kAv1CodecName, "L2T3_KEY"),
+                // SvcTestParameters::Create(kAv1CodecName, "L2T3_KEY_SHIFT"),
+                SvcTestParameters::Create(kAv1CodecName, "L3T1"),
+                SvcTestParameters::Create(kAv1CodecName, "L3T1h"),
+                SvcTestParameters::Create(kAv1CodecName, "L3T1_KEY"),
+                SvcTestParameters::Create(kAv1CodecName, "L3T2"),
+                SvcTestParameters::Create(kAv1CodecName, "L3T2h"),
+                SvcTestParameters::Create(kAv1CodecName, "L3T2_KEY"),
+                // SvcTestParameters::Create(kAv1CodecName, "L3T2_KEY_SHIFT"),
+                SvcTestParameters::Create(kAv1CodecName, "L3T3"),
+                SvcTestParameters::Create(kAv1CodecName, "L3T3h"),
+                SvcTestParameters::Create(kAv1CodecName, "L3T3_KEY"),
+                // SvcTestParameters::Create(kAv1CodecName, "L3T3_KEY_SHIFT"),
+                // SvcTestParameters::Create(kAv1CodecName, "S2T1"),
+                // SvcTestParameters::Create(kAv1CodecName, "S2T1h"),
+                // SvcTestParameters::Create(kAv1CodecName, "S2T2"),
+                // SvcTestParameters::Create(kAv1CodecName, "S2T2h"),
+                // SvcTestParameters::Create(kAv1CodecName, "S2T3"),
+                // SvcTestParameters::Create(kAv1CodecName, "S2T3h"),
+                // SvcTestParameters::Create(kAv1CodecName, "S3T1"),
+                // SvcTestParameters::Create(kAv1CodecName, "S3T1h"),
+                // SvcTestParameters::Create(kAv1CodecName, "S3T2"),
+                // SvcTestParameters::Create(kAv1CodecName, "S3T2h"),
+                // SvcTestParameters::Create(kAv1CodecName, "S3T3"),
+                // SvcTestParameters::Create(kAv1CodecName, "S3T3h"),
             }),
             Values(UseDependencyDescriptor::Enabled)),
     SvcTestNameGenerator);