/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * Copyright (C) 2019, Google Inc. * * Camera capture session */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include "../common/options.h" class CaptureScript; class FrameSink; class CameraSession { public: CameraSession(libcamera::CameraManager *cm, const std::string &cameraId, unsigned int cameraIndex, const OptionsParser::Options &options); ~CameraSession(); bool isValid() const { return config_ != nullptr; } const OptionsParser::Options &options() { return options_; } libcamera::Camera *camera() { return camera_.get(); } libcamera::CameraConfiguration *config() { return config_.get(); } void listControls() const; void listProperties() const; void infoConfiguration() const; int start(); void stop(); libcamera::Signal<> captureDone; private: int startCapture(); int queueRequest(libcamera::Request *request); void requestComplete(libcamera::Request *request); void processRequest(libcamera::Request *request); void sinkRelease(libcamera::Request *request); const OptionsParser::Options &options_; std::shared_ptr camera_; std::unique_ptr config_; std::unique_ptr script_; std::map streamNames_; std::unique_ptr sink_; unsigned int cameraIndex_; uint64_t last_; unsigned int queueCount_; unsigned int captureCount_; unsigned int captureLimit_; bool printMetadata_; std::unique_ptr allocator_; std::vector> requests_; }; > Jacopo Mondi's clone of libcameragit repository hosting on libcamera.org
summaryrefslogtreecommitdiff
blob: f28cbd8d2c6cbb4d77df3c7fb6403a6e63c08707 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13