diff options
Diffstat (limited to 'src/cam/kms_sink.h')
-rw-r--r-- | src/cam/kms_sink.h | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/src/cam/kms_sink.h b/src/cam/kms_sink.h deleted file mode 100644 index e2c618a1..00000000 --- a/src/cam/kms_sink.h +++ /dev/null @@ -1,83 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-or-later */ -/* - * Copyright (C) 2021, Ideas on Board Oy - * - * kms_sink.h - KMS Sink - */ - -#pragma once - -#include <list> -#include <memory> -#include <mutex> -#include <optional> -#include <string> -#include <utility> - -#include <libcamera/base/signal.h> - -#include <libcamera/geometry.h> -#include <libcamera/pixel_format.h> - -#include "drm.h" -#include "frame_sink.h" - -class KMSSink : public FrameSink -{ -public: - KMSSink(const std::string &connectorName); - - void mapBuffer(libcamera::FrameBuffer *buffer) override; - - int configure(const libcamera::CameraConfiguration &config) override; - int start() override; - int stop() override; - - bool processRequest(libcamera::Request *request) override; - -private: - class Request - { - public: - Request(std::unique_ptr<DRM::AtomicRequest> drmRequest, - libcamera::Request *camRequest) - : drmRequest_(std::move(drmRequest)), camRequest_(camRequest) - { - } - - std::unique_ptr<DRM::AtomicRequest> drmRequest_; - libcamera::Request *camRequest_; - }; - - int selectPipeline(const libcamera::PixelFormat &format); - int configurePipeline(const libcamera::PixelFormat &format); - bool testModeSet(DRM::FrameBuffer *drmBuffer, - const libcamera::Rectangle &src, - const libcamera::Rectangle &dst); - bool setupComposition(DRM::FrameBuffer *drmBuffer); - - void requestComplete(DRM::AtomicRequest *request); - - DRM::Device dev_; - - const DRM::Connector *connector_; - const DRM::Crtc *crtc_; - const DRM::Plane *plane_; - const DRM::Mode *mode_; - - libcamera::PixelFormat format_; - libcamera::Size size_; - unsigned int stride_; - std::optional<unsigned int> colorEncoding_; - std::optional<unsigned int> colorRange_; - - libcamera::Rectangle src_; - libcamera::Rectangle dst_; - - std::map<libcamera::FrameBuffer *, std::unique_ptr<DRM::FrameBuffer>> buffers_; - - std::mutex lock_; - std::unique_ptr<Request> pending_; - std::unique_ptr<Request> queued_; - std::unique_ptr<Request> active_; -}; |