diff --git a/AUTHORS b/AUTHORS
index c11e96d..4b387ed 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -46,6 +46,7 @@
 Silviu Caragea <silviu.cpp@gmail.com>
 Stefan Gula <steweg@gmail.com>
 Steve Reid <sreid@sea-to-sky.net>
+Tarun Chawla <trnkumarchawla@gmail.com>
 Vladimir Beloborodov <VladimirTechMan@gmail.com>
 Vicken Simonian <vsimon@gmail.com>
 Victor Costan <costan@gmail.com>
diff --git a/webrtc/test/vcm_capturer.cc b/webrtc/test/vcm_capturer.cc
index 69c2b6a..6418641 100644
--- a/webrtc/test/vcm_capturer.cc
+++ b/webrtc/test/vcm_capturer.cc
@@ -13,21 +13,23 @@
 #include "webrtc/base/logging.h"
 #include "webrtc/modules/video_capture/video_capture_factory.h"
 #include "webrtc/video_send_stream.h"
-
 namespace webrtc {
 namespace test {
 
 VcmCapturer::VcmCapturer() : started_(false), sink_(nullptr), vcm_(nullptr) {}
 
-bool VcmCapturer::Init(size_t width, size_t height, size_t target_fps) {
+bool VcmCapturer::Init(size_t width,
+                       size_t height,
+                       size_t target_fps,
+                       size_t capture_device_index) {
   std::unique_ptr<VideoCaptureModule::DeviceInfo> device_info(
       VideoCaptureFactory::CreateDeviceInfo());
 
   char device_name[256];
   char unique_name[256];
-  if (device_info->GetDeviceName(0, device_name, sizeof(device_name),
-                                 unique_name, sizeof(unique_name)) !=
-      0) {
+  if (device_info->GetDeviceName(static_cast<uint32_t>(capture_device_index),
+                                 device_name, sizeof(device_name), unique_name,
+                                 sizeof(unique_name)) != 0) {
     Destroy();
     return false;
   }
@@ -54,9 +56,10 @@
 
 VcmCapturer* VcmCapturer::Create(size_t width,
                                  size_t height,
-                                 size_t target_fps) {
+                                 size_t target_fps,
+                                 size_t capture_device_index) {
   std::unique_ptr<VcmCapturer> vcm_capturer(new VcmCapturer());
-  if (!vcm_capturer->Init(width, height, target_fps)) {
+  if (!vcm_capturer->Init(width, height, target_fps, capture_device_index)) {
     LOG(LS_WARNING) << "Failed to create VcmCapturer(w = " << width
                     << ", h = " << height << ", fps = " << target_fps << ")";
     return nullptr;
diff --git a/webrtc/test/vcm_capturer.h b/webrtc/test/vcm_capturer.h
index 5e40c2b..08e8444 100644
--- a/webrtc/test/vcm_capturer.h
+++ b/webrtc/test/vcm_capturer.h
@@ -26,7 +26,10 @@
     : public VideoCapturer,
       public rtc::VideoSinkInterface<VideoFrame> {
  public:
-  static VcmCapturer* Create(size_t width, size_t height, size_t target_fps);
+  static VcmCapturer* Create(size_t width,
+                             size_t height,
+                             size_t target_fps,
+                             size_t capture_device_index);
   virtual ~VcmCapturer();
 
   void Start() override;
@@ -39,7 +42,10 @@
 
  private:
   VcmCapturer();
-  bool Init(size_t width, size_t height, size_t target_fps);
+  bool Init(size_t width,
+            size_t height,
+            size_t target_fps,
+            size_t capture_device_index);
   void Destroy();
 
   rtc::CriticalSection crit_;
diff --git a/webrtc/video/video_loopback.cc b/webrtc/video/video_loopback.cc
index ec206a8..6c2a163 100644
--- a/webrtc/video/video_loopback.cc
+++ b/webrtc/video/video_loopback.cc
@@ -35,6 +35,11 @@
   return static_cast<int>(FLAGS_fps);
 }
 
+DEFINE_int32(capture_device_index, 0, "Capture device to select");
+size_t GetCaptureDevice() {
+  return static_cast<size_t>(FLAGS_capture_device_index);
+}
+
 DEFINE_int32(min_bitrate, 50, "Call and stream min bitrate in kbps.");
 int MinBitrateKbps() {
   return static_cast<int>(FLAGS_min_bitrate);
@@ -259,7 +264,8 @@
                   flags::FLAGS_use_ulpfec,
                   flags::FLAGS_use_flexfec,
                   flags::EncodedFramePath(),
-                  flags::Clip()};
+                  flags::Clip(),
+                  flags::GetCaptureDevice()};
   params.audio = {flags::FLAGS_audio, flags::FLAGS_audio_video_sync,
       flags::FLAGS_audio_dtx};
   params.screenshare.enabled = false;
diff --git a/webrtc/video/video_quality_test.cc b/webrtc/video/video_quality_test.cc
index 86d61d6..76c743c 100644
--- a/webrtc/video/video_quality_test.cc
+++ b/webrtc/video/video_quality_test.cc
@@ -1566,7 +1566,8 @@
   } else {
     if (params_.video.clip_name.empty()) {
       video_capturer_.reset(test::VcmCapturer::Create(
-          params_.video.width, params_.video.height, params_.video.fps));
+          params_.video.width, params_.video.height, params_.video.fps,
+          params_.video.capture_device_index));
       if (!video_capturer_) {
         // Failed to get actual camera, use chroma generator as backup.
         video_capturer_.reset(test::FrameGeneratorCapturer::Create(
diff --git a/webrtc/video/video_quality_test.h b/webrtc/video/video_quality_test.h
index fac5e7c..5cf54bd 100644
--- a/webrtc/video/video_quality_test.h
+++ b/webrtc/video/video_quality_test.h
@@ -52,6 +52,7 @@
       bool flexfec;
       std::string encoded_frame_base_path;
       std::string clip_name;
+      size_t capture_device_index;
     } video;
     struct Audio {
       bool enabled;
