[{"id":12764,"web_url":"https://patchwork.libcamera.org/comment/12764/","msgid":"<6de3d1fb-bafd-160c-2433-0e852878d0be@ideasonboard.com>","date":"2020-09-25T10:39:33","subject":"Re: [libcamera-devel] [PATCH v2 0/6] Digital zoom","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi David,\n\nOn 25/09/2020 09:51, David Plowman wrote:\n> Hi everyone\n> \n> Here's version 2 of the digital zoom patches. I've applied the various\n> changes that were suggested - so thanks very much for those. The only\n> significant alteration is in the final patch where I had previously\n> added a command-line option to qcam to allow a digital zoom to be\n> requested. This feature has been moved to cam instead... do we think\n> it's useful there?\n> \n> One last question. That example application code that I wrote in a\n> previous message - I wonder if we should try and include it in\n> documentation somewhere? And if so, do we have a natural home for it?\n\nI think things like that will be useful indeed.\n\nSome how we need to make sure we're building any example code regularly,\nmy 'simple-cam' repository already bitrotted recently, so I've now added\nthat to a daily builder.\n\nWe should probably do the same for any example code.\n\nI don't yet know if that should be in the form of an external repo,\nwhich we schedule builds, or if it should be src/examples or such ?\n\nsrc/examples/ could of course quite easily integrate into the existing\ndocumentation with Doxygen in place though... so that feels quite useful\ntoo at the moment.\n\nThe corollary of that is it adds more code to maintain of course - but\nhitting compile failures is better than having documentation go out of\ndate IMO. We could also have src/examples only compiled as a feature,\nfor integration tests or such anyway.\n\n\n> I hope that all makes sense!\n> \n> Thanks and best regards\n> David\n> \n> David Plowman (6):\n>   libcamera: Add SensorOutputSize property\n>   libcamera: Initialise the SensorOutputSize property\n>   libcamera: Add IspCrop control\n>   libcamera: Add geometry helper functions\n>   libcamera: pipeline: raspberrypi: Implementation of digital zoom\n>   cam: Add command line option to test IspCrop control\n> \n>  include/libcamera/geometry.h                  |  20 +++\n>  include/libcamera/ipa/raspberrypi.h           |   1 +\n>  src/cam/capture.cpp                           |  25 +++-\n>  src/cam/capture.h                             |   2 +-\n>  src/cam/main.cpp                              |   3 +\n>  src/cam/main.h                                |   1 +\n>  src/ipa/raspberrypi/raspberrypi.cpp           |   7 +\n>  src/libcamera/camera_sensor.cpp               |   6 +\n>  src/libcamera/control_ids.yaml                |   9 ++\n>  src/libcamera/geometry.cpp                    | 129 ++++++++++++++++++\n>  .../pipeline/raspberrypi/raspberrypi.cpp      |  47 +++++++\n>  src/libcamera/property_ids.yaml               |  19 +++\n>  12 files changed, 266 insertions(+), 3 deletions(-)\n>","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 43883C3B5B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 25 Sep 2020 10:39:40 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9C7D463021;\n\tFri, 25 Sep 2020 12:39:39 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3D5E162FD8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 25 Sep 2020 12:39:38 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id C31582D7;\n\tFri, 25 Sep 2020 12:39:36 +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=\"XX6QpkbJ\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1601030376;\n\tbh=U/zVEb/9LYsFpCUZ2xBtc4UF8hXQlPcxQ0CTq4FUYcE=;\n\th=Reply-To:Subject:To:References:From:Date:In-Reply-To:From;\n\tb=XX6QpkbJcx69R34e2cJ8FjjFOWjx78sme6OXKQ5guBToMhGZwAVAqRPbpp9ii1WRW\n\tq/xxAnH8J0A0ydPfoxAif8VyfnNV6nVUJt1z6odZHoQQz7zu9YK3bYLxkJfg7lQ/uX\n\tT2PDG4JruS6FBdVFxZ/meRtbdAP0Fl5lEjSta7tY=","To":"David Plowman <david.plowman@raspberrypi.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20200925085127.17214-1-david.plowman@raspberrypi.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tWZw01QYHU/GUV/zHJSFk","Organization":"Ideas on Board","Message-ID":"<6de3d1fb-bafd-160c-2433-0e852878d0be@ideasonboard.com>","Date":"Fri, 25 Sep 2020 11:39:33 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101\n\tThunderbird/68.10.0","MIME-Version":"1.0","In-Reply-To":"<20200925085127.17214-1-david.plowman@raspberrypi.com>","Content-Language":"en-GB","Subject":"Re: [libcamera-devel] [PATCH v2 0/6] Digital zoom","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>","Reply-To":"kieran.bingham@ideasonboard.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>"}},{"id":13158,"web_url":"https://patchwork.libcamera.org/comment/13158/","msgid":"<20201011002147.GA23159@pendragon.ideasonboard.com>","date":"2020-10-11T00:21:47","subject":"Re: [libcamera-devel] [PATCH v2 0/6] Digital zoom","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hello,\n\nOn Fri, Sep 25, 2020 at 11:39:33AM +0100, Kieran Bingham wrote:\n> On 25/09/2020 09:51, David Plowman wrote:\n> > Hi everyone\n> > \n> > Here's version 2 of the digital zoom patches. I've applied the various\n> > changes that were suggested - so thanks very much for those. The only\n> > significant alteration is in the final patch where I had previously\n> > added a command-line option to qcam to allow a digital zoom to be\n> > requested. This feature has been moved to cam instead... do we think\n> > it's useful there?\n> > \n> > One last question. That example application code that I wrote in a\n> > previous message - I wonder if we should try and include it in\n> > documentation somewhere? And if so, do we have a natural home for it?\n> \n> I think things like that will be useful indeed.\n\nFully agreed. There are two locations I can think of for this\ndocumentation.\n\nThe first one is the application howto guide\n(Documentation/guides/application-developer.rst). This is based on the\nsimple-cam application, so the code would need to be added there first,\nas well as the documentation, and then copied to the application howto\nguide.\n\nThe second location is a currently missing camera pipeline model\ndocument. While reading the history of this patch series (apologies for\nthe delay) I became quite convinced that we will need to document an\nabstract camera pipeline model. The whole point of libcamera is to offer\na consistent API to applications that abstracts hardware differences. We\nthus have developed an abstract pipeline model, but it's all implicit\nfor now. Documenting it explicitly would be useful, and I think digital\nzoom will fit nicely there. The challenge will be to figure out a good\nexplicit model that will fit all the hardware we will have to support\n(thus with enough flexibility) while keeping it simple. But without\nchallenge there would be no fun, right ? :-)\n\nThe pipeline model documentation isn't here yet, so we could capture\nthis in the application guide for now, and either move it or copy it\nlater. The other option is to leave the documentation unaddressed for\nnow until the pipeline model gets documented.\n\n> Some how we need to make sure we're building any example code regularly,\n> my 'simple-cam' repository already bitrotted recently, so I've now added\n> that to a daily builder.\n> \n> We should probably do the same for any example code.\n> \n> I don't yet know if that should be in the form of an external repo,\n> which we schedule builds, or if it should be src/examples or such ?\n> \n> src/examples/ could of course quite easily integrate into the existing\n> documentation with Doxygen in place though... so that feels quite useful\n> too at the moment.\n> \n> The corollary of that is it adds more code to maintain of course - but\n> hitting compile failures is better than having documentation go out of\n> date IMO. We could also have src/examples only compiled as a feature,\n> for integration tests or such anyway.\n> \n> > I hope that all makes sense!\n> > \n> > Thanks and best regards\n> > David\n> > \n> > David Plowman (6):\n> >   libcamera: Add SensorOutputSize property\n> >   libcamera: Initialise the SensorOutputSize property\n> >   libcamera: Add IspCrop control\n> >   libcamera: Add geometry helper functions\n> >   libcamera: pipeline: raspberrypi: Implementation of digital zoom\n> >   cam: Add command line option to test IspCrop control\n> > \n> >  include/libcamera/geometry.h                  |  20 +++\n> >  include/libcamera/ipa/raspberrypi.h           |   1 +\n> >  src/cam/capture.cpp                           |  25 +++-\n> >  src/cam/capture.h                             |   2 +-\n> >  src/cam/main.cpp                              |   3 +\n> >  src/cam/main.h                                |   1 +\n> >  src/ipa/raspberrypi/raspberrypi.cpp           |   7 +\n> >  src/libcamera/camera_sensor.cpp               |   6 +\n> >  src/libcamera/control_ids.yaml                |   9 ++\n> >  src/libcamera/geometry.cpp                    | 129 ++++++++++++++++++\n> >  .../pipeline/raspberrypi/raspberrypi.cpp      |  47 +++++++\n> >  src/libcamera/property_ids.yaml               |  19 +++\n> >  12 files changed, 266 insertions(+), 3 deletions(-)","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 1583CBEEE0\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 11 Oct 2020 00:22:35 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7EF3260730;\n\tSun, 11 Oct 2020 02:22:34 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 998F660358\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 11 Oct 2020 02:22:32 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 0C587528;\n\tSun, 11 Oct 2020 02:22:31 +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=\"RC6q5BBo\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1602375752;\n\tbh=jNGDS/N9sE/8X7UQWSkjBQoz34uzv/VNZIKbxQmNdZk=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=RC6q5BBonqSOgQa/QzQb7WsZ8lllmMpP65o+U8Yiu4AnVwc8EAJKGxUgL0uVWZi1g\n\tdpEa8BACO3zq5hI7cn+wHOJ8XbGIHyAWAYeumXp7C7u2rYKsVKxmQO8DNPxVxKgjSf\n\tThns5z1I7hoVTmMUyGCPAbFazBWMUpwY0BlG48mM=","Date":"Sun, 11 Oct 2020 03:21:47 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<20201011002147.GA23159@pendragon.ideasonboard.com>","References":"<20200925085127.17214-1-david.plowman@raspberrypi.com>\n\t<6de3d1fb-bafd-160c-2433-0e852878d0be@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<6de3d1fb-bafd-160c-2433-0e852878d0be@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v2 0/6] Digital zoom","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":"libcamera-devel@lists.libcamera.org","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>"}}]