{"id":8769,"url":"https://patchwork.libcamera.org/api/patches/8769/?format=json","web_url":"https://patchwork.libcamera.org/patch/8769/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20200713132451.2944673-9-kieran.bingham@ideasonboard.com>","date":"2020-07-13T13:24:50","name":"[libcamera-devel,8/9] libcamera: pipeline: vivid: Initialise key controls","commit_ref":null,"pull_url":null,"state":"awaiting-upstream","archived":false,"hash":"a0a196831e37388622c8f21e5c3ea53542e5c317","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/?format=json","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/8769/mbox/","series":[{"id":1102,"url":"https://patchwork.libcamera.org/api/series/1102/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=1102","date":"2020-07-13T13:24:42","name":"Introduce a new PipelineHandler","version":1,"mbox":"https://patchwork.libcamera.org/series/1102/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/8769/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/8769/checks/","tags":{},"headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id BF6A4BDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 13 Jul 2020 13:25:04 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8C80C60745;\n\tMon, 13 Jul 2020 15:25:04 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 53F0B60740\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 13 Jul 2020 15:24:59 +0200 (CEST)","from Q.local (cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net\n\t[86.31.129.233])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id DF42057B;\n\tMon, 13 Jul 2020 15:24:58 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"UuKeXYsd\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1594646699;\n\tbh=rBrgUfxGxROgzezk9eechC2Ugx8cD+sUntxNaaFrfQY=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=UuKeXYsdMdOft8VjoX59v+ngAfoShUhRwI1goFIFOs87QxS2mtO+Mphva7BEfQWPe\n\tSfIyWRu2g8ZY2IrWQpF2uSGW3Oxmmm1tgX3fFpHFcr/HWiydSVBdwcmIL64ATSOtHD\n\tA5sR1+IvGUlp6nrIpoDVXYzQMk3z1H9bWnr5MbWU=","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"libcamera devel <libcamera-devel@lists.libcamera.org>","Date":"Mon, 13 Jul 2020 14:24:50 +0100","Message-Id":"<20200713132451.2944673-9-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 8/9] libcamera: pipeline: vivid:\n\tInitialise key controls","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"Chris Ward <chris@gregariousmammal.com>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"The VIVID pipeline handler retains state globally of it's controls.\nEnsure that when we configure this specific pipeline we set initial\nparameters on the device that suit our (specific) needs.\n\nThis introduces how controls can be set directly on a device, however\nunder normal circumstances controls should usually be set from libcamera\ncontrols as part of a request. These are VIVID specific only.\n\nSigned-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n---\n src/libcamera/pipeline/vivid/vivid.cpp | 31 ++++++++++++++++++++++++++\n 1 file changed, 31 insertions(+)","diff":"diff --git a/src/libcamera/pipeline/vivid/vivid.cpp b/src/libcamera/pipeline/vivid/vivid.cpp\nindex 4362e73f49a5..1744d78f2f28 100644\n--- a/src/libcamera/pipeline/vivid/vivid.cpp\n+++ b/src/libcamera/pipeline/vivid/vivid.cpp\n@@ -14,6 +14,18 @@\n #include \"libcamera/internal/pipeline_handler.h\"\n #include \"libcamera/internal/v4l2_videodevice.h\"\n \n+#define VIVID_CID_VIVID_BASE            (0x00f00000 | 0xf000)\n+#define VIVID_CID_VIVID_CLASS           (0x00f00000 | 1)\n+#define VIVID_CID_TEST_PATTERN          (VIVID_CID_VIVID_BASE + 0)\n+#define VIVID_CID_OSD_TEXT_MODE         (VIVID_CID_VIVID_BASE + 1)\n+#define VIVID_CID_HOR_MOVEMENT          (VIVID_CID_VIVID_BASE + 2)\n+#define VIVID_CID_VERT_MOVEMENT         (VIVID_CID_VIVID_BASE + 3)\n+#define VIVID_CID_SHOW_BORDER           (VIVID_CID_VIVID_BASE + 4)\n+#define VIVID_CID_SHOW_SQUARE           (VIVID_CID_VIVID_BASE + 5)\n+#define VIVID_CID_INSERT_SAV            (VIVID_CID_VIVID_BASE + 6)\n+#define VIVID_CID_INSERT_EAV            (VIVID_CID_VIVID_BASE + 7)\n+#define VIVID_CID_VBI_CAP_INTERLACED    (VIVID_CID_VIVID_BASE + 8)\n+\n namespace libcamera {\n \n LOG_DEFINE_CATEGORY(VIVID)\n@@ -167,6 +179,25 @@ int PipelineHandlerVivid::configure(Camera *camera, CameraConfiguration *config)\n \t    format.fourcc != data->video_->toV4L2PixelFormat(cfg.pixelFormat))\n \t\treturn -EINVAL;\n \n+\t/* Set initial controls specific to VIVID */\n+\tControlList controls(data->video_->controls());\n+\tcontrols.set(VIVID_CID_TEST_PATTERN, 0); /* Vertical Colour Bars */\n+\tcontrols.set(VIVID_CID_OSD_TEXT_MODE, 0); /* Display all OSD */\n+\n+\t/* Ensure clear colours configured. */\n+\tcontrols.set(V4L2_CID_BRIGHTNESS, 128);\n+\tcontrols.set(V4L2_CID_CONTRAST, 128);\n+\tcontrols.set(V4L2_CID_SATURATION, 128);\n+\n+\t/* Enable movement to visualise buffer updates. */\n+\tcontrols.set(VIVID_CID_HOR_MOVEMENT, 5);\n+\n+\tret = data->video_->setControls(&controls);\n+\tif (ret) {\n+\t\tLOG(VIVID, Error) << \"Failed to set controls: \" << ret;\n+\t\treturn ret < 0 ? ret : -EINVAL;\n+\t}\n+\n \tcfg.setStream(&data->stream_);\n \tcfg.stride = format.planes[0].bpl;\n \n","prefixes":["libcamera-devel","8/9"]}