/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * Copyright (C) 2019, Google Inc. * * camera_session.h - Camera capture session */ #ifndef __CAM_CAMERA_SESSION_H__ #define __CAM_CAMERA_SESSION_H__ #include #include #include #include #include #include #include #include #include #include "buffer_writer.h" #include "options.h" class CameraSession { public: CameraSession(std::shared_ptr camera, const OptionsParser::Options &options); bool isValid() const { return config_ != nullptr; } libcamera::CameraConfiguration *config() { return config_.get(); } int start(const OptionsParser::Options &options); void stop(); libcamera::Signal<> captureDone; private: int startCapture(); int queueRequest(libcamera::Request *request); void requestComplete(libcamera::Request *request); void processRequest(libcamera::Request *request); std::shared_ptr camera_; std::unique_ptr config_; std::map streamName_; std::unique_ptr writer_; uint64_t last_; unsigned int queueCount_; unsigned int captureCount_; unsigned int captureLimit_; bool printMetadata_; std::unique_ptr allocator_; std::vector> requests_; }; #endif /* __CAM_CAMERA_SESSION_H__ */