Formatting of WebRTC-Vp9InterLayerPred field trial.

Use conventional style ../{Default|Disabled|Enabled} with parameter
inter_layer_pred_mode:{off|on|onkeypic} which maps directly to
InterLayerPredMode enum.

Bug: chromium:949536
Change-Id: If34e789b031d0db3eb2748b0b824492237ad5187
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/137800
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28008}
diff --git a/media/engine/webrtc_video_engine.cc b/media/engine/webrtc_video_engine.cc
index 1f5e302..580b0a7 100644
--- a/media/engine/webrtc_video_engine.cc
+++ b/media/engine/webrtc_video_engine.cc
@@ -29,6 +29,7 @@
 #include "media/engine/webrtc_media_engine.h"
 #include "media/engine/webrtc_voice_engine.h"
 #include "rtc_base/copy_on_write_buffer.h"
+#include "rtc_base/experiments/field_trial_parser.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/strings/string_builder.h"
 #include "rtc_base/time_utils.h"
@@ -387,15 +388,18 @@
     // Ensure frame dropping is always enabled.
     RTC_DCHECK(vp9_settings.frameDroppingOn);
     if (!is_screencast) {
-      const std::string group =
-          webrtc::field_trial::FindFullName("WebRTC-Vp9InterLayerPred");
-      int mode;
-      if (!group.empty() && sscanf(group.c_str(), "%d", &mode) == 1 &&
-          (mode == static_cast<int>(webrtc::InterLayerPredMode::kOn) ||
-           mode == static_cast<int>(webrtc::InterLayerPredMode::kOnKeyPic) ||
-           mode == static_cast<int>(webrtc::InterLayerPredMode::kOff))) {
-        vp9_settings.interLayerPred =
-            static_cast<webrtc::InterLayerPredMode>(mode);
+      webrtc::FieldTrialFlag interlayer_pred_experiment_enabled =
+          webrtc::FieldTrialFlag("Enabled");
+      webrtc::FieldTrialEnum<webrtc::InterLayerPredMode> inter_layer_pred_mode(
+          "inter_layer_pred_mode", webrtc::InterLayerPredMode::kOnKeyPic,
+          {{"off", webrtc::InterLayerPredMode::kOff},
+           {"on", webrtc::InterLayerPredMode::kOn},
+           {"onkeypic", webrtc::InterLayerPredMode::kOnKeyPic}});
+      webrtc::ParseFieldTrial(
+          {&interlayer_pred_experiment_enabled, &inter_layer_pred_mode},
+          webrtc::field_trial::FindFullName("WebRTC-Vp9InterLayerPred"));
+      if (interlayer_pred_experiment_enabled) {
+        vp9_settings.interLayerPred = inter_layer_pred_mode;
       } else {
         // Limit inter-layer prediction to key pictures by default.
         vp9_settings.interLayerPred = webrtc::InterLayerPredMode::kOnKeyPic;
diff --git a/media/engine/webrtc_video_engine_unittest.cc b/media/engine/webrtc_video_engine_unittest.cc
index b6deb57..4e7a8b6 100644
--- a/media/engine/webrtc_video_engine_unittest.cc
+++ b/media/engine/webrtc_video_engine_unittest.cc
@@ -3215,7 +3215,7 @@
       : Vp9SettingsTest(::testing::get<0>(GetParam())),
         num_spatial_layers_(::testing::get<1>(GetParam())),
         num_temporal_layers_(::testing::get<2>(GetParam())),
-        inter_layer_pred_(::testing::get<3>(GetParam())) {}
+        inter_layer_pred_mode_(::testing::get<3>(GetParam())) {}
 
   void VerifySettings(int num_spatial_layers,
                       int num_temporal_layers,
@@ -3236,18 +3236,19 @@
     ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set.";
     EXPECT_EQ(num_spatial_layers, vp9_settings.numberOfSpatialLayers);
     EXPECT_EQ(num_temporal_layers, vp9_settings.numberOfTemporalLayers);
-    EXPECT_EQ(inter_layer_pred_, vp9_settings.interLayerPred);
+    EXPECT_EQ(inter_layer_pred_mode_, vp9_settings.interLayerPred);
 
     EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, nullptr, nullptr));
   }
 
   const uint8_t num_spatial_layers_;
   const uint8_t num_temporal_layers_;
-  const webrtc::InterLayerPredMode inter_layer_pred_;
+  const webrtc::InterLayerPredMode inter_layer_pred_mode_;
 };
 
 TEST_P(Vp9SettingsTestWithFieldTrial, VerifyCodecSettings) {
-  VerifySettings(num_spatial_layers_, num_temporal_layers_, inter_layer_pred_);
+  VerifySettings(num_spatial_layers_, num_temporal_layers_,
+                 inter_layer_pred_mode_);
 }
 
 INSTANTIATE_TEST_SUITE_P(
@@ -3263,18 +3264,29 @@
                         2,
                         3,
                         webrtc::InterLayerPredMode::kOnKeyPic),
-        std::make_tuple("WebRTC-Vp9InterLayerPred/0/",
+        std::make_tuple("WebRTC-Vp9InterLayerPred/Default/",
                         1,
                         1,
-                        webrtc::InterLayerPredMode::kOff),
-        std::make_tuple("WebRTC-Vp9InterLayerPred/1/",
+                        webrtc::InterLayerPredMode::kOnKeyPic),
+        std::make_tuple("WebRTC-Vp9InterLayerPred/Disabled/",
                         1,
                         1,
-                        webrtc::InterLayerPredMode::kOn),
-        std::make_tuple("WebRTC-Vp9InterLayerPred/2/",
-                        1,
-                        1,
-                        webrtc::InterLayerPredMode::kOnKeyPic)));
+                        webrtc::InterLayerPredMode::kOnKeyPic),
+        std::make_tuple(
+            "WebRTC-Vp9InterLayerPred/Enabled,inter_layer_pred_mode:off/",
+            1,
+            1,
+            webrtc::InterLayerPredMode::kOff),
+        std::make_tuple(
+            "WebRTC-Vp9InterLayerPred/Enabled,inter_layer_pred_mode:on/",
+            1,
+            1,
+            webrtc::InterLayerPredMode::kOn),
+        std::make_tuple(
+            "WebRTC-Vp9InterLayerPred/Enabled,inter_layer_pred_mode:onkeypic/",
+            1,
+            1,
+            webrtc::InterLayerPredMode::kOnKeyPic)));
 
 TEST_F(WebRtcVideoChannelTest, VerifyMinBitrate) {
   std::vector<webrtc::VideoStream> streams = AddSendStream()->GetVideoStreams();