[{"id":25014,"web_url":"https://patchwork.libcamera.org/comment/25014/","msgid":"<166368270771.3912877.5111402566648257979@Monstersaurus>","date":"2022-09-20T14:05:07","subject":"Re: [libcamera-devel] [PATCH v4 08/32] ipa: libipa: algorithm:\n\tqueueRequest(): Pass frame context","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Laurent Pinchart (2022-09-08 02:41:36)\n> From: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> IPA modules have access to incoming Request's controls list and\n> need to store them in the frame context at queueRequest() time.\n> \n> As each algorithm is expected to have ownership of a certain set of\n> controls it should have access to the frame context where they have been\n> stored, and where the algorithm computation results can be stored to\n> later populate metadata.\n> \n> Now that both the IPU3 and RkISP1 IPA modules comply with the same\n> interface, propagate the queueRequest() call to algorithms in the IPU3\n\nIn the RKISP module? Or is this where something was dropped from the\nIPU3?\n\n\nIt might be worth highlighting that this commit adds a dummy frame\ncontext for the RKISP for the time being ?\n\nBut other than that, lets get this moving.\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n\n> IPA module.\n> \n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n> ---\n>  src/ipa/libipa/algorithm.cpp         | 1 +\n>  src/ipa/libipa/algorithm.h           | 1 +\n>  src/ipa/rkisp1/algorithms/awb.cpp    | 1 +\n>  src/ipa/rkisp1/algorithms/awb.h      | 1 +\n>  src/ipa/rkisp1/algorithms/cproc.cpp  | 1 +\n>  src/ipa/rkisp1/algorithms/cproc.h    | 1 +\n>  src/ipa/rkisp1/algorithms/dpf.cpp    | 1 +\n>  src/ipa/rkisp1/algorithms/dpf.h      | 1 +\n>  src/ipa/rkisp1/algorithms/filter.cpp | 1 +\n>  src/ipa/rkisp1/algorithms/filter.h   | 1 +\n>  src/ipa/rkisp1/rkisp1.cpp            | 5 ++++-\n>  11 files changed, 14 insertions(+), 1 deletion(-)\n> \n> diff --git a/src/ipa/libipa/algorithm.cpp b/src/ipa/libipa/algorithm.cpp\n> index 30eab67f71fc..c152b885aee1 100644\n> --- a/src/ipa/libipa/algorithm.cpp\n> +++ b/src/ipa/libipa/algorithm.cpp\n> @@ -88,6 +88,7 @@ namespace ipa {\n>   * \\brief Provide control values to the algorithm\n>   * \\param[in] context The shared IPA context\n>   * \\param[in] frame The frame number to apply the control values\n> + * \\param[in] frameContext The current frame's context\n>   * \\param[in] controls The list of user controls\n>   *\n>   * This function is called for each request queued to the camera. It provides\n> diff --git a/src/ipa/libipa/algorithm.h b/src/ipa/libipa/algorithm.h\n> index ee93d260ca3f..d8601f9ccaff 100644\n> --- a/src/ipa/libipa/algorithm.h\n> +++ b/src/ipa/libipa/algorithm.h\n> @@ -47,6 +47,7 @@ public:\n>  \n>         virtual void queueRequest([[maybe_unused]] typename Module::Context &context,\n>                                   [[maybe_unused]] const uint32_t frame,\n> +                                 [[maybe_unused]] typename Module::FrameContext &frameContext,\n>                                   [[maybe_unused]] const ControlList &controls)\n>         {\n>         }\n> diff --git a/src/ipa/rkisp1/algorithms/awb.cpp b/src/ipa/rkisp1/algorithms/awb.cpp\n> index aefba6382807..a23c32015454 100644\n> --- a/src/ipa/rkisp1/algorithms/awb.cpp\n> +++ b/src/ipa/rkisp1/algorithms/awb.cpp\n> @@ -128,6 +128,7 @@ void Awb::prepare(IPAContext &context,\n>   */\n>  void Awb::queueRequest(IPAContext &context,\n>                        [[maybe_unused]] const uint32_t frame,\n> +                      [[maybe_unused]] IPAFrameContext &frameContext,\n>                        const ControlList &controls)\n>  {\n>         auto &awb = context.frameContext.awb;\n> diff --git a/src/ipa/rkisp1/algorithms/awb.h b/src/ipa/rkisp1/algorithms/awb.h\n> index 806e11a2ec93..6d4a39467038 100644\n> --- a/src/ipa/rkisp1/algorithms/awb.h\n> +++ b/src/ipa/rkisp1/algorithms/awb.h\n> @@ -24,6 +24,7 @@ public:\n>                      IPAFrameContext &frameContext,\n>                      rkisp1_params_cfg *params) override;\n>         void queueRequest(IPAContext &context, const uint32_t frame,\n> +                         IPAFrameContext &frameContext,\n>                           const ControlList &controls) override;\n>         void process(IPAContext &context, const uint32_t frame,\n>                      IPAFrameContext &frameCtx,\n> diff --git a/src/ipa/rkisp1/algorithms/cproc.cpp b/src/ipa/rkisp1/algorithms/cproc.cpp\n> index c0505c68765b..bc4a07073706 100644\n> --- a/src/ipa/rkisp1/algorithms/cproc.cpp\n> +++ b/src/ipa/rkisp1/algorithms/cproc.cpp\n> @@ -38,6 +38,7 @@ LOG_DEFINE_CATEGORY(RkISP1CProc)\n>   */\n>  void ColorProcessing::queueRequest(IPAContext &context,\n>                                    [[maybe_unused]] const uint32_t frame,\n> +                                  [[maybe_unused]] IPAFrameContext &frameContext,\n>                                    const ControlList &controls)\n>  {\n>         auto &cproc = context.frameContext.cproc;\n> diff --git a/src/ipa/rkisp1/algorithms/cproc.h b/src/ipa/rkisp1/algorithms/cproc.h\n> index 02c3d9c95488..ba6e901ae110 100644\n> --- a/src/ipa/rkisp1/algorithms/cproc.h\n> +++ b/src/ipa/rkisp1/algorithms/cproc.h\n> @@ -22,6 +22,7 @@ public:\n>         ~ColorProcessing() = default;\n>  \n>         void queueRequest(IPAContext &context, const uint32_t frame,\n> +                         IPAFrameContext &frameContext,\n>                           const ControlList &controls) override;\n>         void prepare(IPAContext &context, const uint32_t frame,\n>                      IPAFrameContext &frameContext,\n> diff --git a/src/ipa/rkisp1/algorithms/dpf.cpp b/src/ipa/rkisp1/algorithms/dpf.cpp\n> index 8286f83facc1..be024fc5fe90 100644\n> --- a/src/ipa/rkisp1/algorithms/dpf.cpp\n> +++ b/src/ipa/rkisp1/algorithms/dpf.cpp\n> @@ -176,6 +176,7 @@ int Dpf::init([[maybe_unused]] IPAContext &context,\n>   */\n>  void Dpf::queueRequest(IPAContext &context,\n>                        [[maybe_unused]] const uint32_t frame,\n> +                      [[maybe_unused]] IPAFrameContext &frameContext,\n>                        const ControlList &controls)\n>  {\n>         auto &dpf = context.frameContext.dpf;\n> diff --git a/src/ipa/rkisp1/algorithms/dpf.h b/src/ipa/rkisp1/algorithms/dpf.h\n> index 656d78dee67c..e232cad4ee87 100644\n> --- a/src/ipa/rkisp1/algorithms/dpf.h\n> +++ b/src/ipa/rkisp1/algorithms/dpf.h\n> @@ -23,6 +23,7 @@ public:\n>  \n>         int init(IPAContext &context, const YamlObject &tuningData) override;\n>         void queueRequest(IPAContext &context, const uint32_t frame,\n> +                         IPAFrameContext &frameContext,\n>                           const ControlList &controls) override;\n>         void prepare(IPAContext &context, const uint32_t frame,\n>                      IPAFrameContext &frameContext,\n> diff --git a/src/ipa/rkisp1/algorithms/filter.cpp b/src/ipa/rkisp1/algorithms/filter.cpp\n> index 02562339d008..6aa5476aa25e 100644\n> --- a/src/ipa/rkisp1/algorithms/filter.cpp\n> +++ b/src/ipa/rkisp1/algorithms/filter.cpp\n> @@ -44,6 +44,7 @@ static constexpr uint32_t kFiltModeDefault = 0x000004f2;\n>   */\n>  void Filter::queueRequest(IPAContext &context,\n>                           [[maybe_unused]] const uint32_t frame,\n> +                         [[maybe_unused]] IPAFrameContext &frameContext,\n>                           const ControlList &controls)\n>  {\n>         auto &filter = context.frameContext.filter;\n> diff --git a/src/ipa/rkisp1/algorithms/filter.h b/src/ipa/rkisp1/algorithms/filter.h\n> index ac69657e2f0f..3fd882ea41dc 100644\n> --- a/src/ipa/rkisp1/algorithms/filter.h\n> +++ b/src/ipa/rkisp1/algorithms/filter.h\n> @@ -22,6 +22,7 @@ public:\n>         ~Filter() = default;\n>  \n>         void queueRequest(IPAContext &context, const uint32_t frame,\n> +                         IPAFrameContext &frameContext,\n>                           const ControlList &controls) override;\n>         void prepare(IPAContext &context, const uint32_t frame,\n>                      IPAFrameContext &frameContext,\n> diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp\n> index b2593a584a1a..07210d16b5b5 100644\n> --- a/src/ipa/rkisp1/rkisp1.cpp\n> +++ b/src/ipa/rkisp1/rkisp1.cpp\n> @@ -292,8 +292,11 @@ void IPARkISP1::unmapBuffers(const std::vector<unsigned int> &ids)\n>  \n>  void IPARkISP1::queueRequest(const uint32_t frame, const ControlList &controls)\n>  {\n> +       /* \\todo Obtain the frame context to pass to process from the FCQueue */\n> +       IPAFrameContext frameContext;\n> +\n>         for (auto const &algo : algorithms())\n> -               algo->queueRequest(context_, frame, controls);\n> +               algo->queueRequest(context_, frame, frameContext, controls);\n>  }\n>  \n>  void IPARkISP1::fillParamsBuffer(const uint32_t frame, const uint32_t bufferId)\n> -- \n> Regards,\n> \n> Laurent Pinchart\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 E08E8C3272\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 20 Sep 2022 14:05:13 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0C03C621B2;\n\tTue, 20 Sep 2022 16:05:13 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2143F6218B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 20 Sep 2022 16:05:11 +0200 (CEST)","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 8623E6BE;\n\tTue, 20 Sep 2022 16:05:10 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1663682713;\n\tbh=r/q5QBSnY8E7qx87PRzT4kcGuorQNYFCGxvfhLGYgik=;\n\th=In-Reply-To:References:To:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=de8ov3TIfW9N/X/eq8iJMuIY+l3QdOVxDuv84nFmq7/FLz93vytlk5n8a/8Umf8fh\n\tKQ1jnvPl/jZ/IarGNuyWmWexVLC/tVaFVD5FBSKks1LS6aqQkSZcqDIzpO1AsIciRU\n\tkyaCRvWt0wxExABYwidOoQNjkz0UvzbVDy8UKupuJcLZADfndEim8PjJPLpw0SoJA5\n\tgGFnvwDjBODhKFLmCms8lEh3RGq5/thVoDHCQ5x1zpaNc4JJDL/w9rMGP8tjNW+nQG\n\tNoEPsdlsT1gA+WKjMt2Qp625ZwDFytOMmopxnbfHrtMAqbAeX+GuTfBOC/fzsGgQ4i\n\tcqNYf7ulgnfGg==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1663682710;\n\tbh=r/q5QBSnY8E7qx87PRzT4kcGuorQNYFCGxvfhLGYgik=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=efcQqn0Asd03QsJ2Z3LGvOvpVHCSzILXA6M0znEqTXszZx8r4HOXVlJkzYN55Cz+g\n\tPZoAQbiHRCZIQ/LFY+9bhsIdHKiBoNUw/7V4k5mvUTKVbAgHy6E1ACSvUF1cc+AVX0\n\tljRBiOQ9MEWK5eFeF0+piQQPFJjwth5pv05fowHs="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"efcQqn0A\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20220908014200.28728-9-laurent.pinchart@ideasonboard.com>","References":"<20220908014200.28728-1-laurent.pinchart@ideasonboard.com>\n\t<20220908014200.28728-9-laurent.pinchart@ideasonboard.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Tue, 20 Sep 2022 15:05:07 +0100","Message-ID":"<166368270771.3912877.5111402566648257979@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v4 08/32] ipa: libipa: algorithm:\n\tqueueRequest(): Pass frame context","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":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":25028,"web_url":"https://patchwork.libcamera.org/comment/25028/","msgid":"<YyoRKSFl6rrtE+RK@pendragon.ideasonboard.com>","date":"2022-09-20T19:14:49","subject":"Re: [libcamera-devel] [PATCH v4 08/32] ipa: libipa: algorithm:\n\tqueueRequest(): Pass frame context","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Kieran,\n\nOn Tue, Sep 20, 2022 at 03:05:07PM +0100, Kieran Bingham wrote:\n> Quoting Laurent Pinchart (2022-09-08 02:41:36)\n> > From: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > \n> > IPA modules have access to incoming Request's controls list and\n> > need to store them in the frame context at queueRequest() time.\n> > \n> > As each algorithm is expected to have ownership of a certain set of\n> > controls it should have access to the frame context where they have been\n> > stored, and where the algorithm computation results can be stored to\n> > later populate metadata.\n> > \n> > Now that both the IPU3 and RkISP1 IPA modules comply with the same\n> > interface, propagate the queueRequest() call to algorithms in the IPU3\n> \n> In the RKISP module? Or is this where something was dropped from the\n> IPU3?\n> \n> \n> It might be worth highlighting that this commit adds a dummy frame\n> context for the RKISP for the time being ?\n\nI'll update the commit message.\n\n> But other than that, lets get this moving.\n> \n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> \n> > IPA module.\n> > \n> > Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> > Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n> > ---\n> >  src/ipa/libipa/algorithm.cpp         | 1 +\n> >  src/ipa/libipa/algorithm.h           | 1 +\n> >  src/ipa/rkisp1/algorithms/awb.cpp    | 1 +\n> >  src/ipa/rkisp1/algorithms/awb.h      | 1 +\n> >  src/ipa/rkisp1/algorithms/cproc.cpp  | 1 +\n> >  src/ipa/rkisp1/algorithms/cproc.h    | 1 +\n> >  src/ipa/rkisp1/algorithms/dpf.cpp    | 1 +\n> >  src/ipa/rkisp1/algorithms/dpf.h      | 1 +\n> >  src/ipa/rkisp1/algorithms/filter.cpp | 1 +\n> >  src/ipa/rkisp1/algorithms/filter.h   | 1 +\n> >  src/ipa/rkisp1/rkisp1.cpp            | 5 ++++-\n> >  11 files changed, 14 insertions(+), 1 deletion(-)\n> > \n> > diff --git a/src/ipa/libipa/algorithm.cpp b/src/ipa/libipa/algorithm.cpp\n> > index 30eab67f71fc..c152b885aee1 100644\n> > --- a/src/ipa/libipa/algorithm.cpp\n> > +++ b/src/ipa/libipa/algorithm.cpp\n> > @@ -88,6 +88,7 @@ namespace ipa {\n> >   * \\brief Provide control values to the algorithm\n> >   * \\param[in] context The shared IPA context\n> >   * \\param[in] frame The frame number to apply the control values\n> > + * \\param[in] frameContext The current frame's context\n> >   * \\param[in] controls The list of user controls\n> >   *\n> >   * This function is called for each request queued to the camera. It provides\n> > diff --git a/src/ipa/libipa/algorithm.h b/src/ipa/libipa/algorithm.h\n> > index ee93d260ca3f..d8601f9ccaff 100644\n> > --- a/src/ipa/libipa/algorithm.h\n> > +++ b/src/ipa/libipa/algorithm.h\n> > @@ -47,6 +47,7 @@ public:\n> >  \n> >         virtual void queueRequest([[maybe_unused]] typename Module::Context &context,\n> >                                   [[maybe_unused]] const uint32_t frame,\n> > +                                 [[maybe_unused]] typename Module::FrameContext &frameContext,\n> >                                   [[maybe_unused]] const ControlList &controls)\n> >         {\n> >         }\n> > diff --git a/src/ipa/rkisp1/algorithms/awb.cpp b/src/ipa/rkisp1/algorithms/awb.cpp\n> > index aefba6382807..a23c32015454 100644\n> > --- a/src/ipa/rkisp1/algorithms/awb.cpp\n> > +++ b/src/ipa/rkisp1/algorithms/awb.cpp\n> > @@ -128,6 +128,7 @@ void Awb::prepare(IPAContext &context,\n> >   */\n> >  void Awb::queueRequest(IPAContext &context,\n> >                        [[maybe_unused]] const uint32_t frame,\n> > +                      [[maybe_unused]] IPAFrameContext &frameContext,\n> >                        const ControlList &controls)\n> >  {\n> >         auto &awb = context.frameContext.awb;\n> > diff --git a/src/ipa/rkisp1/algorithms/awb.h b/src/ipa/rkisp1/algorithms/awb.h\n> > index 806e11a2ec93..6d4a39467038 100644\n> > --- a/src/ipa/rkisp1/algorithms/awb.h\n> > +++ b/src/ipa/rkisp1/algorithms/awb.h\n> > @@ -24,6 +24,7 @@ public:\n> >                      IPAFrameContext &frameContext,\n> >                      rkisp1_params_cfg *params) override;\n> >         void queueRequest(IPAContext &context, const uint32_t frame,\n> > +                         IPAFrameContext &frameContext,\n> >                           const ControlList &controls) override;\n> >         void process(IPAContext &context, const uint32_t frame,\n> >                      IPAFrameContext &frameCtx,\n> > diff --git a/src/ipa/rkisp1/algorithms/cproc.cpp b/src/ipa/rkisp1/algorithms/cproc.cpp\n> > index c0505c68765b..bc4a07073706 100644\n> > --- a/src/ipa/rkisp1/algorithms/cproc.cpp\n> > +++ b/src/ipa/rkisp1/algorithms/cproc.cpp\n> > @@ -38,6 +38,7 @@ LOG_DEFINE_CATEGORY(RkISP1CProc)\n> >   */\n> >  void ColorProcessing::queueRequest(IPAContext &context,\n> >                                    [[maybe_unused]] const uint32_t frame,\n> > +                                  [[maybe_unused]] IPAFrameContext &frameContext,\n> >                                    const ControlList &controls)\n> >  {\n> >         auto &cproc = context.frameContext.cproc;\n> > diff --git a/src/ipa/rkisp1/algorithms/cproc.h b/src/ipa/rkisp1/algorithms/cproc.h\n> > index 02c3d9c95488..ba6e901ae110 100644\n> > --- a/src/ipa/rkisp1/algorithms/cproc.h\n> > +++ b/src/ipa/rkisp1/algorithms/cproc.h\n> > @@ -22,6 +22,7 @@ public:\n> >         ~ColorProcessing() = default;\n> >  \n> >         void queueRequest(IPAContext &context, const uint32_t frame,\n> > +                         IPAFrameContext &frameContext,\n> >                           const ControlList &controls) override;\n> >         void prepare(IPAContext &context, const uint32_t frame,\n> >                      IPAFrameContext &frameContext,\n> > diff --git a/src/ipa/rkisp1/algorithms/dpf.cpp b/src/ipa/rkisp1/algorithms/dpf.cpp\n> > index 8286f83facc1..be024fc5fe90 100644\n> > --- a/src/ipa/rkisp1/algorithms/dpf.cpp\n> > +++ b/src/ipa/rkisp1/algorithms/dpf.cpp\n> > @@ -176,6 +176,7 @@ int Dpf::init([[maybe_unused]] IPAContext &context,\n> >   */\n> >  void Dpf::queueRequest(IPAContext &context,\n> >                        [[maybe_unused]] const uint32_t frame,\n> > +                      [[maybe_unused]] IPAFrameContext &frameContext,\n> >                        const ControlList &controls)\n> >  {\n> >         auto &dpf = context.frameContext.dpf;\n> > diff --git a/src/ipa/rkisp1/algorithms/dpf.h b/src/ipa/rkisp1/algorithms/dpf.h\n> > index 656d78dee67c..e232cad4ee87 100644\n> > --- a/src/ipa/rkisp1/algorithms/dpf.h\n> > +++ b/src/ipa/rkisp1/algorithms/dpf.h\n> > @@ -23,6 +23,7 @@ public:\n> >  \n> >         int init(IPAContext &context, const YamlObject &tuningData) override;\n> >         void queueRequest(IPAContext &context, const uint32_t frame,\n> > +                         IPAFrameContext &frameContext,\n> >                           const ControlList &controls) override;\n> >         void prepare(IPAContext &context, const uint32_t frame,\n> >                      IPAFrameContext &frameContext,\n> > diff --git a/src/ipa/rkisp1/algorithms/filter.cpp b/src/ipa/rkisp1/algorithms/filter.cpp\n> > index 02562339d008..6aa5476aa25e 100644\n> > --- a/src/ipa/rkisp1/algorithms/filter.cpp\n> > +++ b/src/ipa/rkisp1/algorithms/filter.cpp\n> > @@ -44,6 +44,7 @@ static constexpr uint32_t kFiltModeDefault = 0x000004f2;\n> >   */\n> >  void Filter::queueRequest(IPAContext &context,\n> >                           [[maybe_unused]] const uint32_t frame,\n> > +                         [[maybe_unused]] IPAFrameContext &frameContext,\n> >                           const ControlList &controls)\n> >  {\n> >         auto &filter = context.frameContext.filter;\n> > diff --git a/src/ipa/rkisp1/algorithms/filter.h b/src/ipa/rkisp1/algorithms/filter.h\n> > index ac69657e2f0f..3fd882ea41dc 100644\n> > --- a/src/ipa/rkisp1/algorithms/filter.h\n> > +++ b/src/ipa/rkisp1/algorithms/filter.h\n> > @@ -22,6 +22,7 @@ public:\n> >         ~Filter() = default;\n> >  \n> >         void queueRequest(IPAContext &context, const uint32_t frame,\n> > +                         IPAFrameContext &frameContext,\n> >                           const ControlList &controls) override;\n> >         void prepare(IPAContext &context, const uint32_t frame,\n> >                      IPAFrameContext &frameContext,\n> > diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp\n> > index b2593a584a1a..07210d16b5b5 100644\n> > --- a/src/ipa/rkisp1/rkisp1.cpp\n> > +++ b/src/ipa/rkisp1/rkisp1.cpp\n> > @@ -292,8 +292,11 @@ void IPARkISP1::unmapBuffers(const std::vector<unsigned int> &ids)\n> >  \n> >  void IPARkISP1::queueRequest(const uint32_t frame, const ControlList &controls)\n> >  {\n> > +       /* \\todo Obtain the frame context to pass to process from the FCQueue */\n> > +       IPAFrameContext frameContext;\n> > +\n> >         for (auto const &algo : algorithms())\n> > -               algo->queueRequest(context_, frame, controls);\n> > +               algo->queueRequest(context_, frame, frameContext, controls);\n> >  }\n> >  \n> >  void IPARkISP1::fillParamsBuffer(const uint32_t frame, const uint32_t bufferId)","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 4E8EFC3272\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 20 Sep 2022 19:15:06 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A9E26621C7;\n\tTue, 20 Sep 2022 21:15:05 +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 03A3A6218B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 20 Sep 2022 21:15:04 +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 4B7246BE;\n\tTue, 20 Sep 2022 21:15:04 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1663701305;\n\tbh=ivfVgtnFSrVQesjhIrrhloH0p8phKQEsahsPDJLIbag=;\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=h1TPLGcsIeIUNOKTyWajLD9XCBqz5PHJhZHgXvVKzXdw3IymeW2//4Fy+tZYLFwyf\n\tMlmIJzuh4Q6iS9l2q0gCcrBsbkK/6xthGeSMLCUm3GCC68cGNySShS1PcUmpdi2/Of\n\tvxl/8CGP1YDRIiZU3HoXW3ulf8oKu8NMksGoXf3vp/ZZn88arcXhvvzKRfCvQ9D7ss\n\tXhlgWc0oHGOaMspjonLCLi1zcUrVYJKjSmvN22xFx1xi4Le7wP93eehPw7ozzM4ucr\n\t0ANwhYKN9Phdcxa1e4r+2FNc+lvzFnLLTyFS7BUnQHOMy7ma35ousBsj40DF7PrjAn\n\tQPc21v/ZATW5g==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1663701304;\n\tbh=ivfVgtnFSrVQesjhIrrhloH0p8phKQEsahsPDJLIbag=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=gLTiyevXPS8HR3YA+ulRJl1xI/d4B13KSry0NxDQf33j/uxSNf77jmKWGp2ghJ1IF\n\tRZ05ujgytq4xFM7oU3+FxqEAK4lWxjpQxI/A1TKHVeWNFuqdAplI9eO55WCZYWc61O\n\tBszZTbTZTrhDYOijvwszdcNVxC5RnWkfZkoJMxuk="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"gLTiyevX\"; dkim-atps=neutral","Date":"Tue, 20 Sep 2022 22:14:49 +0300","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<YyoRKSFl6rrtE+RK@pendragon.ideasonboard.com>","References":"<20220908014200.28728-1-laurent.pinchart@ideasonboard.com>\n\t<20220908014200.28728-9-laurent.pinchart@ideasonboard.com>\n\t<166368270771.3912877.5111402566648257979@Monstersaurus>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<166368270771.3912877.5111402566648257979@Monstersaurus>","Subject":"Re: [libcamera-devel] [PATCH v4 08/32] ipa: libipa: algorithm:\n\tqueueRequest(): Pass frame context","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>"}}]