From patchwork Mon Jul 13 13:24:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kieran Bingham X-Patchwork-Id: 8762 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 31EE2BD792 for ; Mon, 13 Jul 2020 13:24:59 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id D1FEF6073D; Mon, 13 Jul 2020 15:24:58 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="fdyEkr6m"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 03B08605A9 for ; Mon, 13 Jul 2020 15:24:57 +0200 (CEST) Received: from Q.local (cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net [86.31.129.233]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 303F457B; Mon, 13 Jul 2020 15:24:55 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1594646695; bh=kAsaX01WVyuH8g33teb8kEK+o9iSkdLjMdxHUcZs3b4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fdyEkr6m0k3qPzkhSD0QjhqpbF0FWsrMLHr9cm4r4z7lMzjKqGUFsRMWE8dyaMwhx GZ9Q1MnJRmJgs+VA461MGSjISAlx/XZ1FgF+ObadRxFsvAZQbEwAWw379ZivwlShes Gdokj/aJC9mDjAUfS+3z2E5wjq2es1e0d6Ki4tKg= From: Kieran Bingham To: libcamera devel Date: Mon, 13 Jul 2020 14:24:43 +0100 Message-Id: <20200713132451.2944673-2-kieran.bingham@ideasonboard.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200713132451.2944673-1-kieran.bingham@ideasonboard.com> References: <20200713132451.2944673-1-kieran.bingham@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 1/9] libcamera: pipeline: Introduce skeleton Vivid Pipeline X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Chris Ward Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Provide all of the skeleton stubs to succesfully compile and register a new Pipeline Handler for the Vivid test device. Meson must be reconfigured to ensure that this pipeline handler is included in the selected pipelines configuration, and after building, we can test that the PipelineHandler is successfully registered by listing the cameras on the system with LIBCAMERA_LOG_LEVELS enabled: """ LIBCAMERA_LOG_LEVELS=Pipeline:0 ./build-vivid/src/cam/cam -l [230:30:03.624102821] [2867886] DEBUG Pipeline pipeline_handler.cpp:680 Registered pipeline handler "PipelineHandlerVivid" Available cameras: """ Signed-off-by: Kieran Bingham --- meson_options.txt | 2 +- src/libcamera/pipeline/vivid/meson.build | 5 ++ src/libcamera/pipeline/vivid/vivid.cpp | 78 ++++++++++++++++++++++++ 3 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 src/libcamera/pipeline/vivid/meson.build create mode 100644 src/libcamera/pipeline/vivid/vivid.cpp diff --git a/meson_options.txt b/meson_options.txt index e9e815fde366..ea38f1553240 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -16,7 +16,7 @@ option('gstreamer', option('pipelines', type : 'array', - choices : ['ipu3', 'raspberrypi', 'rkisp1', 'simple', 'uvcvideo', 'vimc'], + choices : ['ipu3', 'raspberrypi', 'rkisp1', 'simple', 'uvcvideo', 'vimc', 'vivid'], description : 'Select which pipeline handlers to include') option('qcam', diff --git a/src/libcamera/pipeline/vivid/meson.build b/src/libcamera/pipeline/vivid/meson.build new file mode 100644 index 000000000000..086bb825387c --- /dev/null +++ b/src/libcamera/pipeline/vivid/meson.build @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: CC0-1.0 + +libcamera_sources += files([ + 'vivid.cpp', +]) diff --git a/src/libcamera/pipeline/vivid/vivid.cpp b/src/libcamera/pipeline/vivid/vivid.cpp new file mode 100644 index 000000000000..4418f616fe84 --- /dev/null +++ b/src/libcamera/pipeline/vivid/vivid.cpp @@ -0,0 +1,78 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* + * Copyright (C) 2020, Google Inc. + * + * vivid.cpp - Pipeline handler for the vivid capture device + */ + +#include "libcamera/internal/log.h" +#include "libcamera/internal/pipeline_handler.h" + +namespace libcamera { + +LOG_DEFINE_CATEGORY(VIVID) + +class PipelineHandlerVivid : public PipelineHandler +{ +public: + PipelineHandlerVivid(CameraManager *manager); + + CameraConfiguration *generateConfiguration(Camera *camera, + const StreamRoles &roles) override; + int configure(Camera *camera, CameraConfiguration *config) override; + + int exportFrameBuffers(Camera *camera, Stream *stream, + std::vector> *buffers) override; + + int start(Camera *camera) override; + void stop(Camera *camera) override; + + int queueRequestDevice(Camera *camera, Request *request) override; + + bool match(DeviceEnumerator *enumerator) override; +}; + +PipelineHandlerVivid::PipelineHandlerVivid(CameraManager *manager) + : PipelineHandler(manager) +{ +} + +CameraConfiguration *PipelineHandlerVivid::generateConfiguration(Camera *camera, + const StreamRoles &roles) +{ + return nullptr; +} + +int PipelineHandlerVivid::configure(Camera *camera, CameraConfiguration *config) +{ + return -1; +} + +int PipelineHandlerVivid::exportFrameBuffers(Camera *camera, Stream *stream, + std::vector> *buffers) +{ + return -1; +} + +int PipelineHandlerVivid::start(Camera *camera) +{ + return -1; +} + +void PipelineHandlerVivid::stop(Camera *camera) +{ +} + +int PipelineHandlerVivid::queueRequestDevice(Camera *camera, Request *request) +{ + return -1; +} + +bool PipelineHandlerVivid::match(DeviceEnumerator *enumerator) +{ + return false; +} + +REGISTER_PIPELINE_HANDLER(PipelineHandlerVivid); + +} /* namespace libcamera */