[{"id":1883,"web_url":"https://patchwork.libcamera.org/comment/1883/","msgid":"<7fbef802-809b-10d8-5575-e2e27f24811c@ideasonboard.com>","date":"2019-06-13T11:24:49","subject":"Re: [libcamera-devel] [PATCH v3 0/6] Add support for V4L2 Controls","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Jacopo,\n\nOn 13/06/2019 12:20, Jacopo Mondi wrote:\n> Hello,\n>    new V4L2 controls support iteration.\n> \n> The patches are based on the in-review:\n> [PATCH v4 0/2] libcamera: Introduce V4L2Device base class\n> \n> This new version changes quite a few things, and is the result of the combined\n> review effort from everyone! Thanks a lot.\n> \n> Most notable changes:\n> - Drop the support for compound and string controls\n> - As a consequence drop template control values: everything is now stored\n>   in a long int\n> - Decouple the control value from its information as Kieran has done for the\n>   libcamera control\n> - Cache all controls info at V4L2 device open time to avoid extra calls to\n>   VIDIOC_QUERY_EXT_CTRL\n> - Support creation on controls without value to be provided to getControls\n> - Change V4L2Device::getControls() to accept a V4L2Controls as setControls()\n>   does.\n> \n\nOhh - excellent lots to look at.\n\nI've run out of time to rebase my work on top of this for this week, but\nI'll certainly do that next week.\n\n\n> The new interface is demonstrated by the last patch, and I report it here\n> a snippet:\n> \n> \t/* --- Get control values --- */\n> \tV4L2Controls controls;\n> \tcontrols.add(V4L2_CID_EXPOSURE);\n> \tcontrols.add(V4L2_CID_ANALOGUE_GAIN);\n> \tcio2->sensor_->getControls(&controls);\n> \n> \tfor (const V4L2Control &ctrl : controls) {\n> \t\tunsigned int id = ctrl.id();\n> \t\tV4L2ControlInfo *info = cio2->sensor_->getControlInfo(id);\n> \t\tif (!info)\n> \t\t\tcontinue;\n> \n> \t\tint val = controls.get(id);\n> \t\tLOG(Error) << \"Control : \" << id << \" - name : \" << info->name()\n> \t\t\t   << \" - value: \" << val;\n> \t}\n> \n> \t/* --- Set control values --- */\n> \tcontrols.set(V4L2_CID_EXPOSURE, 2046);\n> \tcontrols.set(V4L2_CID_ANALOGUE_GAIN, 1024);\n> \tcio2->sensor_->setControls(&controls);\n> \n> \t/* --- Get control values back again and verify they have changed --- */\n> \tcio2->sensor_->getControls(&controls);\n> \tfor (const V4L2Control &ctrl : controls) {\n> \t\tunsigned int id = ctrl.id();\n> \t\tV4L2ControlInfo *info = cio2->sensor_->getControlInfo(id);\n> \t\tif (!info)\n> \t\t\tcontinue;\n> \n> \t\tint val = controls.get(id);\n> \t\tLOG(Error) << \"Control : \" << id << \" - name : \" << info->name()\n> \t\t\t   << \" - value: \" << val;\n> \t}\n> \n\nThat could looks a lot more friendly now :D\n\n> Thanks\n>    j\n> \n> Jacopo Mondi (6):\n>   libcamera: Add V4L2Controls\n>   libcamera: v4l2_device: List controls at device open\n>   libcamera: v4l2_device: Implement get and set controls\n>   libcamera: camera_sensor: Add V4L2 control operations\n>   libcamera: ipu3: Set pipe_mode based on stream configuration\n>   [HACK] ipu3: Set and get a few sensor controls\n> \n>  src/libcamera/camera_sensor.cpp       |  58 +++++\n>  src/libcamera/include/camera_sensor.h |   6 +\n>  src/libcamera/include/v4l2_controls.h |  96 ++++++++\n>  src/libcamera/include/v4l2_device.h   |  14 +-\n>  src/libcamera/meson.build             |   1 +\n>  src/libcamera/pipeline/ipu3/ipu3.cpp  |  78 ++++++\n>  src/libcamera/v4l2_controls.cpp       | 337 ++++++++++++++++++++++++++\n>  src/libcamera/v4l2_device.cpp         | 219 +++++++++++++++++\n>  8 files changed, 808 insertions(+), 1 deletion(-)\n>  create mode 100644 src/libcamera/include/v4l2_controls.h\n>  create mode 100644 src/libcamera/v4l2_controls.cpp\n> \n> --\n> 2.21.0\n> \n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel\n>","headers":{"Return-Path":"<kieran.bingham@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id EF8C363222\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 13 Jun 2019 13:24:51 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net [86.31.129.233])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 69A5952B;\n\tThu, 13 Jun 2019 13:24:51 +0200 (CEST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1560425091;\n\tbh=GAfdKb4/s3IyB59D7v8pYOy6baxAXZWhwvOawWv9Wcs=;\n\th=Reply-To:Subject:To:References:From:Date:In-Reply-To:From;\n\tb=vHdte8Y0Forrhd7l+umXiXSgt1JrJHDcUoiBgj7ps7QkAlqjNZzkxUUmHNLqAcOCB\n\tdhPWEdSqlXcGfRDvvRUGq1cdlkhHthp8XTwt8xLG6I8xD4xl6J3mo/r3Oxon8PvGiR\n\tFvrAUvoH5l2leSBsXWhrq3SB8ntMGRG16ut5rWik=","Reply-To":"kieran.bingham@ideasonboard.com","To":"Jacopo Mondi <jacopo@jmondi.org>, libcamera-devel@lists.libcamera.org","References":"<20190613112046.25260-1-jacopo@jmondi.org>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Openpgp":"preference=signencrypt","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tsbsRB8KNNvVXBOVNwko86rQqF9drZuw=","Organization":"Ideas on Board","Message-ID":"<7fbef802-809b-10d8-5575-e2e27f24811c@ideasonboard.com>","Date":"Thu, 13 Jun 2019 12:24:49 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101\n\tThunderbird/60.7.0","MIME-Version":"1.0","In-Reply-To":"<20190613112046.25260-1-jacopo@jmondi.org>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-GB","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH v3 0/6] Add support for V4L2 Controls","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","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>","X-List-Received-Date":"Thu, 13 Jun 2019 11:24:52 -0000"}}]