15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2014 The Chromium Authors. All rights reserved.
25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Use of this source code is governed by a BSD-style license that can be
35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// found in the LICENSE file.
45c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Implementation of a fake VideoCaptureDeviceFactory class.
65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#ifndef MEDIA_VIDEO_CAPTURE_FAKE_VIDEO_CAPTURE_DEVICE_FACTORY_H_
85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#define MEDIA_VIDEO_CAPTURE_FAKE_VIDEO_CAPTURE_DEVICE_FACTORY_H_
95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "media/video/capture/video_capture_device_factory.h"
115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace media {
135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Extension of VideoCaptureDeviceFactory to create and manipulate fake devices,
155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// not including file-based ones.
165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuclass MEDIA_EXPORT FakeVideoCaptureDeviceFactory :
175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    public VideoCaptureDeviceFactory {
185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu public:
195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  FakeVideoCaptureDeviceFactory();
205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  virtual ~FakeVideoCaptureDeviceFactory() {}
215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  virtual scoped_ptr<VideoCaptureDevice> Create(
235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      const VideoCaptureDevice::Name& device_name) OVERRIDE;
245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  virtual void GetDeviceNames(VideoCaptureDevice::Names* device_names) OVERRIDE;
255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  virtual void GetDeviceSupportedFormats(
265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      const VideoCaptureDevice::Name& device,
275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      VideoCaptureFormats* supported_formats) OVERRIDE;
285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  void set_number_of_devices(int number_of_devices) {
305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    DCHECK(thread_checker_.CalledOnValidThread());
315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    number_of_devices_ = number_of_devices;
325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  }
335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  int number_of_devices() {
345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    DCHECK(thread_checker_.CalledOnValidThread());
355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    return number_of_devices_;
365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  }
375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu private:
395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  int number_of_devices_;
405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu};
415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}  // namespace media
435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#endif  // MEDIA_VIDEO_CAPTURE_FAKE_VIDEO_CAPTURE_DEVICE_FACTORY_H_
45