/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* * Copyright (C) 2018, Google Inc. * * camera_manager.h - Camera management */ #ifndef __LIBCAMERA_CAMERA_MANAGER_H__ #define __LIBCAMERA_CAMERA_MANAGER_H__ #include #include #include #include #include #include namespace libcamera { class Camera; class EventDispatcher; class CameraManager : public Object { public: CameraManager(); CameraManager(const CameraManager &) = delete; CameraManager &operator=(const CameraManager &) = delete; ~CameraManager(); int start(); void stop(); std::vector> cameras() const; std::shared_ptr get(const std::string &name); std::shared_ptr get(dev_t devnum); void addCamera(std::shared_ptr camera, const std::vector &devnums); void removeCamera(std::shared_ptr camera); static const std::string &version() { return version_; } void setEventDispatcher(std::unique_ptr dispatcher); EventDispatcher *eventDispatcher(); Signal> cameraAdded; Signal> cameraRemoved; private: static const std::string version_; static CameraManager *self_; class Private; std::unique_ptr p_; }; } /* namespace libcamera */ #endif /* __LIBCAMERA_CAMERA_MANAGER_H__ */