Add command-line param to screenshare_loopback to specify a list of slides

BUG=none

Review-Url: https://codereview.webrtc.org/2814023003
Cr-Original-Commit-Position: refs/heads/master@{#17670}
Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc
Cr-Mirrored-Commit: 8d8185c7743f2713908a1823656493c13fc8ea67
diff --git a/video/screenshare_loopback.cc b/video/screenshare_loopback.cc
index a51274b..09a7d73 100644
--- a/video/screenshare_loopback.cc
+++ b/video/screenshare_loopback.cc
@@ -11,6 +11,7 @@
 #include <stdio.h>
 
 #include "gflags/gflags.h"
+#include "webrtc/base/stringencode.h"
 #include "webrtc/test/field_trial.h"
 #include "webrtc/test/gtest.h"
 #include "webrtc/test/run_test.h"
@@ -214,6 +215,16 @@
   return static_cast<int>(FLAGS_scroll_duration);
 }
 
+DEFINE_string(slides,
+              "",
+              "Comma-separated list of *.yuv files to display as slides.");
+std::vector<std::string> Slides() {
+  std::vector<std::string> slides;
+  std::string slides_list = FLAGS_slides;
+  rtc::tokenize(slides_list, ',', &slides);
+  return slides;
+}
+
 }  // namespace flags
 
 void Loopback() {
@@ -249,7 +260,7 @@
                   flags::EncodedFramePath(),
                   ""};
   params.screenshare = {true, flags::SlideChangeInterval(),
-      flags::ScrollDuration()};
+                        flags::ScrollDuration(), flags::Slides()};
   params.analyzer = {"screenshare", 0.0, 0.0, flags::DurationSecs(),
       flags::OutputFilename(), flags::GraphTitle()};
   params.pipe = pipe_config;
diff --git a/video/video_quality_test.cc b/video/video_quality_test.cc
index cea8af1..565506c 100644
--- a/video/video_quality_test.cc
+++ b/video/video_quality_test.cc
@@ -1505,12 +1505,13 @@
     // Setup frame generator.
     const size_t kWidth = 1850;
     const size_t kHeight = 1110;
-    std::vector<std::string> slides;
-    slides.push_back(test::ResourcePath("web_screenshot_1850_1110", "yuv"));
-    slides.push_back(test::ResourcePath("presentation_1850_1110", "yuv"));
-    slides.push_back(test::ResourcePath("photo_1850_1110", "yuv"));
-    slides.push_back(test::ResourcePath("difficult_photo_1850_1110", "yuv"));
-
+    std::vector<std::string> slides = params_.screenshare.slides;
+    if (slides.size() == 0) {
+      slides.push_back(test::ResourcePath("web_screenshot_1850_1110", "yuv"));
+      slides.push_back(test::ResourcePath("presentation_1850_1110", "yuv"));
+      slides.push_back(test::ResourcePath("photo_1850_1110", "yuv"));
+      slides.push_back(test::ResourcePath("difficult_photo_1850_1110", "yuv"));
+    }
     if (params_.screenshare.scroll_duration == 0) {
       // Cycle image every slide_change_interval seconds.
       frame_generator_ = test::FrameGenerator::CreateFromYuvFile(
diff --git a/video/video_quality_test.h b/video/video_quality_test.h
index 9e851f0..fac5e7c 100644
--- a/video/video_quality_test.h
+++ b/video/video_quality_test.h
@@ -62,6 +62,7 @@
       bool enabled;
       int32_t slide_change_interval;
       int32_t scroll_duration;
+      std::vector<std::string> slides;
     } screenshare;
     struct Analyzer {
       std::string test_label;