Update screenshare_loopback to support test duration and test clip

Setting the test duration parameter is a bug fix.

The addition of test clip parameter is a new feature for screenshare_loopback, although this already exists for video_loopback.

Bug: None
Change-Id: I7c307b07df9896456a1372fcd22cb13a25e2ca34
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/347640
Commit-Queue: Johannes Kron <kron@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42084}
diff --git a/video/screenshare_loopback.cc b/video/screenshare_loopback.cc
index 40bf9ee..21aae1f 100644
--- a/video/screenshare_loopback.cc
+++ b/video/screenshare_loopback.cc
@@ -257,6 +257,14 @@
 
 ABSL_FLAG(bool, allow_reordering, false, "Allow packet reordering to occur");
 
+ABSL_FLAG(std::string,
+          clip,
+          "",
+          "Name of the clip to show. If empty, use frame generator.");
+std::string Clip() {
+  return absl::GetFlag(FLAGS_clip);
+}
+
 // Screenshare-specific flags.
 ABSL_FLAG(int,
           min_transmit_bitrate,
@@ -331,11 +339,14 @@
   params.video[0].num_temporal_layers = NumTemporalLayers();
   params.video[0].selected_tl = SelectedTL();
   params.video[0].min_transmit_bps = MinTransmitBitrateKbps() * 1000;
+  params.video[0].clip_path = Clip();
   params.screenshare[0].enabled = true;
   params.screenshare[0].generate_slides = GenerateSlides();
   params.screenshare[0].slide_change_interval = SlideChangeInterval();
   params.screenshare[0].scroll_duration = ScrollDuration();
   params.screenshare[0].slides = Slides();
+  params.analyzer.test_label = "screenshare";
+  params.analyzer.test_durations_secs = DurationSecs();
   params.config = pipe_config;
   params.logging.rtc_event_log_name = RtcEventLogName();
   params.logging.rtp_dump_name = RtpDumpName();
diff --git a/video/video_loopback.cc b/video/video_loopback.cc
index b02184a..826936b 100644
--- a/video/video_loopback.cc
+++ b/video/video_loopback.cc
@@ -200,7 +200,6 @@
 
 ABSL_FLAG(bool, video, true, "Add video stream");
 
-// Video-specific flags.
 ABSL_FLAG(std::string,
           clip,
           "",
diff --git a/video/video_quality_test.cc b/video/video_quality_test.cc
index e305de8..b6cc765 100644
--- a/video/video_quality_test.cc
+++ b/video/video_quality_test.cc
@@ -1045,6 +1045,10 @@
         kWidth, kHeight,
         params_.screenshare[video_idx].slide_change_interval *
             params_.video[video_idx].fps);
+  } else if (!params_.video[video_idx].clip_path.empty()) {
+    frame_generator = test::CreateFromYuvFileFrameGenerator(
+        {params_.video[video_idx].clip_path}, params_.video[video_idx].width,
+        params_.video[video_idx].height, 1);
   } else {
     std::vector<std::string> slides = params_.screenshare[video_idx].slides;
     if (slides.empty()) {