// Copyright 2014 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MEDIA_CAPTURE_VIDEO_VIDEO_CAPTURE_DEVICE_FACTORY_H_ #define MEDIA_CAPTURE_VIDEO_VIDEO_CAPTURE_DEVICE_FACTORY_H_ #include "base/memory/scoped_refptr.h" #include "base/task/single_thread_task_runner.h" #include "base/threading/thread_checker.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "gpu/command_buffer/client/gpu_memory_buffer_manager.h" #include "media/capture/video/video_capture_device.h" #include "media/capture/video/video_capture_device_info.h" #if BUILDFLAG(IS_WIN) #include "media/base/win/dxgi_device_manager.h" #endif namespace media { // VideoCaptureErrorOrDevice stores the result of CreateDevice function. This is // designed to pass information such that when device creation fails, instead of // returning a null_ptr, this would store an error_code explaining why the // creation failed. class CAPTURE_EXPORT VideoCaptureErrorOrDevice { … }; // VideoCaptureDeviceFactory is the base class for creation of video capture // devices in the different platforms. VCDFs are created by MediaStreamManager // on UI thread and plugged into VideoCaptureManager, who owns and operates them // in Device Thread (a.k.a. Audio Thread). // Typical operation is to first call GetDevicesInfo() to obtain information // about available devices. The obtained descriptors can then be used to either // obtain the supported formats of a device using GetSupportedFormats(), or to // create an instance of VideoCaptureDevice for the device using CreateDevice(). // TODO(chfremer): Add a layer on top of the platform-specific implementations // that uses strings instead of descriptors as keys for accessing devices. // crbug.com/665065 class CAPTURE_EXPORT VideoCaptureDeviceFactory { … }; } // namespace media #endif // MEDIA_CAPTURE_VIDEO_VIDEO_CAPTURE_DEVICE_FACTORY_H_