Files
external_libcamera/include/libcamera/camera_manager.h
Laurent Pinchart 525b19c410 libcamera: Add thread support
The new Thread class wraps std::thread in order to integrate it with the
Object, Signal and EventDispatcher classes. By default new threads run
an internal event loop, and their run() method can be overloaded to
provide a custom thread loop.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
2019-07-11 09:47:16 +03:00

55 lines
1.3 KiB
C++

/* 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 <memory>
#include <string>
#include <vector>
namespace libcamera {
class Camera;
class DeviceEnumerator;
class EventDispatcher;
class PipelineHandler;
class CameraManager
{
public:
int start();
void stop();
const std::vector<std::shared_ptr<Camera>> &cameras() const { return cameras_; }
std::shared_ptr<Camera> get(const std::string &name);
void addCamera(std::shared_ptr<Camera> camera);
void removeCamera(Camera *camera);
static CameraManager *instance();
static const std::string &version() { return version_; }
void setEventDispatcher(std::unique_ptr<EventDispatcher> dispatcher);
EventDispatcher *eventDispatcher();
private:
CameraManager();
CameraManager(const CameraManager &) = delete;
CameraManager &operator=(const CameraManager &) = delete;
~CameraManager();
std::unique_ptr<DeviceEnumerator> enumerator_;
std::vector<std::shared_ptr<PipelineHandler>> pipes_;
std::vector<std::shared_ptr<Camera>> cameras_;
static const std::string version_;
};
} /* namespace libcamera */
#endif /* __LIBCAMERA_CAMERA_MANAGER_H__ */