[{"id":25168,"web_url":"https://patchwork.libcamera.org/comment/25168/","msgid":"<YzZEz4Dt2JX1k5L5@pendragon.ideasonboard.com>","date":"2022-09-30T01:22:23","subject":"Re: [libcamera-devel] [PATCH v2 1/2] ipa: rkisp1: Compute LSC\n\talgorithm parameter during configure","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Florian,\n\nThank you for the patch.\n\nOn Thu, Sep 29, 2022 at 11:12:44AM +0200, Florian Sylvestre via libcamera-devel wrote:\n> LSC gradient parameters where initially computed during prepare() phase.\n\ns/where/were/\n\nBut actually, as the commit message describes the current situation,\n\nLSC gradient parameters are currently computed during the prepare() phase.\n\n> Because these parameters can be computed only one time and stays constant for\n\ns/stays/stay/\n\n> each frame after: move the computation to the configure() function.\n\ns/:/,/\n\n> Signed-off-by: Florian Sylvestre <fsylvestre@baylibre.com>\n> ---\n>  src/ipa/rkisp1/algorithms/lsc.cpp | 66 ++++++++++++++++++-------------\n>  src/ipa/rkisp1/algorithms/lsc.h   |  4 ++\n>  2 files changed, 42 insertions(+), 28 deletions(-)\n> \n> diff --git a/src/ipa/rkisp1/algorithms/lsc.cpp b/src/ipa/rkisp1/algorithms/lsc.cpp\n> index 44245caa..b1f39dfd 100644\n> --- a/src/ipa/rkisp1/algorithms/lsc.cpp\n> +++ b/src/ipa/rkisp1/algorithms/lsc.cpp\n> @@ -125,30 +125,15 @@ int LensShadingCorrection::init([[maybe_unused]] IPAContext &context,\n>  int LensShadingCorrection::configure(IPAContext &context,\n>  \t\t\t\t     [[maybe_unused]] const IPACameraSensorInfo &configInfo)\n>  {\n> -\tcontext.configuration.lsc.enabled = initialized_;\n> -\treturn 0;\n> -}\n> -\n> -/**\n> - * \\copydoc libcamera::ipa::Algorithm::prepare\n> - */\n> -void LensShadingCorrection::prepare(IPAContext &context, const uint32_t frame,\n> -\t\t\t\t    [[maybe_unused]] IPAFrameContext &frameContext,\n> -\t\t\t\t    rkisp1_params_cfg *params)\n> -{\n> -\tif (frame > 0)\n> -\t\treturn;\n> -\n>  \tif (!initialized_)\n> -\t\treturn;\n> +\t\treturn EINVAL;\n\nThis is a change of behaviour, as configure() previously returned 0 in\nthat case, and the return value of configure() is checked by the caller.\n\nThis being said, it looks like we could drop the initialized_ flag, here\nand in the other algorithms. It can only be false if init() returns an\nerror, and in that case the IPA module initialization fails. I recall we\nintroduced the initialized_ flag for a reason, but I can't locate any\npoint in the history where it was actually useful. I'll submit a patch.\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n>  \n> -\tstruct rkisp1_cif_isp_lsc_config &config = params->others.lsc_config;\n>  \tconst Size &size = context.configuration.sensor.size;\n>  \tSize totalSize{};\n>  \n>  \tfor (unsigned int i = 0; i < RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE; ++i) {\n> -\t\tconfig.x_size_tbl[i] = xSize_[i] * size.width;\n> -\t\tconfig.y_size_tbl[i] = ySize_[i] * size.height;\n> +\t\txSizes_[i] = xSize_[i] * size.width;\n> +\t\tySizes_[i] = ySize_[i] * size.height;\n>  \n>  \t\t/*\n>  \t\t * To prevent unexpected behavior of the ISP, the sum of x_size_tbl and\n> @@ -157,25 +142,50 @@ void LensShadingCorrection::prepare(IPAContext &context, const uint32_t frame,\n>  \t\t * rounding-induced errors.\n>  \t\t */\n>  \t\tif (i == RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE - 1) {\n> -\t\t\tconfig.x_size_tbl[i] = size.width / 2 - totalSize.width;\n> -\t\t\tconfig.y_size_tbl[i] = size.height / 2 - totalSize.height;\n> +\t\t\txSizes_[i] = size.width / 2 - totalSize.width;\n> +\t\t\tySizes_[i] = size.height / 2 - totalSize.height;\n>  \t\t}\n>  \n> -\t\ttotalSize.width += config.x_size_tbl[i];\n> -\t\ttotalSize.height += config.y_size_tbl[i];\n> +\t\ttotalSize.width += xSizes_[i];\n> +\t\ttotalSize.height += ySizes_[i];\n>  \n> -\t\tconfig.x_grad_tbl[i] = std::round(32768 / config.x_size_tbl[i]);\n> -\t\tconfig.y_grad_tbl[i] = std::round(32768 / config.y_size_tbl[i]);\n> +\t\txGrad_[i] = std::round(32768 / xSizes_[i]);\n> +\t\tyGrad_[i] = std::round(32768 / ySizes_[i]);\n>  \t}\n>  \n> +\tcontext.configuration.lsc.enabled = true;\n> +\treturn 0;\n> +}\n> +\n> +/**\n> + * \\copydoc libcamera::ipa::Algorithm::prepare\n> + */\n> +void LensShadingCorrection::prepare([[maybe_unused]] IPAContext &context,\n> +\t\t\t\t    const uint32_t frame,\n> +\t\t\t\t    [[maybe_unused]] IPAFrameContext &frameContext,\n> +\t\t\t\t    rkisp1_params_cfg *params)\n> +{\n> +\tif (frame > 0)\n> +\t\treturn;\n> +\n> +\tif (!initialized_)\n> +\t\treturn;\n> +\n> +\tstruct rkisp1_cif_isp_lsc_config &config = params->others.lsc_config;\n> +\n> +\tmemcpy(config.x_grad_tbl, xGrad_, sizeof(config.x_grad_tbl));\n> +\tmemcpy(config.y_grad_tbl, yGrad_, sizeof(config.y_grad_tbl));\n> +\tmemcpy(config.x_size_tbl, xSizes_, sizeof(config.x_size_tbl));\n> +\tmemcpy(config.y_size_tbl, ySizes_, sizeof(config.y_size_tbl));\n> +\n>  \tstd::copy(rData_.begin(), rData_.end(),\n> -\t\t  &params->others.lsc_config.r_data_tbl[0][0]);\n> +\t\t  &config.r_data_tbl[0][0]);\n>  \tstd::copy(grData_.begin(), grData_.end(),\n> -\t\t  &params->others.lsc_config.gr_data_tbl[0][0]);\n> +\t\t  &config.gr_data_tbl[0][0]);\n>  \tstd::copy(gbData_.begin(), gbData_.end(),\n> -\t\t  &params->others.lsc_config.gb_data_tbl[0][0]);\n> +\t\t  &config.gb_data_tbl[0][0]);\n>  \tstd::copy(bData_.begin(), bData_.end(),\n> -\t\t  &params->others.lsc_config.b_data_tbl[0][0]);\n> +\t\t  &config.b_data_tbl[0][0]);\n>  \n>  \tparams->module_en_update |= RKISP1_CIF_ISP_MODULE_LSC;\n>  \tparams->module_ens |= RKISP1_CIF_ISP_MODULE_LSC;\n> diff --git a/src/ipa/rkisp1/algorithms/lsc.h b/src/ipa/rkisp1/algorithms/lsc.h\n> index da957d3e..b5cd5047 100644\n> --- a/src/ipa/rkisp1/algorithms/lsc.h\n> +++ b/src/ipa/rkisp1/algorithms/lsc.h\n> @@ -35,6 +35,10 @@ private:\n>  \n>  \tstd::vector<double> xSize_;\n>  \tstd::vector<double> ySize_;\n> +\tuint16_t xGrad_[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];\n> +\tuint16_t yGrad_[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];\n> +\tuint16_t xSizes_[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];\n> +\tuint16_t ySizes_[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];\n>  };\n>  \n>  } /* namespace ipa::rkisp1::algorithms */","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 48CC9C0DA4\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 30 Sep 2022 01:22:29 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6DA2162394;\n\tFri, 30 Sep 2022 03:22:28 +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 CDB8361F76\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 30 Sep 2022 03:22:25 +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 0C3704D5;\n\tFri, 30 Sep 2022 03:22:24 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1664500948;\n\tbh=c8tmSpq/mjQjblJolc2LrMXniFd0AKta+hMAkj/1t/E=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=4PaJ6nawZUEWgxUHvfpYyWuWKjWiFG1dqwC/BWjLeXIYmW9SnAI6/P3nnVLB0CZ6g\n\tJ1hWAcugyHAMXEMYijnboICwciHjeCcyoqFb9gDwsRtuqMoVo+B+1UmWX/i/RQtqG3\n\tM+71/pKatu16c6Qmsinyf8UH/AJ7KzSPWbdtEBdaLOAwfedDOpyPvo4xDVb7ZNogWH\n\tLo/dFgvQzgiipaKnTUBZjki1+eEvdbjb43YQnJTqzgUvqxAU8daccuj/BWnoN+xSbf\n\t9LpX0DA/CRIp20LGCGrWFQkWKn9Y/aNBn4XqqpOLYpA58sBT6CO4ToQeRw+cc6UTus\n\tERwL8M1hfPXgw==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1664500945;\n\tbh=c8tmSpq/mjQjblJolc2LrMXniFd0AKta+hMAkj/1t/E=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=TwucpDpn9qpcrwx+l09in65WsmN30EGXioc4RKe1h6FA2RI2+pnFfMoeY93fQh4DL\n\tWmZH/2C7uzCOvvUaCZNJaZoAVUecERwj6yqnLocdRfawgTETLNIkdPfq3UnlA+NFdM\n\tUp9TY9d6y+bUFlCVxgyq4maIc4IXAo8QcsxlJDvY="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"TwucpDpn\"; dkim-atps=neutral","Date":"Fri, 30 Sep 2022 04:22:23 +0300","To":"Florian Sylvestre <fsylvestre@baylibre.com>","Message-ID":"<YzZEz4Dt2JX1k5L5@pendragon.ideasonboard.com>","References":"<20220929091245.2159838-1-fsylvestre@baylibre.com>\n\t<20220929091245.2159838-2-fsylvestre@baylibre.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20220929091245.2159838-2-fsylvestre@baylibre.com>","Subject":"Re: [libcamera-devel] [PATCH v2 1/2] ipa: rkisp1: Compute LSC\n\talgorithm parameter during configure","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>","From":"Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":25171,"web_url":"https://patchwork.libcamera.org/comment/25171/","msgid":"<20220930092316.iv2ig4z5w4kcwzjg@uno.localdomain>","date":"2022-09-30T09:23:16","subject":"Re: [libcamera-devel] [PATCH v2 1/2] ipa: rkisp1: Compute LSC\n\talgorithm parameter during configure","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Can this be rebased on \"ipa: rkisp1: Remove initialized_ flags from\nalgorithms\" ?\n\nFor the patch\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nThanks\n   j\n\nOn Fri, Sep 30, 2022 at 04:22:23AM +0300, Laurent Pinchart via libcamera-devel wrote:\n> Hi Florian,\n>\n> Thank you for the patch.\n>\n> On Thu, Sep 29, 2022 at 11:12:44AM +0200, Florian Sylvestre via libcamera-devel wrote:\n> > LSC gradient parameters where initially computed during prepare() phase.\n>\n> s/where/were/\n>\n> But actually, as the commit message describes the current situation,\n>\n> LSC gradient parameters are currently computed during the prepare() phase.\n>\n> > Because these parameters can be computed only one time and stays constant for\n>\n> s/stays/stay/\n>\n> > each frame after: move the computation to the configure() function.\n>\n> s/:/,/\n>\n> > Signed-off-by: Florian Sylvestre <fsylvestre@baylibre.com>\n> > ---\n> >  src/ipa/rkisp1/algorithms/lsc.cpp | 66 ++++++++++++++++++-------------\n> >  src/ipa/rkisp1/algorithms/lsc.h   |  4 ++\n> >  2 files changed, 42 insertions(+), 28 deletions(-)\n> >\n> > diff --git a/src/ipa/rkisp1/algorithms/lsc.cpp b/src/ipa/rkisp1/algorithms/lsc.cpp\n> > index 44245caa..b1f39dfd 100644\n> > --- a/src/ipa/rkisp1/algorithms/lsc.cpp\n> > +++ b/src/ipa/rkisp1/algorithms/lsc.cpp\n> > @@ -125,30 +125,15 @@ int LensShadingCorrection::init([[maybe_unused]] IPAContext &context,\n> >  int LensShadingCorrection::configure(IPAContext &context,\n> >  \t\t\t\t     [[maybe_unused]] const IPACameraSensorInfo &configInfo)\n> >  {\n> > -\tcontext.configuration.lsc.enabled = initialized_;\n> > -\treturn 0;\n> > -}\n> > -\n> > -/**\n> > - * \\copydoc libcamera::ipa::Algorithm::prepare\n> > - */\n> > -void LensShadingCorrection::prepare(IPAContext &context, const uint32_t frame,\n> > -\t\t\t\t    [[maybe_unused]] IPAFrameContext &frameContext,\n> > -\t\t\t\t    rkisp1_params_cfg *params)\n> > -{\n> > -\tif (frame > 0)\n> > -\t\treturn;\n> > -\n> >  \tif (!initialized_)\n> > -\t\treturn;\n> > +\t\treturn EINVAL;\n>\n> This is a change of behaviour, as configure() previously returned 0 in\n> that case, and the return value of configure() is checked by the caller.\n>\n> This being said, it looks like we could drop the initialized_ flag, here\n> and in the other algorithms. It can only be false if init() returns an\n> error, and in that case the IPA module initialization fails. I recall we\n> introduced the initialized_ flag for a reason, but I can't locate any\n> point in the history where it was actually useful. I'll submit a patch.\n>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n>\n> >\n> > -\tstruct rkisp1_cif_isp_lsc_config &config = params->others.lsc_config;\n> >  \tconst Size &size = context.configuration.sensor.size;\n> >  \tSize totalSize{};\n> >\n> >  \tfor (unsigned int i = 0; i < RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE; ++i) {\n> > -\t\tconfig.x_size_tbl[i] = xSize_[i] * size.width;\n> > -\t\tconfig.y_size_tbl[i] = ySize_[i] * size.height;\n> > +\t\txSizes_[i] = xSize_[i] * size.width;\n> > +\t\tySizes_[i] = ySize_[i] * size.height;\n> >\n> >  \t\t/*\n> >  \t\t * To prevent unexpected behavior of the ISP, the sum of x_size_tbl and\n> > @@ -157,25 +142,50 @@ void LensShadingCorrection::prepare(IPAContext &context, const uint32_t frame,\n> >  \t\t * rounding-induced errors.\n> >  \t\t */\n> >  \t\tif (i == RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE - 1) {\n> > -\t\t\tconfig.x_size_tbl[i] = size.width / 2 - totalSize.width;\n> > -\t\t\tconfig.y_size_tbl[i] = size.height / 2 - totalSize.height;\n> > +\t\t\txSizes_[i] = size.width / 2 - totalSize.width;\n> > +\t\t\tySizes_[i] = size.height / 2 - totalSize.height;\n> >  \t\t}\n> >\n> > -\t\ttotalSize.width += config.x_size_tbl[i];\n> > -\t\ttotalSize.height += config.y_size_tbl[i];\n> > +\t\ttotalSize.width += xSizes_[i];\n> > +\t\ttotalSize.height += ySizes_[i];\n> >\n> > -\t\tconfig.x_grad_tbl[i] = std::round(32768 / config.x_size_tbl[i]);\n> > -\t\tconfig.y_grad_tbl[i] = std::round(32768 / config.y_size_tbl[i]);\n> > +\t\txGrad_[i] = std::round(32768 / xSizes_[i]);\n> > +\t\tyGrad_[i] = std::round(32768 / ySizes_[i]);\n> >  \t}\n> >\n> > +\tcontext.configuration.lsc.enabled = true;\n> > +\treturn 0;\n> > +}\n> > +\n> > +/**\n> > + * \\copydoc libcamera::ipa::Algorithm::prepare\n> > + */\n> > +void LensShadingCorrection::prepare([[maybe_unused]] IPAContext &context,\n> > +\t\t\t\t    const uint32_t frame,\n> > +\t\t\t\t    [[maybe_unused]] IPAFrameContext &frameContext,\n> > +\t\t\t\t    rkisp1_params_cfg *params)\n> > +{\n> > +\tif (frame > 0)\n> > +\t\treturn;\n> > +\n> > +\tif (!initialized_)\n> > +\t\treturn;\n> > +\n> > +\tstruct rkisp1_cif_isp_lsc_config &config = params->others.lsc_config;\n> > +\n> > +\tmemcpy(config.x_grad_tbl, xGrad_, sizeof(config.x_grad_tbl));\n> > +\tmemcpy(config.y_grad_tbl, yGrad_, sizeof(config.y_grad_tbl));\n> > +\tmemcpy(config.x_size_tbl, xSizes_, sizeof(config.x_size_tbl));\n> > +\tmemcpy(config.y_size_tbl, ySizes_, sizeof(config.y_size_tbl));\n> > +\n> >  \tstd::copy(rData_.begin(), rData_.end(),\n> > -\t\t  &params->others.lsc_config.r_data_tbl[0][0]);\n> > +\t\t  &config.r_data_tbl[0][0]);\n> >  \tstd::copy(grData_.begin(), grData_.end(),\n> > -\t\t  &params->others.lsc_config.gr_data_tbl[0][0]);\n> > +\t\t  &config.gr_data_tbl[0][0]);\n> >  \tstd::copy(gbData_.begin(), gbData_.end(),\n> > -\t\t  &params->others.lsc_config.gb_data_tbl[0][0]);\n> > +\t\t  &config.gb_data_tbl[0][0]);\n> >  \tstd::copy(bData_.begin(), bData_.end(),\n> > -\t\t  &params->others.lsc_config.b_data_tbl[0][0]);\n> > +\t\t  &config.b_data_tbl[0][0]);\n> >\n> >  \tparams->module_en_update |= RKISP1_CIF_ISP_MODULE_LSC;\n> >  \tparams->module_ens |= RKISP1_CIF_ISP_MODULE_LSC;\n> > diff --git a/src/ipa/rkisp1/algorithms/lsc.h b/src/ipa/rkisp1/algorithms/lsc.h\n> > index da957d3e..b5cd5047 100644\n> > --- a/src/ipa/rkisp1/algorithms/lsc.h\n> > +++ b/src/ipa/rkisp1/algorithms/lsc.h\n> > @@ -35,6 +35,10 @@ private:\n> >\n> >  \tstd::vector<double> xSize_;\n> >  \tstd::vector<double> ySize_;\n> > +\tuint16_t xGrad_[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];\n> > +\tuint16_t yGrad_[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];\n> > +\tuint16_t xSizes_[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];\n> > +\tuint16_t ySizes_[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];\n> >  };\n> >\n> >  } /* namespace ipa::rkisp1::algorithms */\n>\n> --\n> Regards,\n>\n> Laurent Pinchart","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 34D82C0DA4\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 30 Sep 2022 09:23:20 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9AD6362398;\n\tFri, 30 Sep 2022 11:23:19 +0200 (CEST)","from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net\n\t[217.70.183.197])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 70EC7603DC\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 30 Sep 2022 11:23:18 +0200 (CEST)","(Authenticated sender: jacopo@jmondi.org)\n\tby mail.gandi.net (Postfix) with ESMTPSA id A4F031C0004;\n\tFri, 30 Sep 2022 09:23:17 +0000 (UTC)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1664529799;\n\tbh=hyMACXAnGbMBpMlm+P0c3tGGhHkKTnxIXHWXOwon+U0=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=lrALPfuuUN9ZC0kIPw/UoBS8R8mIE5ckJLwPTfTyxDGypyCNj+oXJ6RhK9Krrvlto\n\th0+gkpJfc02Q1FastbxWeQJoaC9mdP01VybIJ6zpj04hmFsJLYJqARezjRsyQquqpA\n\tsZCiti0GIrMddWVgETEomjSM2/N7RK4/hMvbhnAbX72XMB0865+FV2T60XThon8cNH\n\tmbZZAi/468TOcO9N6UzBNdt82cyMo8eubRrIhgY/psmuN1Rb3tqNWxgw0QMPLyM7Ry\n\tNRCfV7XzhSNbkiJcVM+J3AWg+sSp7PwDyNcjA8zR2kMuclUWz5QseKZP4O+kMQpPQ7\n\tTtVCpfQACV9CQ==","Date":"Fri, 30 Sep 2022 11:23:16 +0200","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20220930092316.iv2ig4z5w4kcwzjg@uno.localdomain>","References":"<20220929091245.2159838-1-fsylvestre@baylibre.com>\n\t<20220929091245.2159838-2-fsylvestre@baylibre.com>\n\t<YzZEz4Dt2JX1k5L5@pendragon.ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<YzZEz4Dt2JX1k5L5@pendragon.ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v2 1/2] ipa: rkisp1: Compute LSC\n\talgorithm parameter during configure","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>","From":"Jacopo Mondi via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Jacopo Mondi <jacopo@jmondi.org>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]