/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * Copyright (C) 2020-2021, Google Inc. * * Simple capture helper */ #pragma once #include #include #include #include "../common/event_loop.h" class Capture { public: Capture(std::shared_ptr camera); ~Capture(); void configure(libcamera::StreamRole role); void run(unsigned int captureLimit, std::optional queueLimit = {}); private: LIBCAMERA_DISABLE_COPY_AND_MOVE(Capture) void start(); void stop(); int queueRequest(libcamera::Request *request); void requestComplete(libcamera::Request *request); std::shared_ptr camera_; libcamera::FrameBufferAllocator allocator_; std::unique_ptr config_; std::vector> requests_; EventLoop *loop_ = nullptr; unsigned int captureLimit_ = 0; std::optional queueLimit_; unsigned int captureCount_ = 0; unsigned int queueCount_ = 0; };