[{"id":21051,"web_url":"https://patchwork.libcamera.org/comment/21051/","msgid":"<163733286646.752913.7169816374233035124@Monstersaurus>","date":"2021-11-19T14:41:06","subject":"Re: [libcamera-devel] [PATCH v1 5/8] ipa: rkisp1: Report and use\n\tsensor controls","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Jean-Michel Hautbois (2021-11-19 11:16:51)\n> The pipeline handler populates a new sensorControls ControlList, to\n> have the effective exposure and gain values for the current frame. This\n> is done when a statistics buffer is received.\n> \n\nI'm fine with this as is, but if we tackle the interface changes to be\nmore explicit we should do both RKISP and IPU3 at the same time I\nsuspect.\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>\n> ---\n>  include/libcamera/ipa/rkisp1.mojom       | 2 ++\n>  src/ipa/rkisp1/rkisp1.cpp                | 2 +-\n>  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 3 ++-\n>  3 files changed, 5 insertions(+), 2 deletions(-)\n> \n> diff --git a/include/libcamera/ipa/rkisp1.mojom b/include/libcamera/ipa/rkisp1.mojom\n> index a6991d4f..c3a6d8e1 100644\n> --- a/include/libcamera/ipa/rkisp1.mojom\n> +++ b/include/libcamera/ipa/rkisp1.mojom\n> @@ -21,11 +21,13 @@ struct RkISP1Event {\n>         uint32 frame;\n>         uint32 bufferId;\n>         libcamera.ControlList controls;\n> +       libcamera.ControlList sensorControls;\n>  };\n>  \n>  struct RkISP1Action {\n>         RkISP1Operations op;\n>         libcamera.ControlList controls;\n> +       libcamera.ControlList sensorControls;\n>  };\n>  \n>  interface IPARkISP1Interface {\n> diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp\n> index ddddd52d..d2f4380a 100644\n> --- a/src/ipa/rkisp1/rkisp1.cpp\n> +++ b/src/ipa/rkisp1/rkisp1.cpp\n> @@ -313,7 +313,7 @@ void IPARkISP1::setControls(unsigned int frame)\n>         ControlList ctrls(ctrls_);\n>         ctrls.set(V4L2_CID_EXPOSURE, static_cast<int32_t>(exposure_));\n>         ctrls.set(V4L2_CID_ANALOGUE_GAIN, static_cast<int32_t>(gain_));\n> -       op.controls = ctrls;\n> +       op.sensorControls = ctrls;\n>  \n>         queueFrameAction.emit(frame, op);\n>  }\n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> index db8856d3..6e9f1dad 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> @@ -333,7 +333,7 @@ void RkISP1CameraData::queueFrameAction(unsigned int frame,\n>  {\n>         switch (action.op) {\n>         case ipa::rkisp1::ActionV4L2Set: {\n> -               const ControlList &controls = action.controls;\n> +               const ControlList &controls = action.sensorControls;\n>                 delayedCtrls_->push(controls);\n>                 break;\n>         }\n> @@ -1125,6 +1125,7 @@ void PipelineHandlerRkISP1::statReady(FrameBuffer *buffer)\n>         ev.op = ipa::rkisp1::EventSignalStatBuffer;\n>         ev.frame = info->frame;\n>         ev.bufferId = info->statBuffer->cookie();\n> +       ev.sensorControls = data->delayedCtrls_->get(buffer->metadata().sequence);\n>         data->ipa_->processEvent(ev);\n>  }\n>  \n> -- \n> 2.32.0\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 2A8D0BDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 19 Nov 2021 14:41:11 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6A51A60371;\n\tFri, 19 Nov 2021 15:41:10 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4EC05600B5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 19 Nov 2021 15:41:09 +0100 (CET)","from pendragon.ideasonboard.com\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 DC3041959;\n\tFri, 19 Nov 2021 15:41:08 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"WgdcdsHi\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1637332869;\n\tbh=wrBc57DLat18oROsK+jNFsA8V9WAmQEHmlfIJpjmNxY=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=WgdcdsHiwtfddvMx2lZaaejYdLVdpDJwFQQ6yugykgam7YeuiWBORJlJE3shYH/OX\n\tQEs7AxUVj6rSjr4L4u6zSyZgCVdI5Cz3tF7KmSabHwD0QKecLKw0wnfRTIuLzRA+M9\n\t+3WV+GxmZTBWFGIzU4FkEvzBVEfPvkXXldtYucBE=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20211119111654.68445-6-jeanmichel.hautbois@ideasonboard.com>","References":"<20211119111654.68445-1-jeanmichel.hautbois@ideasonboard.com>\n\t<20211119111654.68445-6-jeanmichel.hautbois@ideasonboard.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Fri, 19 Nov 2021 14:41:06 +0000","Message-ID":"<163733286646.752913.7169816374233035124@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v1 5/8] ipa: rkisp1: Report and use\n\tsensor 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>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":21101,"web_url":"https://patchwork.libcamera.org/comment/21101/","msgid":"<73ed13a3-3d73-8333-9c54-f1afd672a9d7@ideasonboard.com>","date":"2021-11-22T14:19:45","subject":"Re: [libcamera-devel] [PATCH v1 5/8] ipa: rkisp1: Report and use\n\tsensor controls","submitter":{"id":75,"url":"https://patchwork.libcamera.org/api/people/75/","name":"Jean-Michel Hautbois","email":"jeanmichel.hautbois@ideasonboard.com"},"content":"Hi Kieran,\n\nOn 19/11/2021 15:41, Kieran Bingham wrote:\n> Quoting Jean-Michel Hautbois (2021-11-19 11:16:51)\n>> The pipeline handler populates a new sensorControls ControlList, to\n>> have the effective exposure and gain values for the current frame. This\n>> is done when a statistics buffer is received.\n>>\n> \n> I'm fine with this as is, but if we tackle the interface changes to be\n> more explicit we should do both RKISP and IPU3 at the same time I\n> suspect.\n\nYes, and as those are very similar, it can be a dedicated series. Well \nthat's what I had in mind :-).\n\n> \n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n>> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>\n>> ---\n>>   include/libcamera/ipa/rkisp1.mojom       | 2 ++\n>>   src/ipa/rkisp1/rkisp1.cpp                | 2 +-\n>>   src/libcamera/pipeline/rkisp1/rkisp1.cpp | 3 ++-\n>>   3 files changed, 5 insertions(+), 2 deletions(-)\n>>\n>> diff --git a/include/libcamera/ipa/rkisp1.mojom b/include/libcamera/ipa/rkisp1.mojom\n>> index a6991d4f..c3a6d8e1 100644\n>> --- a/include/libcamera/ipa/rkisp1.mojom\n>> +++ b/include/libcamera/ipa/rkisp1.mojom\n>> @@ -21,11 +21,13 @@ struct RkISP1Event {\n>>          uint32 frame;\n>>          uint32 bufferId;\n>>          libcamera.ControlList controls;\n>> +       libcamera.ControlList sensorControls;\n>>   };\n>>   \n>>   struct RkISP1Action {\n>>          RkISP1Operations op;\n>>          libcamera.ControlList controls;\n>> +       libcamera.ControlList sensorControls;\n>>   };\n>>   \n>>   interface IPARkISP1Interface {\n>> diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp\n>> index ddddd52d..d2f4380a 100644\n>> --- a/src/ipa/rkisp1/rkisp1.cpp\n>> +++ b/src/ipa/rkisp1/rkisp1.cpp\n>> @@ -313,7 +313,7 @@ void IPARkISP1::setControls(unsigned int frame)\n>>          ControlList ctrls(ctrls_);\n>>          ctrls.set(V4L2_CID_EXPOSURE, static_cast<int32_t>(exposure_));\n>>          ctrls.set(V4L2_CID_ANALOGUE_GAIN, static_cast<int32_t>(gain_));\n>> -       op.controls = ctrls;\n>> +       op.sensorControls = ctrls;\n>>   \n>>          queueFrameAction.emit(frame, op);\n>>   }\n>> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n>> index db8856d3..6e9f1dad 100644\n>> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n>> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n>> @@ -333,7 +333,7 @@ void RkISP1CameraData::queueFrameAction(unsigned int frame,\n>>   {\n>>          switch (action.op) {\n>>          case ipa::rkisp1::ActionV4L2Set: {\n>> -               const ControlList &controls = action.controls;\n>> +               const ControlList &controls = action.sensorControls;\n>>                  delayedCtrls_->push(controls);\n>>                  break;\n>>          }\n>> @@ -1125,6 +1125,7 @@ void PipelineHandlerRkISP1::statReady(FrameBuffer *buffer)\n>>          ev.op = ipa::rkisp1::EventSignalStatBuffer;\n>>          ev.frame = info->frame;\n>>          ev.bufferId = info->statBuffer->cookie();\n>> +       ev.sensorControls = data->delayedCtrls_->get(buffer->metadata().sequence);\n>>          data->ipa_->processEvent(ev);\n>>   }\n>>   \n>> -- \n>> 2.32.0\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 8FD82BF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 22 Nov 2021 14:19:49 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 45BA76038A;\n\tMon, 22 Nov 2021 15:19:49 +0100 (CET)","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 A648A6022D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 22 Nov 2021 15:19:47 +0100 (CET)","from [IPV6:2a01:e0a:169:7140:933b:1c23:4e2b:3c0f] (unknown\n\t[IPv6:2a01:e0a:169:7140:933b:1c23:4e2b:3c0f])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 6AD1914C3;\n\tMon, 22 Nov 2021 15:19:47 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"BiI6tvyk\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1637590787;\n\tbh=DqCmrgPF3hxR/4T0EFXXuOd0XSYz5EekNHu7naZZ6qY=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=BiI6tvykAkRSw7BWCz0cuatbdz4md0la5EbAXr8uUTLpmA/H4nPnLo8r6uOoUF9n2\n\tqxxryNPypmIK+MDgpdhus9qi5WbFPjH/gbZ96Q1St3pOQ0iRqUqLfp+SKPnMIMPt73\n\ts5nWCD1cpyPNwYeg+j8SpOm0JICyyvYrC+Nm1CqA=","Message-ID":"<73ed13a3-3d73-8333-9c54-f1afd672a9d7@ideasonboard.com>","Date":"Mon, 22 Nov 2021 15:19:45 +0100","MIME-Version":"1.0","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101\n\tThunderbird/91.3.1","Content-Language":"en-US","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20211119111654.68445-1-jeanmichel.hautbois@ideasonboard.com>\n\t<20211119111654.68445-6-jeanmichel.hautbois@ideasonboard.com>\n\t<163733286646.752913.7169816374233035124@Monstersaurus>","From":"Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>","In-Reply-To":"<163733286646.752913.7169816374233035124@Monstersaurus>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH v1 5/8] ipa: rkisp1: Report and use\n\tsensor 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>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]