/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * Copyright (C) 2020-2021, Google Inc. * * simple_capture.h - Simple capture helper */ #ifndef __LC_COMPLIANCE_SIMPLE_CAPTURE_H__ #define __LC_COMPLIANCE_SIMPLE_CAPTURE_H__ #include #include #include "../cam/event_loop.h" class SimpleCapture { public: void configure(libcamera::StreamRole role); protected: SimpleCapture(std::shared_ptr camera); virtual ~SimpleCapture(); void start(); void stop(); virtual void requestComplete(libcamera::Request *request) = 0; EventLoop *loop_; std::shared_ptr camera_; std::unique_ptr allocator_; std::unique_ptr config_; }; class SimpleCaptureBalanced : public SimpleCapture { public: SimpleCaptureBalanced(std::shared_ptr camera); void capture(unsigned int numRequests); private: int queueRequest(libcamera::Request *request); void requestComplete(libcamera::Request *request) override; unsigned int queueCount_; unsigned int captureCount_; unsigned int captureLimit_; }; class SimpleCaptureUnbalanced : public SimpleCapture { public: SimpleCaptureUnbalanced(std::shared_ptr camera); void capture(unsigned int numRequests); private: void requestComplete(libcamera::Request *request) override; unsigned int captureCount_; unsigned int captureLimit_; }; #endif /* __LC_COMPLIANCE_SIMPLE_CAPTURE_H__ */