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