1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Implementation of a fake VideoCaptureDeviceFactory class.
6
7#ifndef MEDIA_VIDEO_CAPTURE_FAKE_VIDEO_CAPTURE_DEVICE_FACTORY_H_
8#define MEDIA_VIDEO_CAPTURE_FAKE_VIDEO_CAPTURE_DEVICE_FACTORY_H_
9
10#include "media/video/capture/video_capture_device_factory.h"
11
12namespace media {
13
14// Extension of VideoCaptureDeviceFactory to create and manipulate fake devices,
15// not including file-based ones.
16class MEDIA_EXPORT FakeVideoCaptureDeviceFactory :
17    public VideoCaptureDeviceFactory {
18 public:
19  FakeVideoCaptureDeviceFactory();
20  virtual ~FakeVideoCaptureDeviceFactory() {}
21
22  virtual scoped_ptr<VideoCaptureDevice> Create(
23      const VideoCaptureDevice::Name& device_name) OVERRIDE;
24  virtual void GetDeviceNames(VideoCaptureDevice::Names* device_names) OVERRIDE;
25  virtual void GetDeviceSupportedFormats(
26      const VideoCaptureDevice::Name& device,
27      VideoCaptureFormats* supported_formats) OVERRIDE;
28
29  void set_number_of_devices(int number_of_devices) {
30    DCHECK(thread_checker_.CalledOnValidThread());
31    number_of_devices_ = number_of_devices;
32  }
33  int number_of_devices() {
34    DCHECK(thread_checker_.CalledOnValidThread());
35    return number_of_devices_;
36  }
37
38 private:
39  int number_of_devices_;
40};
41
42}  // namespace media
43
44#endif  // MEDIA_VIDEO_CAPTURE_FAKE_VIDEO_CAPTURE_DEVICE_FACTORY_H_
45