[{"id":29467,"web_url":"https://patchwork.libcamera.org/comment/29467/","msgid":"<171524361684.1857112.2246111072542015867@ping.linuxembedded.co.uk>","date":"2024-05-09T08:33:36","subject":"Re: [PATCH v4 1/3] libcamera: pipeline: Rename pipelines to a\n\tshorter name","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Julien Vuillaumier (2024-05-03 15:49:17)\n> The PipelineHandlerFactoryBase class has a name that is\n> propagated to the PipelineHandler instance it creates.\n> \n> In present implementation, this name comes from the\n> REGISTER_PIPELINE_HANDLER registration macro. It corresponds to\n> the stringified name of the PipelineHandler derived class.\n> Therefore, PipelineHandler factories and instances names can be\n> quite long such as \"PipelineHandlerRkISP1\".\n> \n> A libcamera user may have to explicitly refer to a PipelineHandler\n> name for configuration purpose: one usage of the name can be to\n> define a pipeline handlers match list and their priorities.\n> It is desired, for user convenience, to use a short name to\n> designate a pipeline handler. Reusing the short pipeline names\n> already defined in the meson option files is an existing and\n> consistent way of naming pipelines.\n> \n> This change adds an explicit name parameter to the\n> REGISTER_PIPELINE_HANDLER registration macro. That parameter is\n> used to define the name of a pipeline handler factory, instead of\n> the current pipeline handler class name.\n> \n> Each pipeline registration is updated accordingly. The short name\n> assigned corresponds to the pipeline directory name in the\n> source tree. It is consistent with pipelines names used in meson.\n\nAll of the above sounds great.\n\n> Changing the pipeline name has an impact on the IPA modules:\n> each module defines a IPAModuleInfo structure. This structure has\n> a pipelineName member defining the pipeline handler name it shall\n> match with.\n> Therefore, each internal IPA module definition has to be changed\n> to have its IPAModuleInfo pipelineName name updated with the short\n> pipeline handler name.\n> \n> In addition to this pipelineName member, the IPAModuleInfo structure\n> also has a name member, associated to the IPA module name.\n> Having renamed the pipelines to a short name, the pipeline name and\n> the IPA module names of the IPAModuleInfo structure are the same:\n> for in-tree IPA, they correspond to the respective pipeline and IPA\n> subdirectories in the source tree.\n> However the IPA name could be different, for instance with a close\n> source IPA implementation built out-of-tree. Thus, it makes sense to\n> keep the IPA name in that structure, as the 2 definitions may not\n> always be redundant.\n\nThis was the first thing I noticed in the code ... why do we duplicate.\n\nBut it does sound like it makes sense, particularly if we want to\nregister or 'select' distinct IPAs which could be forseen in the future.\nEven to be able to select which IPA to prefer as you have done for the\nPipeline handlers, so I do think this is worthwhile. There are other\nways we could handle this, with substring matching, or 'compatible'\nstrings ... but it could always be updated on top IMO if we decide to.\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n\n> Signed-off-by: Julien Vuillaumier <julien.vuillaumier@nxp.com>\n> ---\n>  Documentation/guides/pipeline-handler.rst     | 4 +++-\n>  include/libcamera/internal/pipeline_handler.h | 4 ++--\n>  src/ipa/ipu3/ipu3.cpp                         | 2 +-\n>  src/ipa/rkisp1/rkisp1.cpp                     | 2 +-\n>  src/ipa/rpi/vc4/vc4.cpp                       | 2 +-\n>  src/ipa/simple/soft_simple.cpp                | 2 +-\n>  src/ipa/vimc/vimc.cpp                         | 2 +-\n>  src/libcamera/pipeline/imx8-isi/imx8-isi.cpp  | 2 +-\n>  src/libcamera/pipeline/ipu3/ipu3.cpp          | 2 +-\n>  src/libcamera/pipeline/mali-c55/mali-c55.cpp  | 2 +-\n>  src/libcamera/pipeline/rkisp1/rkisp1.cpp      | 2 +-\n>  src/libcamera/pipeline/rpi/vc4/vc4.cpp        | 2 +-\n>  src/libcamera/pipeline/simple/simple.cpp      | 2 +-\n>  src/libcamera/pipeline/uvcvideo/uvcvideo.cpp  | 2 +-\n>  src/libcamera/pipeline/vimc/vimc.cpp          | 2 +-\n>  src/libcamera/pipeline_handler.cpp            | 2 ++\n>  test/ipa/ipa_interface_test.cpp               | 2 +-\n>  test/ipa/ipa_module_test.cpp                  | 2 +-\n>  18 files changed, 22 insertions(+), 18 deletions(-)\n> \n> diff --git a/Documentation/guides/pipeline-handler.rst b/Documentation/guides/pipeline-handler.rst\n> index 728e9676..7e45cdb8 100644\n> --- a/Documentation/guides/pipeline-handler.rst\n> +++ b/Documentation/guides/pipeline-handler.rst\n> @@ -258,7 +258,7 @@ implementations for the overridden class members.\n>            return false;\n>     }\n>  \n> -   REGISTER_PIPELINE_HANDLER(PipelineHandlerVivid)\n> +   REGISTER_PIPELINE_HANDLER(PipelineHandlerVivid, \"vivid\")\n>  \n>     } /* namespace libcamera */\n>  \n> @@ -266,6 +266,8 @@ Note that you must register the ``PipelineHandler`` subclass with the pipeline\n>  handler factory using the `REGISTER_PIPELINE_HANDLER`_ macro which\n>  registers it and creates a global symbol to reference the class and make it\n>  available to try and match devices.\n> +String \"vivid\" is the name assigned to the pipeline, matching the pipeline\n> +subdirectory name in the source tree.\n\nI would write 'The string \"vivid\" is the name .... ' but that's minor.\nCould be fixed when applying if desired if everyone else is happy with\nthis patch.\n\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n\n\n\n>  \n>  .. _REGISTER_PIPELINE_HANDLER: https://libcamera.org/api-html/pipeline__handler_8h.html\n>  \n> diff --git a/include/libcamera/internal/pipeline_handler.h b/include/libcamera/internal/pipeline_handler.h\n> index c96944f4..cc70f69c 100644\n> --- a/include/libcamera/internal/pipeline_handler.h\n> +++ b/include/libcamera/internal/pipeline_handler.h\n> @@ -140,7 +140,7 @@ public:\n>         }\n>  };\n>  \n> -#define REGISTER_PIPELINE_HANDLER(handler) \\\n> -static PipelineHandlerFactory<handler> global_##handler##Factory(#handler);\n> +#define REGISTER_PIPELINE_HANDLER(handler, name) \\\n> +static PipelineHandlerFactory<handler> global_##handler##Factory(name);\n>  \n>  } /* namespace libcamera */\n> diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp\n> index 08ee6eb3..994c0eda 100644\n> --- a/src/ipa/ipu3/ipu3.cpp\n> +++ b/src/ipa/ipu3/ipu3.cpp\n> @@ -672,7 +672,7 @@ extern \"C\" {\n>  const struct IPAModuleInfo ipaModuleInfo = {\n>         IPA_MODULE_API_VERSION,\n>         1,\n> -       \"PipelineHandlerIPU3\",\n> +       \"ipu3\",\n>         \"ipu3\",\n>  };\n>  \n> diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp\n> index 9dc5f53c..5319c98f 100644\n> --- a/src/ipa/rkisp1/rkisp1.cpp\n> +++ b/src/ipa/rkisp1/rkisp1.cpp\n> @@ -458,7 +458,7 @@ extern \"C\" {\n>  const struct IPAModuleInfo ipaModuleInfo = {\n>         IPA_MODULE_API_VERSION,\n>         1,\n> -       \"PipelineHandlerRkISP1\",\n> +       \"rkisp1\",\n>         \"rkisp1\",\n>  };\n>  \n> diff --git a/src/ipa/rpi/vc4/vc4.cpp b/src/ipa/rpi/vc4/vc4.cpp\n> index d2159a51..11316e05 100644\n> --- a/src/ipa/rpi/vc4/vc4.cpp\n> +++ b/src/ipa/rpi/vc4/vc4.cpp\n> @@ -583,7 +583,7 @@ extern \"C\" {\n>  const struct IPAModuleInfo ipaModuleInfo = {\n>         IPA_MODULE_API_VERSION,\n>         1,\n> -       \"PipelineHandlerVc4\",\n> +       \"rpi/vc4\",\n>         \"rpi/vc4\",\n>  };\n>  \n> diff --git a/src/ipa/simple/soft_simple.cpp b/src/ipa/simple/soft_simple.cpp\n> index b9fb58b5..39c49448 100644\n> --- a/src/ipa/simple/soft_simple.cpp\n> +++ b/src/ipa/simple/soft_simple.cpp\n> @@ -389,7 +389,7 @@ extern \"C\" {\n>  const struct IPAModuleInfo ipaModuleInfo = {\n>         IPA_MODULE_API_VERSION,\n>         0,\n> -       \"SimplePipelineHandler\",\n> +       \"simple\",\n>         \"simple\",\n>  };\n>  \n> diff --git a/src/ipa/vimc/vimc.cpp b/src/ipa/vimc/vimc.cpp\n> index 2c255778..1bda772f 100644\n> --- a/src/ipa/vimc/vimc.cpp\n> +++ b/src/ipa/vimc/vimc.cpp\n> @@ -200,7 +200,7 @@ extern \"C\" {\n>  const struct IPAModuleInfo ipaModuleInfo = {\n>         IPA_MODULE_API_VERSION,\n>         0,\n> -       \"PipelineHandlerVimc\",\n> +       \"vimc\",\n>         \"vimc\",\n>  };\n>  \n> diff --git a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n> index 63082cea..f4d755c2 100644\n> --- a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n> +++ b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n> @@ -1112,6 +1112,6 @@ void PipelineHandlerISI::bufferReady(FrameBuffer *buffer)\n>         completeRequest(request);\n>  }\n>  \n> -REGISTER_PIPELINE_HANDLER(PipelineHandlerISI)\n> +REGISTER_PIPELINE_HANDLER(PipelineHandlerISI, \"imx8-isi\")\n>  \n>  } /* namespace libcamera */\n> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> index fa4bd0bb..d1708d42 100644\n> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> @@ -1420,6 +1420,6 @@ void IPU3CameraData::frameStart(uint32_t sequence)\n>                                 *testPatternMode);\n>  }\n>  \n> -REGISTER_PIPELINE_HANDLER(PipelineHandlerIPU3)\n> +REGISTER_PIPELINE_HANDLER(PipelineHandlerIPU3, \"ipu3\")\n>  \n>  } /* namespace libcamera */\n> diff --git a/src/libcamera/pipeline/mali-c55/mali-c55.cpp b/src/libcamera/pipeline/mali-c55/mali-c55.cpp\n> index 78343553..44e84bcf 100644\n> --- a/src/libcamera/pipeline/mali-c55/mali-c55.cpp\n> +++ b/src/libcamera/pipeline/mali-c55/mali-c55.cpp\n> @@ -1061,6 +1061,6 @@ bool PipelineHandlerMaliC55::match(DeviceEnumerator *enumerator)\n>         return true;\n>  }\n>  \n> -REGISTER_PIPELINE_HANDLER(PipelineHandlerMaliC55)\n> +REGISTER_PIPELINE_HANDLER(PipelineHandlerMaliC55, \"mali-c55\")\n>  \n>  } /* namespace libcamera */\n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> index abb21968..d8f99135 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> @@ -1322,6 +1322,6 @@ void PipelineHandlerRkISP1::statReady(FrameBuffer *buffer)\n>                                        data->delayedCtrls_->get(buffer->metadata().sequence));\n>  }\n>  \n> -REGISTER_PIPELINE_HANDLER(PipelineHandlerRkISP1)\n> +REGISTER_PIPELINE_HANDLER(PipelineHandlerRkISP1, \"rkisp1\")\n>  \n>  } /* namespace libcamera */\n> diff --git a/src/libcamera/pipeline/rpi/vc4/vc4.cpp b/src/libcamera/pipeline/rpi/vc4/vc4.cpp\n> index 947b1e73..013c6519 100644\n> --- a/src/libcamera/pipeline/rpi/vc4/vc4.cpp\n> +++ b/src/libcamera/pipeline/rpi/vc4/vc4.cpp\n> @@ -1018,6 +1018,6 @@ bool Vc4CameraData::findMatchingBuffers(BayerFrame &bayerFrame, FrameBuffer *&em\n>         return true;\n>  }\n>  \n> -REGISTER_PIPELINE_HANDLER(PipelineHandlerVc4)\n> +REGISTER_PIPELINE_HANDLER(PipelineHandlerVc4, \"rpi/vc4\")\n>  \n>  } /* namespace libcamera */\n> diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp\n> index 61a59926..e62e9172 100644\n> --- a/src/libcamera/pipeline/simple/simple.cpp\n> +++ b/src/libcamera/pipeline/simple/simple.cpp\n> @@ -1732,6 +1732,6 @@ void SimplePipelineHandler::releasePipeline(SimpleCameraData *data)\n>         }\n>  }\n>  \n> -REGISTER_PIPELINE_HANDLER(SimplePipelineHandler)\n> +REGISTER_PIPELINE_HANDLER(SimplePipelineHandler, \"simple\")\n>  \n>  } /* namespace libcamera */\n> diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n> index ed9c7f88..33464517 100644\n> --- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n> +++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n> @@ -709,6 +709,6 @@ void UVCCameraData::bufferReady(FrameBuffer *buffer)\n>         pipe()->completeRequest(request);\n>  }\n>  \n> -REGISTER_PIPELINE_HANDLER(PipelineHandlerUVC)\n> +REGISTER_PIPELINE_HANDLER(PipelineHandlerUVC, \"uvcvideo\")\n>  \n>  } /* namespace libcamera */\n> diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp\n> index 5e66ee1d..f681102d 100644\n> --- a/src/libcamera/pipeline/vimc/vimc.cpp\n> +++ b/src/libcamera/pipeline/vimc/vimc.cpp\n> @@ -623,6 +623,6 @@ void VimcCameraData::paramsBufferReady([[maybe_unused]] unsigned int id,\n>  {\n>  }\n>  \n> -REGISTER_PIPELINE_HANDLER(PipelineHandlerVimc)\n> +REGISTER_PIPELINE_HANDLER(PipelineHandlerVimc, \"vimc\")\n>  \n>  } /* namespace libcamera */\n> diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp\n> index 29e0c98a..0c913e50 100644\n> --- a/src/libcamera/pipeline_handler.cpp\n> +++ b/src/libcamera/pipeline_handler.cpp\n> @@ -830,6 +830,8 @@ std::vector<PipelineHandlerFactoryBase *> &PipelineHandlerFactoryBase::factories\n>   * \\def REGISTER_PIPELINE_HANDLER\n>   * \\brief Register a pipeline handler with the pipeline handler factory\n>   * \\param[in] handler Class name of PipelineHandler derived class to register\n> + * \\param[in] name Name assigned to the pipeline handler, matching the pipeline\n> + * subdirectory name in the source tree.\n>   *\n>   * Register a PipelineHandler subclass with the factory and make it available to\n>   * try and match devices.\n> diff --git a/test/ipa/ipa_interface_test.cpp b/test/ipa/ipa_interface_test.cpp\n> index 56f3cd6d..b489b5f6 100644\n> --- a/test/ipa/ipa_interface_test.cpp\n> +++ b/test/ipa/ipa_interface_test.cpp\n> @@ -56,7 +56,7 @@ protected:\n>                 const std::vector<PipelineHandlerFactoryBase *> &factories =\n>                         PipelineHandlerFactoryBase::factories();\n>                 for (const PipelineHandlerFactoryBase *factory : factories) {\n> -                       if (factory->name() == \"PipelineHandlerVimc\") {\n> +                       if (factory->name() == \"vimc\") {\n>                                 pipe_ = factory->create(nullptr);\n>                                 break;\n>                         }\n> diff --git a/test/ipa/ipa_module_test.cpp b/test/ipa/ipa_module_test.cpp\n> index bd5e0e4c..ae6f7a52 100644\n> --- a/test/ipa/ipa_module_test.cpp\n> +++ b/test/ipa/ipa_module_test.cpp\n> @@ -57,7 +57,7 @@ protected:\n>                 const struct IPAModuleInfo testInfo = {\n>                         IPA_MODULE_API_VERSION,\n>                         0,\n> -                       \"PipelineHandlerVimc\",\n> +                       \"vimc\",\n>                         \"vimc\",\n>                 };\n>  \n> -- \n> 2.34.1\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 55F27C3226\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  9 May 2024 08:33:42 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 57D6C6345F;\n\tThu,  9 May 2024 10:33:41 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9060B633FA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  9 May 2024 10:33:39 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 092B12CF2;\n\tThu,  9 May 2024 10:33:36 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"AyOa7a5U\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1715243616;\n\tbh=KsNtSdQ7o1puz3e+7BqbJEXHP5K8PAcDT1ol0/HWqQ8=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=AyOa7a5UyPEnTXiPUp5EDrkxgc7R24vKuEkIOZM9d4JAoBfVD3dEp8zv5su9Yq9ap\n\tm9zsZrpFJMeLuOoiCVNyMlRe1afcKsAfvfSEzyL/dFSGDMaqY+AXGWVWD/EjBpOOhG\n\tJyUuZ0BzeaprK7CPjLh1pJ+U6cRqL+Ehn6ZbQbNk=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20240503144919.2371357-2-julien.vuillaumier@nxp.com>","References":"<20240503144919.2371357-1-julien.vuillaumier@nxp.com>\n\t<20240503144919.2371357-2-julien.vuillaumier@nxp.com>","Subject":"Re: [PATCH v4 1/3] libcamera: pipeline: Rename pipelines to a\n\tshorter name","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"jacopo.mondi@ideasonboard.com, julien.vuillaumier@nxp.com","To":"Julien Vuillaumier <julien.vuillaumier@nxp.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Thu, 09 May 2024 09:33:36 +0100","Message-ID":"<171524361684.1857112.2246111072542015867@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","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":29501,"web_url":"https://patchwork.libcamera.org/comment/29501/","msgid":"<171526534519.1857112.2818955213252959090@ping.linuxembedded.co.uk>","date":"2024-05-09T14:35:45","subject":"Re: [PATCH v4 1/3] libcamera: pipeline: Rename pipelines to a\n\tshorter name","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Kieran Bingham (2024-05-09 09:33:36)\n> Quoting Julien Vuillaumier (2024-05-03 15:49:17)\n> > The PipelineHandlerFactoryBase class has a name that is\n> > propagated to the PipelineHandler instance it creates.\n> > \n> > In present implementation, this name comes from the\n> > REGISTER_PIPELINE_HANDLER registration macro. It corresponds to\n> > the stringified name of the PipelineHandler derived class.\n> > Therefore, PipelineHandler factories and instances names can be\n> > quite long such as \"PipelineHandlerRkISP1\".\n> > \n> > A libcamera user may have to explicitly refer to a PipelineHandler\n> > name for configuration purpose: one usage of the name can be to\n> > define a pipeline handlers match list and their priorities.\n> > It is desired, for user convenience, to use a short name to\n> > designate a pipeline handler. Reusing the short pipeline names\n> > already defined in the meson option files is an existing and\n> > consistent way of naming pipelines.\n> > \n> > This change adds an explicit name parameter to the\n> > REGISTER_PIPELINE_HANDLER registration macro. That parameter is\n> > used to define the name of a pipeline handler factory, instead of\n> > the current pipeline handler class name.\n> > \n> > Each pipeline registration is updated accordingly. The short name\n> > assigned corresponds to the pipeline directory name in the\n> > source tree. It is consistent with pipelines names used in meson.\n> \n> All of the above sounds great.\n> \n> > Changing the pipeline name has an impact on the IPA modules:\n> > each module defines a IPAModuleInfo structure. This structure has\n> > a pipelineName member defining the pipeline handler name it shall\n> > match with.\n> > Therefore, each internal IPA module definition has to be changed\n> > to have its IPAModuleInfo pipelineName name updated with the short\n> > pipeline handler name.\n> > \n> > In addition to this pipelineName member, the IPAModuleInfo structure\n> > also has a name member, associated to the IPA module name.\n> > Having renamed the pipelines to a short name, the pipeline name and\n> > the IPA module names of the IPAModuleInfo structure are the same:\n> > for in-tree IPA, they correspond to the respective pipeline and IPA\n> > subdirectories in the source tree.\n> > However the IPA name could be different, for instance with a close\n> > source IPA implementation built out-of-tree. Thus, it makes sense to\n> > keep the IPA name in that structure, as the 2 definitions may not\n> > always be redundant.\n> \n> This was the first thing I noticed in the code ... why do we duplicate.\n> \n> But it does sound like it makes sense, particularly if we want to\n> register or 'select' distinct IPAs which could be forseen in the future.\n> Even to be able to select which IPA to prefer as you have done for the\n> Pipeline handlers, so I do think this is worthwhile. There are other\n> ways we could handle this, with substring matching, or 'compatible'\n> strings ... but it could always be updated on top IMO if we decide to.\n> \n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> \n> > Signed-off-by: Julien Vuillaumier <julien.vuillaumier@nxp.com>\n> > ---\n> >  Documentation/guides/pipeline-handler.rst     | 4 +++-\n> >  include/libcamera/internal/pipeline_handler.h | 4 ++--\n> >  src/ipa/ipu3/ipu3.cpp                         | 2 +-\n> >  src/ipa/rkisp1/rkisp1.cpp                     | 2 +-\n> >  src/ipa/rpi/vc4/vc4.cpp                       | 2 +-\n> >  src/ipa/simple/soft_simple.cpp                | 2 +-\n> >  src/ipa/vimc/vimc.cpp                         | 2 +-\n> >  src/libcamera/pipeline/imx8-isi/imx8-isi.cpp  | 2 +-\n> >  src/libcamera/pipeline/ipu3/ipu3.cpp          | 2 +-\n> >  src/libcamera/pipeline/mali-c55/mali-c55.cpp  | 2 +-\n> >  src/libcamera/pipeline/rkisp1/rkisp1.cpp      | 2 +-\n> >  src/libcamera/pipeline/rpi/vc4/vc4.cpp        | 2 +-\n> >  src/libcamera/pipeline/simple/simple.cpp      | 2 +-\n> >  src/libcamera/pipeline/uvcvideo/uvcvideo.cpp  | 2 +-\n> >  src/libcamera/pipeline/vimc/vimc.cpp          | 2 +-\n> >  src/libcamera/pipeline_handler.cpp            | 2 ++\n> >  test/ipa/ipa_interface_test.cpp               | 2 +-\n> >  test/ipa/ipa_module_test.cpp                  | 2 +-\n> >  18 files changed, 22 insertions(+), 18 deletions(-)\n> > \n> > diff --git a/Documentation/guides/pipeline-handler.rst b/Documentation/guides/pipeline-handler.rst\n> > index 728e9676..7e45cdb8 100644\n> > --- a/Documentation/guides/pipeline-handler.rst\n> > +++ b/Documentation/guides/pipeline-handler.rst\n> > @@ -258,7 +258,7 @@ implementations for the overridden class members.\n> >            return false;\n> >     }\n> >  \n> > -   REGISTER_PIPELINE_HANDLER(PipelineHandlerVivid)\n> > +   REGISTER_PIPELINE_HANDLER(PipelineHandlerVivid, \"vivid\")\n> >  \n> >     } /* namespace libcamera */\n> >  \n> > @@ -266,6 +266,8 @@ Note that you must register the ``PipelineHandler`` subclass with the pipeline\n> >  handler factory using the `REGISTER_PIPELINE_HANDLER`_ macro which\n> >  registers it and creates a global symbol to reference the class and make it\n> >  available to try and match devices.\n> > +String \"vivid\" is the name assigned to the pipeline, matching the pipeline\n> > +subdirectory name in the source tree.\n> \n> I would write 'The string \"vivid\" is the name .... ' but that's minor.\n> Could be fixed when applying if desired if everyone else is happy with\n> this patch.\n> \n> \n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> \n> \n> \n> >  \n> >  .. _REGISTER_PIPELINE_HANDLER: https://libcamera.org/api-html/pipeline__handler_8h.html\n> >  \n> > diff --git a/include/libcamera/internal/pipeline_handler.h b/include/libcamera/internal/pipeline_handler.h\n> > index c96944f4..cc70f69c 100644\n> > --- a/include/libcamera/internal/pipeline_handler.h\n> > +++ b/include/libcamera/internal/pipeline_handler.h\n> > @@ -140,7 +140,7 @@ public:\n> >         }\n> >  };\n> >  \n> > -#define REGISTER_PIPELINE_HANDLER(handler) \\\n> > -static PipelineHandlerFactory<handler> global_##handler##Factory(#handler);\n> > +#define REGISTER_PIPELINE_HANDLER(handler, name) \\\n> > +static PipelineHandlerFactory<handler> global_##handler##Factory(name);\n> >  \n\nThe only checkstyle failure on this series is here, as clang wants to\nindent the static definition line.\n\nI think it's fine keeping it aligned left as it was, but I'm also\ntempted to indent it just to silence the checker.\n\nAny preferences from anyone?\n\n\nhttps://gitlab.freedesktop.org/camera/libcamera/-/jobs/58532646:\n\n------------------------------------------------------------------------------------------------\n2598ba4a94839d63ed1904a0080d6b8285220a5c libcamera: pipeline: Rename pipelines to a shorter name\n------------------------------------------------------------------------------------------------\n--- include/libcamera/internal/pipeline_handler.h\n+++ include/libcamera/internal/pipeline_handler.h\n@@ -141,6 +142,6 @@\n };\n\n #define REGISTER_PIPELINE_HANDLER(handler, name) \\\n-static PipelineHandlerFactory<handler> global_##handler##Factory(name);\n+\tstatic PipelineHandlerFactory<handler> global_##handler##Factory(name);\n\n } /* namespace libcamera */\n\n\n\n--\nKieran\n\n\n\n> >  } /* namespace libcamera */\n\n> > diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp\n> > index 08ee6eb3..994c0eda 100644\n> > --- a/src/ipa/ipu3/ipu3.cpp\n> > +++ b/src/ipa/ipu3/ipu3.cpp\n> > @@ -672,7 +672,7 @@ extern \"C\" {\n> >  const struct IPAModuleInfo ipaModuleInfo = {\n> >         IPA_MODULE_API_VERSION,\n> >         1,\n> > -       \"PipelineHandlerIPU3\",\n> > +       \"ipu3\",\n> >         \"ipu3\",\n> >  };\n> >  \n> > diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp\n> > index 9dc5f53c..5319c98f 100644\n> > --- a/src/ipa/rkisp1/rkisp1.cpp\n> > +++ b/src/ipa/rkisp1/rkisp1.cpp\n> > @@ -458,7 +458,7 @@ extern \"C\" {\n> >  const struct IPAModuleInfo ipaModuleInfo = {\n> >         IPA_MODULE_API_VERSION,\n> >         1,\n> > -       \"PipelineHandlerRkISP1\",\n> > +       \"rkisp1\",\n> >         \"rkisp1\",\n> >  };\n> >  \n> > diff --git a/src/ipa/rpi/vc4/vc4.cpp b/src/ipa/rpi/vc4/vc4.cpp\n> > index d2159a51..11316e05 100644\n> > --- a/src/ipa/rpi/vc4/vc4.cpp\n> > +++ b/src/ipa/rpi/vc4/vc4.cpp\n> > @@ -583,7 +583,7 @@ extern \"C\" {\n> >  const struct IPAModuleInfo ipaModuleInfo = {\n> >         IPA_MODULE_API_VERSION,\n> >         1,\n> > -       \"PipelineHandlerVc4\",\n> > +       \"rpi/vc4\",\n> >         \"rpi/vc4\",\n> >  };\n> >  \n> > diff --git a/src/ipa/simple/soft_simple.cpp b/src/ipa/simple/soft_simple.cpp\n> > index b9fb58b5..39c49448 100644\n> > --- a/src/ipa/simple/soft_simple.cpp\n> > +++ b/src/ipa/simple/soft_simple.cpp\n> > @@ -389,7 +389,7 @@ extern \"C\" {\n> >  const struct IPAModuleInfo ipaModuleInfo = {\n> >         IPA_MODULE_API_VERSION,\n> >         0,\n> > -       \"SimplePipelineHandler\",\n> > +       \"simple\",\n> >         \"simple\",\n> >  };\n> >  \n> > diff --git a/src/ipa/vimc/vimc.cpp b/src/ipa/vimc/vimc.cpp\n> > index 2c255778..1bda772f 100644\n> > --- a/src/ipa/vimc/vimc.cpp\n> > +++ b/src/ipa/vimc/vimc.cpp\n> > @@ -200,7 +200,7 @@ extern \"C\" {\n> >  const struct IPAModuleInfo ipaModuleInfo = {\n> >         IPA_MODULE_API_VERSION,\n> >         0,\n> > -       \"PipelineHandlerVimc\",\n> > +       \"vimc\",\n> >         \"vimc\",\n> >  };\n> >  \n> > diff --git a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n> > index 63082cea..f4d755c2 100644\n> > --- a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n> > +++ b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n> > @@ -1112,6 +1112,6 @@ void PipelineHandlerISI::bufferReady(FrameBuffer *buffer)\n> >         completeRequest(request);\n> >  }\n> >  \n> > -REGISTER_PIPELINE_HANDLER(PipelineHandlerISI)\n> > +REGISTER_PIPELINE_HANDLER(PipelineHandlerISI, \"imx8-isi\")\n> >  \n> >  } /* namespace libcamera */\n> > diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > index fa4bd0bb..d1708d42 100644\n> > --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > @@ -1420,6 +1420,6 @@ void IPU3CameraData::frameStart(uint32_t sequence)\n> >                                 *testPatternMode);\n> >  }\n> >  \n> > -REGISTER_PIPELINE_HANDLER(PipelineHandlerIPU3)\n> > +REGISTER_PIPELINE_HANDLER(PipelineHandlerIPU3, \"ipu3\")\n> >  \n> >  } /* namespace libcamera */\n> > diff --git a/src/libcamera/pipeline/mali-c55/mali-c55.cpp b/src/libcamera/pipeline/mali-c55/mali-c55.cpp\n> > index 78343553..44e84bcf 100644\n> > --- a/src/libcamera/pipeline/mali-c55/mali-c55.cpp\n> > +++ b/src/libcamera/pipeline/mali-c55/mali-c55.cpp\n> > @@ -1061,6 +1061,6 @@ bool PipelineHandlerMaliC55::match(DeviceEnumerator *enumerator)\n> >         return true;\n> >  }\n> >  \n> > -REGISTER_PIPELINE_HANDLER(PipelineHandlerMaliC55)\n> > +REGISTER_PIPELINE_HANDLER(PipelineHandlerMaliC55, \"mali-c55\")\n> >  \n> >  } /* namespace libcamera */\n> > diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> > index abb21968..d8f99135 100644\n> > --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> > +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> > @@ -1322,6 +1322,6 @@ void PipelineHandlerRkISP1::statReady(FrameBuffer *buffer)\n> >                                        data->delayedCtrls_->get(buffer->metadata().sequence));\n> >  }\n> >  \n> > -REGISTER_PIPELINE_HANDLER(PipelineHandlerRkISP1)\n> > +REGISTER_PIPELINE_HANDLER(PipelineHandlerRkISP1, \"rkisp1\")\n> >  \n> >  } /* namespace libcamera */\n> > diff --git a/src/libcamera/pipeline/rpi/vc4/vc4.cpp b/src/libcamera/pipeline/rpi/vc4/vc4.cpp\n> > index 947b1e73..013c6519 100644\n> > --- a/src/libcamera/pipeline/rpi/vc4/vc4.cpp\n> > +++ b/src/libcamera/pipeline/rpi/vc4/vc4.cpp\n> > @@ -1018,6 +1018,6 @@ bool Vc4CameraData::findMatchingBuffers(BayerFrame &bayerFrame, FrameBuffer *&em\n> >         return true;\n> >  }\n> >  \n> > -REGISTER_PIPELINE_HANDLER(PipelineHandlerVc4)\n> > +REGISTER_PIPELINE_HANDLER(PipelineHandlerVc4, \"rpi/vc4\")\n> >  \n> >  } /* namespace libcamera */\n> > diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp\n> > index 61a59926..e62e9172 100644\n> > --- a/src/libcamera/pipeline/simple/simple.cpp\n> > +++ b/src/libcamera/pipeline/simple/simple.cpp\n> > @@ -1732,6 +1732,6 @@ void SimplePipelineHandler::releasePipeline(SimpleCameraData *data)\n> >         }\n> >  }\n> >  \n> > -REGISTER_PIPELINE_HANDLER(SimplePipelineHandler)\n> > +REGISTER_PIPELINE_HANDLER(SimplePipelineHandler, \"simple\")\n> >  \n> >  } /* namespace libcamera */\n> > diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n> > index ed9c7f88..33464517 100644\n> > --- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n> > +++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n> > @@ -709,6 +709,6 @@ void UVCCameraData::bufferReady(FrameBuffer *buffer)\n> >         pipe()->completeRequest(request);\n> >  }\n> >  \n> > -REGISTER_PIPELINE_HANDLER(PipelineHandlerUVC)\n> > +REGISTER_PIPELINE_HANDLER(PipelineHandlerUVC, \"uvcvideo\")\n> >  \n> >  } /* namespace libcamera */\n> > diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp\n> > index 5e66ee1d..f681102d 100644\n> > --- a/src/libcamera/pipeline/vimc/vimc.cpp\n> > +++ b/src/libcamera/pipeline/vimc/vimc.cpp\n> > @@ -623,6 +623,6 @@ void VimcCameraData::paramsBufferReady([[maybe_unused]] unsigned int id,\n> >  {\n> >  }\n> >  \n> > -REGISTER_PIPELINE_HANDLER(PipelineHandlerVimc)\n> > +REGISTER_PIPELINE_HANDLER(PipelineHandlerVimc, \"vimc\")\n> >  \n> >  } /* namespace libcamera */\n> > diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp\n> > index 29e0c98a..0c913e50 100644\n> > --- a/src/libcamera/pipeline_handler.cpp\n> > +++ b/src/libcamera/pipeline_handler.cpp\n> > @@ -830,6 +830,8 @@ std::vector<PipelineHandlerFactoryBase *> &PipelineHandlerFactoryBase::factories\n> >   * \\def REGISTER_PIPELINE_HANDLER\n> >   * \\brief Register a pipeline handler with the pipeline handler factory\n> >   * \\param[in] handler Class name of PipelineHandler derived class to register\n> > + * \\param[in] name Name assigned to the pipeline handler, matching the pipeline\n> > + * subdirectory name in the source tree.\n> >   *\n> >   * Register a PipelineHandler subclass with the factory and make it available to\n> >   * try and match devices.\n> > diff --git a/test/ipa/ipa_interface_test.cpp b/test/ipa/ipa_interface_test.cpp\n> > index 56f3cd6d..b489b5f6 100644\n> > --- a/test/ipa/ipa_interface_test.cpp\n> > +++ b/test/ipa/ipa_interface_test.cpp\n> > @@ -56,7 +56,7 @@ protected:\n> >                 const std::vector<PipelineHandlerFactoryBase *> &factories =\n> >                         PipelineHandlerFactoryBase::factories();\n> >                 for (const PipelineHandlerFactoryBase *factory : factories) {\n> > -                       if (factory->name() == \"PipelineHandlerVimc\") {\n> > +                       if (factory->name() == \"vimc\") {\n> >                                 pipe_ = factory->create(nullptr);\n> >                                 break;\n> >                         }\n> > diff --git a/test/ipa/ipa_module_test.cpp b/test/ipa/ipa_module_test.cpp\n> > index bd5e0e4c..ae6f7a52 100644\n> > --- a/test/ipa/ipa_module_test.cpp\n> > +++ b/test/ipa/ipa_module_test.cpp\n> > @@ -57,7 +57,7 @@ protected:\n> >                 const struct IPAModuleInfo testInfo = {\n> >                         IPA_MODULE_API_VERSION,\n> >                         0,\n> > -                       \"PipelineHandlerVimc\",\n> > +                       \"vimc\",\n> >                         \"vimc\",\n> >                 };\n> >  \n> > -- \n> > 2.34.1\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 73678BDE6B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  9 May 2024 14:35:50 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9ECF46342D;\n\tThu,  9 May 2024 16:35:49 +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 294CF633FA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  9 May 2024 16:35:48 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 61FEB236;\n\tThu,  9 May 2024 16:35:44 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"a0NxjC/B\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1715265344;\n\tbh=zbQryIzAiqHs/sVHd0XvXKWoz7IT/1A12aPNPfUk3s0=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=a0NxjC/BnNJi2y0OEZpRbOoZo0Joh8L2sua2jOBQ5rS9VJjX/dUcqhHoiYWbuENLn\n\tyZ9IQ7VfcZqnHQPEGflTVQqbYD0ZwTbK0gYiZETcsrAuw+6Gj1J6u1CelolSoCPc/R\n\tGeIrw4sBtCj3QDzxRWLriJ07JivhXweE+UJvW13Y=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<171524361684.1857112.2246111072542015867@ping.linuxembedded.co.uk>","References":"<20240503144919.2371357-1-julien.vuillaumier@nxp.com>\n\t<20240503144919.2371357-2-julien.vuillaumier@nxp.com>\n\t<171524361684.1857112.2246111072542015867@ping.linuxembedded.co.uk>","Subject":"Re: [PATCH v4 1/3] libcamera: pipeline: Rename pipelines to a\n\tshorter name","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"jacopo.mondi@ideasonboard.com, julien.vuillaumier@nxp.com","To":"Julien Vuillaumier <julien.vuillaumier@nxp.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Thu, 09 May 2024 15:35:45 +0100","Message-ID":"<171526534519.1857112.2818955213252959090@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","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":29517,"web_url":"https://patchwork.libcamera.org/comment/29517/","msgid":"<c8747d3d-3d17-4b9d-8169-ad6ebf7196b5@nxp.com>","date":"2024-05-13T08:29:05","subject":"[PATCH v4 1/3] libcamera: pipeline: Rename pipelines to a shorter\n\tname","submitter":{"id":190,"url":"https://patchwork.libcamera.org/api/people/190/","name":"Julien Vuillaumier","email":"julien.vuillaumier@nxp.com"},"content":"Hi Kieran,\n\nOn 09/05/2024 10:33, Kieran Bingham wrote:\n> Quoting Julien Vuillaumier (2024-05-03 15:49:17)\n>> The PipelineHandlerFactoryBase class has a name that is\n>> propagated to the PipelineHandler instance it creates.\n>>\n>> In present implementation, this name comes from the\n>> REGISTER_PIPELINE_HANDLER registration macro. It corresponds to\n>> the stringified name of the PipelineHandler derived class.\n>> Therefore, PipelineHandler factories and instances names can be\n>> quite long such as \"PipelineHandlerRkISP1\".\n>>\n>> A libcamera user may have to explicitly refer to a PipelineHandler\n>> name for configuration purpose: one usage of the name can be to\n>> define a pipeline handlers match list and their priorities.\n>> It is desired, for user convenience, to use a short name to\n>> designate a pipeline handler. Reusing the short pipeline names\n>> already defined in the meson option files is an existing and\n>> consistent way of naming pipelines.\n>>\n>> This change adds an explicit name parameter to the\n>> REGISTER_PIPELINE_HANDLER registration macro. That parameter is\n>> used to define the name of a pipeline handler factory, instead of\n>> the current pipeline handler class name.\n>>\n>> Each pipeline registration is updated accordingly. The short name\n>> assigned corresponds to the pipeline directory name in the\n>> source tree. It is consistent with pipelines names used in meson.\n> \n> All of the above sounds great.\n> \n>> Changing the pipeline name has an impact on the IPA modules:\n>> each module defines a IPAModuleInfo structure. This structure has\n>> a pipelineName member defining the pipeline handler name it shall\n>> match with.\n>> Therefore, each internal IPA module definition has to be changed\n>> to have its IPAModuleInfo pipelineName name updated with the short\n>> pipeline handler name.\n>>\n>> In addition to this pipelineName member, the IPAModuleInfo structure\n>> also has a name member, associated to the IPA module name.\n>> Having renamed the pipelines to a short name, the pipeline name and\n>> the IPA module names of the IPAModuleInfo structure are the same:\n>> for in-tree IPA, they correspond to the respective pipeline and IPA\n>> subdirectories in the source tree.\n>> However the IPA name could be different, for instance with a close\n>> source IPA implementation built out-of-tree. Thus, it makes sense to\n>> keep the IPA name in that structure, as the 2 definitions may not\n>> always be redundant.\n> \n> This was the first thing I noticed in the code ... why do we duplicate.\n> \n> But it does sound like it makes sense, particularly if we want to\n> register or 'select' distinct IPAs which could be forseen in the future.\n> Even to be able to select which IPA to prefer as you have done for the\n> Pipeline handlers, so I do think this is worthwhile. There are other\n> ways we could handle this, with substring matching, or 'compatible'\n> strings ... but it could always be updated on top IMO if we decide to.\n\nAgreed, having a way to select a specific IPA module could be a \nconvenient addition for the future. As of now, there is presumably a way \nto do so by setting the LIBCAMERA_IPA_MODULE_PATH variable. But it \nrequires the IPA modules to be installed in different paths, which is \nnot always desired.\n\n> \n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> \n>> Signed-off-by: Julien Vuillaumier <julien.vuillaumier@nxp.com>\n>> ---\n>>   Documentation/guides/pipeline-handler.rst     | 4 +++-\n>>   include/libcamera/internal/pipeline_handler.h | 4 ++--\n>>   src/ipa/ipu3/ipu3.cpp                         | 2 +-\n>>   src/ipa/rkisp1/rkisp1.cpp                     | 2 +-\n>>   src/ipa/rpi/vc4/vc4.cpp                       | 2 +-\n>>   src/ipa/simple/soft_simple.cpp                | 2 +-\n>>   src/ipa/vimc/vimc.cpp                         | 2 +-\n>>   src/libcamera/pipeline/imx8-isi/imx8-isi.cpp  | 2 +-\n>>   src/libcamera/pipeline/ipu3/ipu3.cpp          | 2 +-\n>>   src/libcamera/pipeline/mali-c55/mali-c55.cpp  | 2 +-\n>>   src/libcamera/pipeline/rkisp1/rkisp1.cpp      | 2 +-\n>>   src/libcamera/pipeline/rpi/vc4/vc4.cpp        | 2 +-\n>>   src/libcamera/pipeline/simple/simple.cpp      | 2 +-\n>>   src/libcamera/pipeline/uvcvideo/uvcvideo.cpp  | 2 +-\n>>   src/libcamera/pipeline/vimc/vimc.cpp          | 2 +-\n>>   src/libcamera/pipeline_handler.cpp            | 2 ++\n>>   test/ipa/ipa_interface_test.cpp               | 2 +-\n>>   test/ipa/ipa_module_test.cpp                  | 2 +-\n>>   18 files changed, 22 insertions(+), 18 deletions(-)\n>>\n>> diff --git a/Documentation/guides/pipeline-handler.rst b/Documentation/guides/pipeline-handler.rst\n>> index 728e9676..7e45cdb8 100644\n>> --- a/Documentation/guides/pipeline-handler.rst\n>> +++ b/Documentation/guides/pipeline-handler.rst\n>> @@ -258,7 +258,7 @@ implementations for the overridden class members.\n>>             return false;\n>>      }\n>>\n>> -   REGISTER_PIPELINE_HANDLER(PipelineHandlerVivid)\n>> +   REGISTER_PIPELINE_HANDLER(PipelineHandlerVivid, \"vivid\")\n>>\n>>      } /* namespace libcamera */\n>>\n>> @@ -266,6 +266,8 @@ Note that you must register the ``PipelineHandler`` subclass with the pipeline\n>>   handler factory using the `REGISTER_PIPELINE_HANDLER`_ macro which\n>>   registers it and creates a global symbol to reference the class and make it\n>>   available to try and match devices.\n>> +String \"vivid\" is the name assigned to the pipeline, matching the pipeline\n>> +subdirectory name in the source tree.\n> \n> I would write 'The string \"vivid\" is the name .... ' but that's minor.\n> Could be fixed when applying if desired if everyone else is happy with\n> this patch.\n> \n\nPoint noted - I will add that fix if there is a new version of the patch \nset then.\n\nThanks,\nJulien\n\n> \n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> \n> \n> \n>>\n>>   .. _REGISTER_PIPELINE_HANDLER: https://libcamera.org/api-html/pipeline__handler_8h.html\n>>\n>> diff --git a/include/libcamera/internal/pipeline_handler.h b/include/libcamera/internal/pipeline_handler.h\n>> index c96944f4..cc70f69c 100644\n>> --- a/include/libcamera/internal/pipeline_handler.h\n>> +++ b/include/libcamera/internal/pipeline_handler.h\n>> @@ -140,7 +140,7 @@ public:\n>>          }\n>>   };\n>>\n>> -#define REGISTER_PIPELINE_HANDLER(handler) \\\n>> -static PipelineHandlerFactory<handler> global_##handler##Factory(#handler);\n>> +#define REGISTER_PIPELINE_HANDLER(handler, name) \\\n>> +static PipelineHandlerFactory<handler> global_##handler##Factory(name);\n>>\n>>   } /* namespace libcamera */\n>> diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp\n>> index 08ee6eb3..994c0eda 100644\n>> --- a/src/ipa/ipu3/ipu3.cpp\n>> +++ b/src/ipa/ipu3/ipu3.cpp\n>> @@ -672,7 +672,7 @@ extern \"C\" {\n>>   const struct IPAModuleInfo ipaModuleInfo = {\n>>          IPA_MODULE_API_VERSION,\n>>          1,\n>> -       \"PipelineHandlerIPU3\",\n>> +       \"ipu3\",\n>>          \"ipu3\",\n>>   };\n>>\n>> diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp\n>> index 9dc5f53c..5319c98f 100644\n>> --- a/src/ipa/rkisp1/rkisp1.cpp\n>> +++ b/src/ipa/rkisp1/rkisp1.cpp\n>> @@ -458,7 +458,7 @@ extern \"C\" {\n>>   const struct IPAModuleInfo ipaModuleInfo = {\n>>          IPA_MODULE_API_VERSION,\n>>          1,\n>> -       \"PipelineHandlerRkISP1\",\n>> +       \"rkisp1\",\n>>          \"rkisp1\",\n>>   };\n>>\n>> diff --git a/src/ipa/rpi/vc4/vc4.cpp b/src/ipa/rpi/vc4/vc4.cpp\n>> index d2159a51..11316e05 100644\n>> --- a/src/ipa/rpi/vc4/vc4.cpp\n>> +++ b/src/ipa/rpi/vc4/vc4.cpp\n>> @@ -583,7 +583,7 @@ extern \"C\" {\n>>   const struct IPAModuleInfo ipaModuleInfo = {\n>>          IPA_MODULE_API_VERSION,\n>>          1,\n>> -       \"PipelineHandlerVc4\",\n>> +       \"rpi/vc4\",\n>>          \"rpi/vc4\",\n>>   };\n>>\n>> diff --git a/src/ipa/simple/soft_simple.cpp b/src/ipa/simple/soft_simple.cpp\n>> index b9fb58b5..39c49448 100644\n>> --- a/src/ipa/simple/soft_simple.cpp\n>> +++ b/src/ipa/simple/soft_simple.cpp\n>> @@ -389,7 +389,7 @@ extern \"C\" {\n>>   const struct IPAModuleInfo ipaModuleInfo = {\n>>          IPA_MODULE_API_VERSION,\n>>          0,\n>> -       \"SimplePipelineHandler\",\n>> +       \"simple\",\n>>          \"simple\",\n>>   };\n>>\n>> diff --git a/src/ipa/vimc/vimc.cpp b/src/ipa/vimc/vimc.cpp\n>> index 2c255778..1bda772f 100644\n>> --- a/src/ipa/vimc/vimc.cpp\n>> +++ b/src/ipa/vimc/vimc.cpp\n>> @@ -200,7 +200,7 @@ extern \"C\" {\n>>   const struct IPAModuleInfo ipaModuleInfo = {\n>>          IPA_MODULE_API_VERSION,\n>>          0,\n>> -       \"PipelineHandlerVimc\",\n>> +       \"vimc\",\n>>          \"vimc\",\n>>   };\n>>\n>> diff --git a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n>> index 63082cea..f4d755c2 100644\n>> --- a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n>> +++ b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n>> @@ -1112,6 +1112,6 @@ void PipelineHandlerISI::bufferReady(FrameBuffer *buffer)\n>>          completeRequest(request);\n>>   }\n>>\n>> -REGISTER_PIPELINE_HANDLER(PipelineHandlerISI)\n>> +REGISTER_PIPELINE_HANDLER(PipelineHandlerISI, \"imx8-isi\")\n>>\n>>   } /* namespace libcamera */\n>> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n>> index fa4bd0bb..d1708d42 100644\n>> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n>> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n>> @@ -1420,6 +1420,6 @@ void IPU3CameraData::frameStart(uint32_t sequence)\n>>                                  *testPatternMode);\n>>   }\n>>\n>> -REGISTER_PIPELINE_HANDLER(PipelineHandlerIPU3)\n>> +REGISTER_PIPELINE_HANDLER(PipelineHandlerIPU3, \"ipu3\")\n>>\n>>   } /* namespace libcamera */\n>> diff --git a/src/libcamera/pipeline/mali-c55/mali-c55.cpp b/src/libcamera/pipeline/mali-c55/mali-c55.cpp\n>> index 78343553..44e84bcf 100644\n>> --- a/src/libcamera/pipeline/mali-c55/mali-c55.cpp\n>> +++ b/src/libcamera/pipeline/mali-c55/mali-c55.cpp\n>> @@ -1061,6 +1061,6 @@ bool PipelineHandlerMaliC55::match(DeviceEnumerator *enumerator)\n>>          return true;\n>>   }\n>>\n>> -REGISTER_PIPELINE_HANDLER(PipelineHandlerMaliC55)\n>> +REGISTER_PIPELINE_HANDLER(PipelineHandlerMaliC55, \"mali-c55\")\n>>\n>>   } /* namespace libcamera */\n>> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n>> index abb21968..d8f99135 100644\n>> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n>> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n>> @@ -1322,6 +1322,6 @@ void PipelineHandlerRkISP1::statReady(FrameBuffer *buffer)\n>>                                         data->delayedCtrls_->get(buffer->metadata().sequence));\n>>   }\n>>\n>> -REGISTER_PIPELINE_HANDLER(PipelineHandlerRkISP1)\n>> +REGISTER_PIPELINE_HANDLER(PipelineHandlerRkISP1, \"rkisp1\")\n>>\n>>   } /* namespace libcamera */\n>> diff --git a/src/libcamera/pipeline/rpi/vc4/vc4.cpp b/src/libcamera/pipeline/rpi/vc4/vc4.cpp\n>> index 947b1e73..013c6519 100644\n>> --- a/src/libcamera/pipeline/rpi/vc4/vc4.cpp\n>> +++ b/src/libcamera/pipeline/rpi/vc4/vc4.cpp\n>> @@ -1018,6 +1018,6 @@ bool Vc4CameraData::findMatchingBuffers(BayerFrame &bayerFrame, FrameBuffer *&em\n>>          return true;\n>>   }\n>>\n>> -REGISTER_PIPELINE_HANDLER(PipelineHandlerVc4)\n>> +REGISTER_PIPELINE_HANDLER(PipelineHandlerVc4, \"rpi/vc4\")\n>>\n>>   } /* namespace libcamera */\n>> diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp\n>> index 61a59926..e62e9172 100644\n>> --- a/src/libcamera/pipeline/simple/simple.cpp\n>> +++ b/src/libcamera/pipeline/simple/simple.cpp\n>> @@ -1732,6 +1732,6 @@ void SimplePipelineHandler::releasePipeline(SimpleCameraData *data)\n>>          }\n>>   }\n>>\n>> -REGISTER_PIPELINE_HANDLER(SimplePipelineHandler)\n>> +REGISTER_PIPELINE_HANDLER(SimplePipelineHandler, \"simple\")\n>>\n>>   } /* namespace libcamera */\n>> diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n>> index ed9c7f88..33464517 100644\n>> --- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n>> +++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n>> @@ -709,6 +709,6 @@ void UVCCameraData::bufferReady(FrameBuffer *buffer)\n>>          pipe()->completeRequest(request);\n>>   }\n>>\n>> -REGISTER_PIPELINE_HANDLER(PipelineHandlerUVC)\n>> +REGISTER_PIPELINE_HANDLER(PipelineHandlerUVC, \"uvcvideo\")\n>>\n>>   } /* namespace libcamera */\n>> diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp\n>> index 5e66ee1d..f681102d 100644\n>> --- a/src/libcamera/pipeline/vimc/vimc.cpp\n>> +++ b/src/libcamera/pipeline/vimc/vimc.cpp\n>> @@ -623,6 +623,6 @@ void VimcCameraData::paramsBufferReady([[maybe_unused]] unsigned int id,\n>>   {\n>>   }\n>>\n>> -REGISTER_PIPELINE_HANDLER(PipelineHandlerVimc)\n>> +REGISTER_PIPELINE_HANDLER(PipelineHandlerVimc, \"vimc\")\n>>\n>>   } /* namespace libcamera */\n>> diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp\n>> index 29e0c98a..0c913e50 100644\n>> --- a/src/libcamera/pipeline_handler.cpp\n>> +++ b/src/libcamera/pipeline_handler.cpp\n>> @@ -830,6 +830,8 @@ std::vector<PipelineHandlerFactoryBase *> &PipelineHandlerFactoryBase::factories\n>>    * \\def REGISTER_PIPELINE_HANDLER\n>>    * \\brief Register a pipeline handler with the pipeline handler factory\n>>    * \\param[in] handler Class name of PipelineHandler derived class to register\n>> + * \\param[in] name Name assigned to the pipeline handler, matching the pipeline\n>> + * subdirectory name in the source tree.\n>>    *\n>>    * Register a PipelineHandler subclass with the factory and make it available to\n>>    * try and match devices.\n>> diff --git a/test/ipa/ipa_interface_test.cpp b/test/ipa/ipa_interface_test.cpp\n>> index 56f3cd6d..b489b5f6 100644\n>> --- a/test/ipa/ipa_interface_test.cpp\n>> +++ b/test/ipa/ipa_interface_test.cpp\n>> @@ -56,7 +56,7 @@ protected:\n>>                  const std::vector<PipelineHandlerFactoryBase *> &factories =\n>>                          PipelineHandlerFactoryBase::factories();\n>>                  for (const PipelineHandlerFactoryBase *factory : factories) {\n>> -                       if (factory->name() == \"PipelineHandlerVimc\") {\n>> +                       if (factory->name() == \"vimc\") {\n>>                                  pipe_ = factory->create(nullptr);\n>>                                  break;\n>>                          }\n>> diff --git a/test/ipa/ipa_module_test.cpp b/test/ipa/ipa_module_test.cpp\n>> index bd5e0e4c..ae6f7a52 100644\n>> --- a/test/ipa/ipa_module_test.cpp\n>> +++ b/test/ipa/ipa_module_test.cpp\n>> @@ -57,7 +57,7 @@ protected:\n>>                  const struct IPAModuleInfo testInfo = {\n>>                          IPA_MODULE_API_VERSION,\n>>                          0,\n>> -                       \"PipelineHandlerVimc\",\n>> +                       \"vimc\",\n>>                          \"vimc\",\n>>                  };\n>>\n>> --\n>> 2.34.1\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 10EA6BDE6B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 13 May 2024 08:28:41 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A11536347C;\n\tMon, 13 May 2024 10:28:40 +0200 (CEST)","from EUR02-VI1-obe.outbound.protection.outlook.com\n\t(mail-vi1eur02on20600.outbound.protection.outlook.com\n\t[IPv6:2a01:111:f403:2607::600])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 59BBD63461\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 13 May 2024 10:28:38 +0200 (CEST)","from AM9PR04MB8147.eurprd04.prod.outlook.com\n\t(2603:10a6:20b:3e0::22)\n\tby PA2PR04MB10086.eurprd04.prod.outlook.com (2603:10a6:102:40d::17)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.49;\n\tMon, 13 May 2024 08:28:36 +0000","from AM9PR04MB8147.eurprd04.prod.outlook.com\n\t([fe80::eace:e980:28a4:ef8a]) by\n\tAM9PR04MB8147.eurprd04.prod.outlook.com\n\t([fe80::eace:e980:28a4:ef8a%2]) with mapi id 15.20.7544.041;\n\tMon, 13 May 2024 08:28:36 +0000"],"Authentication-Results":["lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=nxp.com header.i=@nxp.com header.b=\"ApjuZ9zt\";\n\tdkim-atps=neutral","dkim=none (message not signed)\n\theader.d=none;dmarc=none action=none header.from=nxp.com;"],"ARC-Seal":"i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n\tb=I1mByKPAX363gJLYF2+ouChV5uebnoD88oV6snPoEqf+kR/oKTA0+Oq2BfuIoxMpHxfbY670qLIHZ/FxfpcF3gjKOpQywGku5w9PBjyceVZ8UAQxwGlVX9488lX0bMFsvJg6ZVsacbo3qUlcES4Sha318tXOyRNtluCS+CtkWMH0JqbDl+9CvCBw4uSo30Jl1A4yNhx+EExezVp3YJjqcLnePHuMJbdas2V3uJJAFXG9GDTPIzSG96JQvGjE3yIFQRCN3Zk4ZOC4amEkTUTVTKpL1fuu3wj2JRRN9ga6WhRtF4yiSJ/B62cTuW9T7Fg8MUydhLJ0QdeRv491sBaXug==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n\ts=arcselector9901;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n\tbh=87hv3Ve0/5hLlcX1S+3Qyc2iEWbq6MUCGOBzXWOwbEk=;\n\tb=UG2iASvXinEJTcW6IRrM0UsfcAhSvxGU2pLGcx7iks/lCihJrwJWT3riALRn3IfyfMd+gdC0Y7IYS5jSehZh3+UamxHpTo39hEHXlFGUohp5eVzNhw7ZiNE23oz5E3gtvNGChSs5Ro5peE3Gs8LhlU3s6sOB3As1nPWlOVIB6oLvdlJGcckHFUI+9PnDLHEN+ifyl5w/FOYn43e7KEwKIm9aLV6PRkdBX/t24WzlINUTuUMdj1+zJYSzw9K/oW5pbJoH4nXjbZE6/ehURxNJPAq+hPYPrGRfXfT9JONNPgWMxinRYPAypEKIYCJCdT3jRHgnFpyAkp1mCJif/3mQdA==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass\n\tsmtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com;\n\tdkim=pass header.d=nxp.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=87hv3Ve0/5hLlcX1S+3Qyc2iEWbq6MUCGOBzXWOwbEk=;\n\tb=ApjuZ9zt+fQDeijGem1bJ8njQXxrBtXIzWoFTChocxroBSYr6hu/FxpjkFQncoI4xsODRoVRuBVn1YMBM3rXkGmlEru++w8AtB9z6J6sTlGmzcMKPl5JE/T7cPqDUkQwUOnxjZ+EVAoCAXlKV83gVSvgSLcTdMPpGxUHaLNpDEM=","Message-ID":"<c8747d3d-3d17-4b9d-8169-ad6ebf7196b5@nxp.com>","Date":"Mon, 13 May 2024 10:29:05 +0200","User-Agent":"Mozilla Thunderbird","Subject":"[PATCH v4 1/3] libcamera: pipeline: Rename pipelines to a shorter\n\tname","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Cc":"jacopo.mondi@ideasonboard.com","References":"<20240503144919.2371357-1-julien.vuillaumier@nxp.com>\n\t<20240503144919.2371357-2-julien.vuillaumier@nxp.com>\n\t<171524361684.1857112.2246111072542015867@ping.linuxembedded.co.uk>","Content-Language":"en-US","From":"Julien Vuillaumier <julien.vuillaumier@nxp.com>","In-Reply-To":"<171524361684.1857112.2246111072542015867@ping.linuxembedded.co.uk>","Content-Type":"text/plain; charset=UTF-8; format=flowed","X-ClientProxiedBy":"AM9P195CA0017.EURP195.PROD.OUTLOOK.COM\n\t(2603:10a6:20b:21f::22) To AM9PR04MB8147.eurprd04.prod.outlook.com\n\t(2603:10a6:20b:3e0::22)","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"AM9PR04MB8147:EE_|PA2PR04MB10086:EE_","X-MS-Office365-Filtering-Correlation-Id":"a0b79139-f9b1-4624-e60f-08dc7326af06","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;ARA:13230031|1800799015|376005|366007;","X-Microsoft-Antispam-Message-Info":"=?utf-8?q?W/xOEYmNIdLXJIQBSWxQO4m3aOkK?=\n\t=?utf-8?q?OM5J9K79zaW8pdKy++zDHj5LNOcC6Nuc4lgAPhs4AgudQBHtSa2Oz0vX?=\n\t=?utf-8?q?h7+HleRX+eFMbs8YEhlO52tm43bahUZObaRBqMUbpthGIhLGwrlpBGwl?=\n\t=?utf-8?q?vAtbaf3tXl+vLLTat+P0mhbeXl2HA8v+PxJglgKNJRB/gCQiiZvqAdWh?=\n\t=?utf-8?q?XPef3/m0LFcQdLC1J1aHxFREIMgZ+wX3Kd6IeEw4kLGau1mfUtZ9lPs4?=\n\t=?utf-8?q?S+9x4XBadTYxyQKpDqMdJNAf/CTqt7kYajKnR+oeJ6zXWbFJ7CKI09w/?=\n\t=?utf-8?q?3/bQ8hAzvylYky0JTLixzbXCMLeb+GX7ViQxwWKT363YAt6QmlZNo+lN?=\n\t=?utf-8?q?khD5QueD5rUSAv1u9+tRn1BCxAiD/i837KuFZ9WbUPV7Mv6WjPaDgh8Y?=\n\t=?utf-8?q?c7xQCJ7Un163eO62lZ7p8NVVb36GJGNf4m8oGEtiAqbv5BmieYryqRgB?=\n\t=?utf-8?q?H7shaoZX2j405HECi0zrB98PQlbwOK6024ZKXHNmZcf/noRrQv80f0VC?=\n\t=?utf-8?q?DjyEVKGGLHZEbzpQ9jmD4BzTnK1/tXbmBWYeRVb/5JafXN26aCzKNovc?=\n\t=?utf-8?q?jiOLZMNZpQPFcMJTf0n7juj5uA8Fe/603hZh4GGjggSIEyVWwui1r3Wu?=\n\t=?utf-8?q?EiWE8PM4OrutyqNfW6+zR9BZgu+5Jgk8FZ4FXPdtMWipHwTk2alZSAqE?=\n\t=?utf-8?q?2FgLoxwUwaajPKiqfJaAdA3ptKrHJGq+v+r6WSpV2+0Ohrwhf+qu7M99?=\n\t=?utf-8?q?N84CeniSh0FsiQLsSzukAGbKpIyd+x1x3N43mYBruY34VglhyVNGEOEL?=\n\t=?utf-8?q?j0OMWc+D9D+ucx/OgEA2ufZlPRP71pQn+Hibsn5XKLA7Al5DOxMb5D7k?=\n\t=?utf-8?q?9LpDrMCKk+40ceVDbRFtCN89CIj5xo8KvWA04+x63YvGbS3Gn+vJe+aB?=\n\t=?utf-8?q?40mJhNsoIajim7ExqU4cL2aeIyjI43MW9JUE0p6gNjWHf5+3DhHNx7YC?=\n\t=?utf-8?q?k11ojwC5fwew6zKxQ+ukXLe/0FjuDLBU/1KR26VCfdQxPeQ2OR5ganNY?=\n\t=?utf-8?q?s9zZRLZLtX95qn1JUsBcY+ssGpltPVJCMlmSzWpopmC0jCzprZub+ndq?=\n\t=?utf-8?q?rNs4SKVXAje3emwVVTucYDFV9X8xuQUEnHKvvwKtuRehzwpNIcjg9pVh?=\n\t=?utf-8?q?HdCePnbsbc+NHG9u2iuf849ASaIWvNLgbo9a73tExYdBATIcTegNbOjt?=\n\t=?utf-8?q?vL9uIxo/QMEREzys4jKqRDwuO5YQDOj+9A=3D=3D?=","X-Forefront-Antispam-Report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n\tIPV:NLI; SFV:NSPM; H:AM9PR04MB8147.eurprd04.prod.outlook.com; PTR:;\n\tCAT:NONE; \n\tSFS:(13230031)(1800799015)(376005)(366007); DIR:OUT; SFP:1101; ","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"=?utf-8?q?eM2emfOzsiCaceItrBXHJGYHC?=\n\t=?utf-8?q?4FAxBByYzlA0TFlDYxaRtBdHcQCwztpl6loH3lwConqsJspygKjMqdAr?=\n\t=?utf-8?q?0fa6WbE0naIGOJK8glPtdDLThLVziyTP4EIKNI10ybtmGSHPjWbqhD79?=\n\t=?utf-8?q?MUC/TOBjPSsUrYzJIvp1ha6jlOq9Tfkfyh5Cpl39jYyB1MgACgidI3u1?=\n\t=?utf-8?q?VHvYx1cDZfaRSKVMZ/rmjSvnLWGA/9dTG2pQBFmd04Imv30WVcgyIc+T?=\n\t=?utf-8?q?j2bnvexnFsbJ6FTrC3g/uBrABhzasPYLHVtO/oaP+ykgS7oqAELoxYCL?=\n\t=?utf-8?q?sczN2eba2at0vSWtrOmnmJCVngLFeh6mRmEEb43SXSG3LdnNRUsvh9PV?=\n\t=?utf-8?q?cZ8H2rErDkeYRCdTLrcGU9RHtBxMUrdS9ql/lIvzON7UB5Bsqnr8MgHp?=\n\t=?utf-8?q?2Om+ZA+DU+dYO1h6Fitlk5EvyhJQc9JPlVk5kdYYIFDFKfLOISGYqjCy?=\n\t=?utf-8?q?UqZIjaZsG/bfpuwhnwjueLuiKv1wUemsx0CwPIFagMGvGTdlOVjW3+Kx?=\n\t=?utf-8?q?kz56TAZGHB5Z6vJBAePPOFdPAVTD5C/HITxSTEXfj9+nc/p7ii257yMl?=\n\t=?utf-8?q?eqo1E+rjuD33oXgsg6mYTUnNwwwxDotPEkkkZxz0ABYJbhHl96aKVYmF?=\n\t=?utf-8?q?e97vtkVthANlQ4dpkJoGv6PrIFZAvGn7SdurdZqahuiHMHm9/PR4RDv/?=\n\t=?utf-8?q?sm0HYylnICfgFnLNVv84RZDg8u6KqLfazGG5S8PS/Da7ndAmq784GJDM?=\n\t=?utf-8?q?lNr6iZpioxNfUyKP9eArUTC03+3Q80PY2Nm7vGy1mv20oyb9Wp1kMij7?=\n\t=?utf-8?q?haRIUtReQuEC0VCB7F2IJo4Cs5YWc3uAD4h9kWzPEMQa6EJYQUjLEVX+?=\n\t=?utf-8?q?AGOQJC1bPXH7ivESf6XNyixbmtJkCOHvcWHxHEmUPI8TrB3p4GvarycT?=\n\t=?utf-8?q?BiYHeHVcF1YaX+vyLQYBMGU1+f/VPlhhGLbsfZFE07QcBVa+mTkFFs9W?=\n\t=?utf-8?q?JoHhYuJSEl+ToGjuD0mKyxAX9COeGlDBkDN6vhggYAvB1Wb/2ZTwiKgb?=\n\t=?utf-8?q?xCvmSX8CuiXHLiqqqFlhF0WGFQ9qiA7nzJbgoEvTbvYDofsCPjQleQ9Q?=\n\t=?utf-8?q?/wC8sn7G1jsZvWwOox35A9dtDm2TrlRFSH01UyNthku04THFB7ZoAPLs?=\n\t=?utf-8?q?0D7zT2m9chcOSZi6GD5O0NtzbufjdFXdViCpvnuKT/MLCBqNUYcscmJb?=\n\t=?utf-8?q?s4rZvf/ocG7I/4mX698z8adyf48pZpvHvXTDizd1+z7+Mikwc3NMbs5v?=\n\t=?utf-8?q?ZKrpjvqcqs/2ywye6XCF835tWT32H0n4NxSKo1+tszkvLJn9mSb/CxEm?=\n\t=?utf-8?q?/gevOcH391FjS7Vx0Q7LGmM+BrrGCV2GDvUdwMgeberx1db7gdlJuHxI?=\n\t=?utf-8?q?SFpkeD08o/QY9V6rpgxwMWhuJY/YzvTQPrNZ4ykhQIr46quwUbS2OxCW?=\n\t=?utf-8?q?dZGwEBzgo9DWHzJrjexSxFmh0T/h04wsTwZcrba4g0sgTfHLyoifcZT2?=\n\t=?utf-8?q?hYo3ZP3nfvdFTgeTQvotlNF4w3uMN0RrbIfheKFLdVa0mHCDaLnzmuli?=\n\t=?utf-8?q?EWBmlv6gawp/NGL8I6el8xCyWjFB5gA6tDsTkkHAM38sxPdfXeweoqvU?=\n\t=?utf-8?q?Q8fQacSuLMI0RfYCrm8IvxcWu+U/g=3D=3D?=","X-OriginatorOrg":"nxp.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"a0b79139-f9b1-4624-e60f-08dc7326af06","X-MS-Exchange-CrossTenant-AuthSource":"AM9PR04MB8147.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"13 May 2024 08:28:36.4131\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"686ea1d3-bc2b-4c6f-a92c-d99c5c301635","X-MS-Exchange-CrossTenant-MailboxType":"HOSTED","X-MS-Exchange-CrossTenant-UserPrincipalName":"0ZbAmahu9gXWhTHTBa3BjqLx7XQ09Vyyy/nGFmJNlH21qmMRo7HDHyA99GhUzkNqkU0ERrlwUr/oVWDEU1ObqGPEFsgkwpf4QpgZTMj25Gs=","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"PA2PR04MB10086","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":29518,"web_url":"https://patchwork.libcamera.org/comment/29518/","msgid":"<a877ee6a-1124-46d4-a3cd-3736f5e363de@nxp.com>","date":"2024-05-13T08:55:02","subject":"[PATCH v4 1/3] libcamera: pipeline: Rename pipelines to a shorter\n\tname","submitter":{"id":190,"url":"https://patchwork.libcamera.org/api/people/190/","name":"Julien Vuillaumier","email":"julien.vuillaumier@nxp.com"},"content":"Hi Kieran,\n\nOn 09/05/2024 16:35, Kieran Bingham wrote:\n\n> Quoting Kieran Bingham (2024-05-09 09:33:36)\n>> Quoting Julien Vuillaumier (2024-05-03 15:49:17)\n>>> The PipelineHandlerFactoryBase class has a name that is\n>>> propagated to the PipelineHandler instance it creates.\n>>>\n>>> In present implementation, this name comes from the\n>>> REGISTER_PIPELINE_HANDLER registration macro. It corresponds to\n>>> the stringified name of the PipelineHandler derived class.\n>>> Therefore, PipelineHandler factories and instances names can be\n>>> quite long such as \"PipelineHandlerRkISP1\".\n>>>\n>>> A libcamera user may have to explicitly refer to a PipelineHandler\n>>> name for configuration purpose: one usage of the name can be to\n>>> define a pipeline handlers match list and their priorities.\n>>> It is desired, for user convenience, to use a short name to\n>>> designate a pipeline handler. Reusing the short pipeline names\n>>> already defined in the meson option files is an existing and\n>>> consistent way of naming pipelines.\n>>>\n>>> This change adds an explicit name parameter to the\n>>> REGISTER_PIPELINE_HANDLER registration macro. That parameter is\n>>> used to define the name of a pipeline handler factory, instead of\n>>> the current pipeline handler class name.\n>>>\n>>> Each pipeline registration is updated accordingly. The short name\n>>> assigned corresponds to the pipeline directory name in the\n>>> source tree. It is consistent with pipelines names used in meson.\n>>\n>> All of the above sounds great.\n>>\n>>> Changing the pipeline name has an impact on the IPA modules:\n>>> each module defines a IPAModuleInfo structure. This structure has\n>>> a pipelineName member defining the pipeline handler name it shall\n>>> match with.\n>>> Therefore, each internal IPA module definition has to be changed\n>>> to have its IPAModuleInfo pipelineName name updated with the short\n>>> pipeline handler name.\n>>>\n>>> In addition to this pipelineName member, the IPAModuleInfo structure\n>>> also has a name member, associated to the IPA module name.\n>>> Having renamed the pipelines to a short name, the pipeline name and\n>>> the IPA module names of the IPAModuleInfo structure are the same:\n>>> for in-tree IPA, they correspond to the respective pipeline and IPA\n>>> subdirectories in the source tree.\n>>> However the IPA name could be different, for instance with a close\n>>> source IPA implementation built out-of-tree. Thus, it makes sense to\n>>> keep the IPA name in that structure, as the 2 definitions may not\n>>> always be redundant.\n>>\n>> This was the first thing I noticed in the code ... why do we duplicate.\n>>\n>> But it does sound like it makes sense, particularly if we want to\n>> register or 'select' distinct IPAs which could be forseen in the future.\n>> Even to be able to select which IPA to prefer as you have done for the\n>> Pipeline handlers, so I do think this is worthwhile. There are other\n>> ways we could handle this, with substring matching, or 'compatible'\n>> strings ... but it could always be updated on top IMO if we decide to.\n>>\n>> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n>>\n>>\n>>> Signed-off-by: Julien Vuillaumier <julien.vuillaumier@nxp.com>\n>>> ---\n>>>   Documentation/guides/pipeline-handler.rst     | 4 +++-\n>>>   include/libcamera/internal/pipeline_handler.h | 4 ++--\n>>>   src/ipa/ipu3/ipu3.cpp                         | 2 +-\n>>>   src/ipa/rkisp1/rkisp1.cpp                     | 2 +-\n>>>   src/ipa/rpi/vc4/vc4.cpp                       | 2 +-\n>>>   src/ipa/simple/soft_simple.cpp                | 2 +-\n>>>   src/ipa/vimc/vimc.cpp                         | 2 +-\n>>>   src/libcamera/pipeline/imx8-isi/imx8-isi.cpp  | 2 +-\n>>>   src/libcamera/pipeline/ipu3/ipu3.cpp          | 2 +-\n>>>   src/libcamera/pipeline/mali-c55/mali-c55.cpp  | 2 +-\n>>>   src/libcamera/pipeline/rkisp1/rkisp1.cpp      | 2 +-\n>>>   src/libcamera/pipeline/rpi/vc4/vc4.cpp        | 2 +-\n>>>   src/libcamera/pipeline/simple/simple.cpp      | 2 +-\n>>>   src/libcamera/pipeline/uvcvideo/uvcvideo.cpp  | 2 +-\n>>>   src/libcamera/pipeline/vimc/vimc.cpp          | 2 +-\n>>>   src/libcamera/pipeline_handler.cpp            | 2 ++\n>>>   test/ipa/ipa_interface_test.cpp               | 2 +-\n>>>   test/ipa/ipa_module_test.cpp                  | 2 +-\n>>>   18 files changed, 22 insertions(+), 18 deletions(-)\n>>>\n>>> diff --git a/Documentation/guides/pipeline-handler.rst b/Documentation/guides/pipeline-handler.rst\n>>> index 728e9676..7e45cdb8 100644\n>>> --- a/Documentation/guides/pipeline-handler.rst\n>>> +++ b/Documentation/guides/pipeline-handler.rst\n>>> @@ -258,7 +258,7 @@ implementations for the overridden class members.\n>>>             return false;\n>>>      }\n>>>\n>>> -   REGISTER_PIPELINE_HANDLER(PipelineHandlerVivid)\n>>> +   REGISTER_PIPELINE_HANDLER(PipelineHandlerVivid, \"vivid\")\n>>>\n>>>      } /* namespace libcamera */\n>>>\n>>> @@ -266,6 +266,8 @@ Note that you must register the ``PipelineHandler`` subclass with the pipeline\n>>>   handler factory using the `REGISTER_PIPELINE_HANDLER`_ macro which\n>>>   registers it and creates a global symbol to reference the class and make it\n>>>   available to try and match devices.\n>>> +String \"vivid\" is the name assigned to the pipeline, matching the pipeline\n>>> +subdirectory name in the source tree.\n>>\n>> I would write 'The string \"vivid\" is the name .... ' but that's minor.\n>> Could be fixed when applying if desired if everyone else is happy with\n>> this patch.\n>>\n>>\n>> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n>>\n>>\n>>\n>>\n>>>\n>>>   .. _REGISTER_PIPELINE_HANDLER: https://libcamera.org/api-html/pipeline__handler_8h.html\n>>>\n>>> diff --git a/include/libcamera/internal/pipeline_handler.h b/include/libcamera/internal/pipeline_handler.h\n>>> index c96944f4..cc70f69c 100644\n>>> --- a/include/libcamera/internal/pipeline_handler.h\n>>> +++ b/include/libcamera/internal/pipeline_handler.h\n>>> @@ -140,7 +140,7 @@ public:\n>>>          }\n>>>   };\n>>>\n>>> -#define REGISTER_PIPELINE_HANDLER(handler) \\\n>>> -static PipelineHandlerFactory<handler> global_##handler##Factory(#handler);\n>>> +#define REGISTER_PIPELINE_HANDLER(handler, name) \\\n>>> +static PipelineHandlerFactory<handler> global_##handler##Factory(name);\n>>>\n> \n> The only checkstyle failure on this series is here, as clang wants to\n> indent the static definition line.\n> \n> I think it's fine keeping it aligned left as it was, but I'm also\n> tempted to indent it just to silence the checker.\n> \n> Any preferences from anyone?\n\n\nI noticed the checkstyle report but did not update as it is the current \nimplementation and because other macros like \nREGISTER_CAMERA_SENSOR_HELPER() and REGISTER_IPA_ALGORITHM() don't use \nindentation neither for the static definition line.\nFor consistency with the other macro definitions, I would suggest \nkeeping the left alignment but do not mind changing.\n\nThanks,\nJulien\n\n> \n> \n> https://gitlab.freedesktop.org/camera/libcamera/-/jobs/58532646:\n> \n> ------------------------------------------------------------------------------------------------\n> 2598ba4a94839d63ed1904a0080d6b8285220a5c libcamera: pipeline: Rename pipelines to a shorter name\n> ------------------------------------------------------------------------------------------------\n> --- include/libcamera/internal/pipeline_handler.h\n> +++ include/libcamera/internal/pipeline_handler.h\n> @@ -141,6 +142,6 @@\n>   };\n> \n>   #define REGISTER_PIPELINE_HANDLER(handler, name) \\\n> -static PipelineHandlerFactory<handler> global_##handler##Factory(name);\n> +       static PipelineHandlerFactory<handler> global_##handler##Factory(name);\n> \n>   } /* namespace libcamera */\n> \n> \n> \n> --\n> Kieran\n> \n> \n> \n>>>   } /* namespace libcamera */\n> \n>>> diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp\n>>> index 08ee6eb3..994c0eda 100644\n>>> --- a/src/ipa/ipu3/ipu3.cpp\n>>> +++ b/src/ipa/ipu3/ipu3.cpp\n>>> @@ -672,7 +672,7 @@ extern \"C\" {\n>>>   const struct IPAModuleInfo ipaModuleInfo = {\n>>>          IPA_MODULE_API_VERSION,\n>>>          1,\n>>> -       \"PipelineHandlerIPU3\",\n>>> +       \"ipu3\",\n>>>          \"ipu3\",\n>>>   };\n>>>\n>>> diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp\n>>> index 9dc5f53c..5319c98f 100644\n>>> --- a/src/ipa/rkisp1/rkisp1.cpp\n>>> +++ b/src/ipa/rkisp1/rkisp1.cpp\n>>> @@ -458,7 +458,7 @@ extern \"C\" {\n>>>   const struct IPAModuleInfo ipaModuleInfo = {\n>>>          IPA_MODULE_API_VERSION,\n>>>          1,\n>>> -       \"PipelineHandlerRkISP1\",\n>>> +       \"rkisp1\",\n>>>          \"rkisp1\",\n>>>   };\n>>>\n>>> diff --git a/src/ipa/rpi/vc4/vc4.cpp b/src/ipa/rpi/vc4/vc4.cpp\n>>> index d2159a51..11316e05 100644\n>>> --- a/src/ipa/rpi/vc4/vc4.cpp\n>>> +++ b/src/ipa/rpi/vc4/vc4.cpp\n>>> @@ -583,7 +583,7 @@ extern \"C\" {\n>>>   const struct IPAModuleInfo ipaModuleInfo = {\n>>>          IPA_MODULE_API_VERSION,\n>>>          1,\n>>> -       \"PipelineHandlerVc4\",\n>>> +       \"rpi/vc4\",\n>>>          \"rpi/vc4\",\n>>>   };\n>>>\n>>> diff --git a/src/ipa/simple/soft_simple.cpp b/src/ipa/simple/soft_simple.cpp\n>>> index b9fb58b5..39c49448 100644\n>>> --- a/src/ipa/simple/soft_simple.cpp\n>>> +++ b/src/ipa/simple/soft_simple.cpp\n>>> @@ -389,7 +389,7 @@ extern \"C\" {\n>>>   const struct IPAModuleInfo ipaModuleInfo = {\n>>>          IPA_MODULE_API_VERSION,\n>>>          0,\n>>> -       \"SimplePipelineHandler\",\n>>> +       \"simple\",\n>>>          \"simple\",\n>>>   };\n>>>\n>>> diff --git a/src/ipa/vimc/vimc.cpp b/src/ipa/vimc/vimc.cpp\n>>> index 2c255778..1bda772f 100644\n>>> --- a/src/ipa/vimc/vimc.cpp\n>>> +++ b/src/ipa/vimc/vimc.cpp\n>>> @@ -200,7 +200,7 @@ extern \"C\" {\n>>>   const struct IPAModuleInfo ipaModuleInfo = {\n>>>          IPA_MODULE_API_VERSION,\n>>>          0,\n>>> -       \"PipelineHandlerVimc\",\n>>> +       \"vimc\",\n>>>          \"vimc\",\n>>>   };\n>>>\n>>> diff --git a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n>>> index 63082cea..f4d755c2 100644\n>>> --- a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n>>> +++ b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n>>> @@ -1112,6 +1112,6 @@ void PipelineHandlerISI::bufferReady(FrameBuffer *buffer)\n>>>          completeRequest(request);\n>>>   }\n>>>\n>>> -REGISTER_PIPELINE_HANDLER(PipelineHandlerISI)\n>>> +REGISTER_PIPELINE_HANDLER(PipelineHandlerISI, \"imx8-isi\")\n>>>\n>>>   } /* namespace libcamera */\n>>> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n>>> index fa4bd0bb..d1708d42 100644\n>>> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n>>> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n>>> @@ -1420,6 +1420,6 @@ void IPU3CameraData::frameStart(uint32_t sequence)\n>>>                                  *testPatternMode);\n>>>   }\n>>>\n>>> -REGISTER_PIPELINE_HANDLER(PipelineHandlerIPU3)\n>>> +REGISTER_PIPELINE_HANDLER(PipelineHandlerIPU3, \"ipu3\")\n>>>\n>>>   } /* namespace libcamera */\n>>> diff --git a/src/libcamera/pipeline/mali-c55/mali-c55.cpp b/src/libcamera/pipeline/mali-c55/mali-c55.cpp\n>>> index 78343553..44e84bcf 100644\n>>> --- a/src/libcamera/pipeline/mali-c55/mali-c55.cpp\n>>> +++ b/src/libcamera/pipeline/mali-c55/mali-c55.cpp\n>>> @@ -1061,6 +1061,6 @@ bool PipelineHandlerMaliC55::match(DeviceEnumerator *enumerator)\n>>>          return true;\n>>>   }\n>>>\n>>> -REGISTER_PIPELINE_HANDLER(PipelineHandlerMaliC55)\n>>> +REGISTER_PIPELINE_HANDLER(PipelineHandlerMaliC55, \"mali-c55\")\n>>>\n>>>   } /* namespace libcamera */\n>>> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n>>> index abb21968..d8f99135 100644\n>>> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n>>> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n>>> @@ -1322,6 +1322,6 @@ void PipelineHandlerRkISP1::statReady(FrameBuffer *buffer)\n>>>                                         data->delayedCtrls_->get(buffer->metadata().sequence));\n>>>   }\n>>>\n>>> -REGISTER_PIPELINE_HANDLER(PipelineHandlerRkISP1)\n>>> +REGISTER_PIPELINE_HANDLER(PipelineHandlerRkISP1, \"rkisp1\")\n>>>\n>>>   } /* namespace libcamera */\n>>> diff --git a/src/libcamera/pipeline/rpi/vc4/vc4.cpp b/src/libcamera/pipeline/rpi/vc4/vc4.cpp\n>>> index 947b1e73..013c6519 100644\n>>> --- a/src/libcamera/pipeline/rpi/vc4/vc4.cpp\n>>> +++ b/src/libcamera/pipeline/rpi/vc4/vc4.cpp\n>>> @@ -1018,6 +1018,6 @@ bool Vc4CameraData::findMatchingBuffers(BayerFrame &bayerFrame, FrameBuffer *&em\n>>>          return true;\n>>>   }\n>>>\n>>> -REGISTER_PIPELINE_HANDLER(PipelineHandlerVc4)\n>>> +REGISTER_PIPELINE_HANDLER(PipelineHandlerVc4, \"rpi/vc4\")\n>>>\n>>>   } /* namespace libcamera */\n>>> diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp\n>>> index 61a59926..e62e9172 100644\n>>> --- a/src/libcamera/pipeline/simple/simple.cpp\n>>> +++ b/src/libcamera/pipeline/simple/simple.cpp\n>>> @@ -1732,6 +1732,6 @@ void SimplePipelineHandler::releasePipeline(SimpleCameraData *data)\n>>>          }\n>>>   }\n>>>\n>>> -REGISTER_PIPELINE_HANDLER(SimplePipelineHandler)\n>>> +REGISTER_PIPELINE_HANDLER(SimplePipelineHandler, \"simple\")\n>>>\n>>>   } /* namespace libcamera */\n>>> diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n>>> index ed9c7f88..33464517 100644\n>>> --- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n>>> +++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n>>> @@ -709,6 +709,6 @@ void UVCCameraData::bufferReady(FrameBuffer *buffer)\n>>>          pipe()->completeRequest(request);\n>>>   }\n>>>\n>>> -REGISTER_PIPELINE_HANDLER(PipelineHandlerUVC)\n>>> +REGISTER_PIPELINE_HANDLER(PipelineHandlerUVC, \"uvcvideo\")\n>>>\n>>>   } /* namespace libcamera */\n>>> diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp\n>>> index 5e66ee1d..f681102d 100644\n>>> --- a/src/libcamera/pipeline/vimc/vimc.cpp\n>>> +++ b/src/libcamera/pipeline/vimc/vimc.cpp\n>>> @@ -623,6 +623,6 @@ void VimcCameraData::paramsBufferReady([[maybe_unused]] unsigned int id,\n>>>   {\n>>>   }\n>>>\n>>> -REGISTER_PIPELINE_HANDLER(PipelineHandlerVimc)\n>>> +REGISTER_PIPELINE_HANDLER(PipelineHandlerVimc, \"vimc\")\n>>>\n>>>   } /* namespace libcamera */\n>>> diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp\n>>> index 29e0c98a..0c913e50 100644\n>>> --- a/src/libcamera/pipeline_handler.cpp\n>>> +++ b/src/libcamera/pipeline_handler.cpp\n>>> @@ -830,6 +830,8 @@ std::vector<PipelineHandlerFactoryBase *> &PipelineHandlerFactoryBase::factories\n>>>    * \\def REGISTER_PIPELINE_HANDLER\n>>>    * \\brief Register a pipeline handler with the pipeline handler factory\n>>>    * \\param[in] handler Class name of PipelineHandler derived class to register\n>>> + * \\param[in] name Name assigned to the pipeline handler, matching the pipeline\n>>> + * subdirectory name in the source tree.\n>>>    *\n>>>    * Register a PipelineHandler subclass with the factory and make it available to\n>>>    * try and match devices.\n>>> diff --git a/test/ipa/ipa_interface_test.cpp b/test/ipa/ipa_interface_test.cpp\n>>> index 56f3cd6d..b489b5f6 100644\n>>> --- a/test/ipa/ipa_interface_test.cpp\n>>> +++ b/test/ipa/ipa_interface_test.cpp\n>>> @@ -56,7 +56,7 @@ protected:\n>>>                  const std::vector<PipelineHandlerFactoryBase *> &factories =\n>>>                          PipelineHandlerFactoryBase::factories();\n>>>                  for (const PipelineHandlerFactoryBase *factory : factories) {\n>>> -                       if (factory->name() == \"PipelineHandlerVimc\") {\n>>> +                       if (factory->name() == \"vimc\") {\n>>>                                  pipe_ = factory->create(nullptr);\n>>>                                  break;\n>>>                          }\n>>> diff --git a/test/ipa/ipa_module_test.cpp b/test/ipa/ipa_module_test.cpp\n>>> index bd5e0e4c..ae6f7a52 100644\n>>> --- a/test/ipa/ipa_module_test.cpp\n>>> +++ b/test/ipa/ipa_module_test.cpp\n>>> @@ -57,7 +57,7 @@ protected:\n>>>                  const struct IPAModuleInfo testInfo = {\n>>>                          IPA_MODULE_API_VERSION,\n>>>                          0,\n>>> -                       \"PipelineHandlerVimc\",\n>>> +                       \"vimc\",\n>>>                          \"vimc\",\n>>>                  };\n>>>\n>>> --\n>>> 2.34.1\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 CD5AEC3226\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 13 May 2024 08:54:39 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E72056347C;\n\tMon, 13 May 2024 10:54:38 +0200 (CEST)","from EUR05-AM6-obe.outbound.protection.outlook.com\n\t(mail-am6eur05on20601.outbound.protection.outlook.com\n\t[IPv6:2a01:111:f403:2612::601])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C098063461\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 13 May 2024 10:54:36 +0200 (CEST)","from AM9PR04MB8147.eurprd04.prod.outlook.com\n\t(2603:10a6:20b:3e0::22)\n\tby VI1PR04MB6893.eurprd04.prod.outlook.com (2603:10a6:803:133::7)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55;\n\tMon, 13 May 2024 08:54:34 +0000","from AM9PR04MB8147.eurprd04.prod.outlook.com\n\t([fe80::eace:e980:28a4:ef8a]) by\n\tAM9PR04MB8147.eurprd04.prod.outlook.com\n\t([fe80::eace:e980:28a4:ef8a%2]) with mapi id 15.20.7544.041;\n\tMon, 13 May 2024 08:54:34 +0000"],"Authentication-Results":["lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=nxp.com header.i=@nxp.com header.b=\"XCrPnifT\";\n\tdkim-atps=neutral","dkim=none (message not signed)\n\theader.d=none;dmarc=none action=none header.from=nxp.com;"],"ARC-Seal":"i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n\tb=d7vz7psS2T2xWfsCXO3/oxaj2P4EQdLSQHje7LaEKcoPcGZaQEgvItwF1GionBPC2WaG4UpnWfNrJWOFka7fhmrkjX3vN95hrcCnNFCBXiWon8Tv1kg+XdzatFXBBZqRD1o17JuR7gu2rt3dPSrVkgs9In1uX4H9s4O4TPHw4Sj8X/txBxjfkmggv1hbc5eUF583rrpO783Cbc0WRQUaIXCbXW6TDsQ4ZKNGum5hc4kXNAvCjaVHsEr0FOF28KnTiyItYGe6WBOA5/RMs0UrkaUtskA0rEAubHVj/xvdybglPX6C8D7QzQfHSfjdkBhHT8wjQNNzTFCbJ93h1ifmbg==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n\ts=arcselector9901;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n\tbh=wAJZ9uV3ZZtfXqnfw5T4kUKItUHGeuKXJj1W5+QGi6c=;\n\tb=Q9v5B65eFeBbG4wJ3xDoHs0595ajqqKdtixPtj7wSC80hhLayy58io8awrVPnxnuXJK3lc+3zCfLl6F40UQoxSMPClusuNiNbElSD1gDo4Za8z0Lh0zQXz/KClf5+qvQA7zfqcAJtWPt6dYlgCayRhTYljqsZD4790LV/Sa+aTf7U+GyLCws792XXf+7w6I/yXJvzDfz5uMEhKYifXqervPkBylIFg/yB/gIHmtppR6fZOsLopZcGIJ7Idty/xgzZSBz/wZTx3wm2JRPv6+PclDVWZ/9Og57vwi2OHL64Ng/8pm0JAuBhEfElH8uJyJfo3gSyfiIcrGjirMu1fU/Yw==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass\n\tsmtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com;\n\tdkim=pass header.d=nxp.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=wAJZ9uV3ZZtfXqnfw5T4kUKItUHGeuKXJj1W5+QGi6c=;\n\tb=XCrPnifTNr8EZimypU7iV9u/4Q9WjcXqZIEdx2Ml19sUUtUzBZFIyPIUcuth1vJgd9+PF0Bu1478D0f6rzCbOqQ5nmeKxiD6wmuoh3nrbZYuhR+m8fwkSqRen14dMlRnIk1YrVsjf2ewW+ZWWXp+BJ/qyXltkQWzqXBoU+RRK3o=","Message-ID":"<a877ee6a-1124-46d4-a3cd-3736f5e363de@nxp.com>","Date":"Mon, 13 May 2024 10:55:02 +0200","User-Agent":"Mozilla Thunderbird","Subject":"[PATCH v4 1/3] libcamera: pipeline: Rename pipelines to a shorter\n\tname","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Cc":"jacopo.mondi@ideasonboard.com","References":"<20240503144919.2371357-1-julien.vuillaumier@nxp.com>\n\t<20240503144919.2371357-2-julien.vuillaumier@nxp.com>\n\t<171524361684.1857112.2246111072542015867@ping.linuxembedded.co.uk>\n\t<171526534519.1857112.2818955213252959090@ping.linuxembedded.co.uk>","Content-Language":"en-US","From":"Julien Vuillaumier <julien.vuillaumier@nxp.com>","In-Reply-To":"<171526534519.1857112.2818955213252959090@ping.linuxembedded.co.uk>","Content-Type":"text/plain; charset=UTF-8; format=flowed","X-ClientProxiedBy":"AS4P195CA0021.EURP195.PROD.OUTLOOK.COM\n\t(2603:10a6:20b:5d6::9) To AM9PR04MB8147.eurprd04.prod.outlook.com\n\t(2603:10a6:20b:3e0::22)","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"AM9PR04MB8147:EE_|VI1PR04MB6893:EE_","X-MS-Office365-Filtering-Correlation-Id":"8d9634b4-71e9-4464-22ad-08dc732a4f10","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;ARA:13230031|376005|1800799015|366007;","X-Microsoft-Antispam-Message-Info":"=?utf-8?q?W6FflUQ/UA8WD9pU8o1x6Ap7SrYu?=\n\t=?utf-8?q?k31GRQ8qxDaetz1m9S2MdB73385OIud5jraYskq5IoP3ymDL+QReLMzy?=\n\t=?utf-8?q?HKZ1YsjJtD+COYLYe57wIgE/hWmG9ndV7fW3Rv8J6Ki+Gu5Tc23JBuXC?=\n\t=?utf-8?q?BUR/2ZwJTGP2skamgSwXOx/vwK8RswaP/rHBZTeVbYGfVPEL1/+CdIqq?=\n\t=?utf-8?q?pU1NvwDgSqxwt3g09kvd7gYK81JlIBEmrCHmBDsQ0RN2F1cj/yB2yFMy?=\n\t=?utf-8?q?jvYVbD2NFWsL1/7PxrIirliazXNmWtiealTkXUWZu1vtsUfLmR7Jq28L?=\n\t=?utf-8?q?2AATojeE2rgA2KIvtC5iDpDw/m+3DBa1eLSHaZb3DuqB2pHl/kUE9skP?=\n\t=?utf-8?q?KM4RzorU2ZoqXC5WL2i68DBL0QrRcsSN2inZUgHW0qhIIBaZlp77rF0y?=\n\t=?utf-8?q?cVAm14VmGJCTrhrOquWdiZ49Swjeb0bIwaM7To3AJP9rROP50BXdZjNc?=\n\t=?utf-8?q?jsr643ztGWJq8EU4k/Lpb2GjMaoBNbbvhX6t7hK3FBemavVfVOnthBCj?=\n\t=?utf-8?q?rtRAmmhB9uwoR8AX437lYg3UuIxRkKgGKMAl491esLsmC2dWx02iaPbJ?=\n\t=?utf-8?q?B0NPQxLqJ4EBvaiJHf+JxH+IwjeVcNWo1PZ7mAFE8isyDNwxsz7O/chQ?=\n\t=?utf-8?q?GFI0kMFWpOoMK9zrRg3Th1vqohpnUkNnhNIy1+/ZroTKOeWn1+SNTCzw?=\n\t=?utf-8?q?OPAOkt6OMnbtL1m5uZy496MQO6eU7tjjwfU6RpilgJfZZI2c0QwT7Qz7?=\n\t=?utf-8?q?XgFNLP+On/pq4SoxXITaN7oAk1fOnUs6C125LNO0EEv9atY3jTUJWEug?=\n\t=?utf-8?q?7KYQd3UCpqMqty6uWONvbYCdgobKb/GnJNgm7dJcLuE33Tzik4H36SnM?=\n\t=?utf-8?q?8feTS6oZpBPpZaCeooTk0Gd3x6CZ6cuGEptW+GExcHF9v7vIV2TF1L4G?=\n\t=?utf-8?q?QVylNMHbxj5/8i6xo+HIBY6MXO9w/+VYWLS9VZn97QGTyYa4MOO4CCOh?=\n\t=?utf-8?q?XKBUer3diF+YFQB2EJra454JYz0BaA0TqV5PT86bEKuZ+6fbP9TKTons?=\n\t=?utf-8?q?93wngGspaImEYGAla0rWD9e+v0H1HV40LGY/2jvJqRrox4wpJXObUFKa?=\n\t=?utf-8?q?8P9HrpHhiIzGDhusLbZkf3NFyJcc7edwiR7NvWluzd9e2M1KxjnhiUsn?=\n\t=?utf-8?q?FR8BJJWfJC9q5IyhohzMS+EUjiiRDpWQyn7ONtB3a/OTi9KT44ylSd+m?=\n\t=?utf-8?q?m2apyJIDiJbh0V8YlrNfxjoCJOkp1LGflK7KKw3aoQps3VdH93eCvNA?=\n\t=?utf-8?q?=3D?=","X-Forefront-Antispam-Report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n\tIPV:NLI; SFV:NSPM; H:AM9PR04MB8147.eurprd04.prod.outlook.com; PTR:;\n\tCAT:NONE; \n\tSFS:(13230031)(376005)(1800799015)(366007); DIR:OUT; SFP:1101; ","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"=?utf-8?q?Fv50UY1IBeWPsDHn7MrarjEjS?=\n\t=?utf-8?q?tQMHkicXq0EqPvud8rWBr6mGtR32RGaXlKBpFTu+7g1U7AwglQ2ggr63?=\n\t=?utf-8?q?wU2/0oZGLCS9/yTjhWmV/SbyyXgU/PzmrEB1265KTFrkReOFrWIljqdp?=\n\t=?utf-8?q?J2BfHkU8Mw+FuJOfozGJ+83t2dQUYAKtWOkrhBoBdXLSb2UPmIxEuoys?=\n\t=?utf-8?q?WoYZRsRPOSXl4GtSsRnRi7Nh9xNcda7G6FXX2nkW1ivjgm8vHo9WbXFP?=\n\t=?utf-8?q?y6FdROhWk6zpKWdrwe7M8xfWWt5mZ60aATu30LiG4+3eL8vLLrDAYECm?=\n\t=?utf-8?q?LEpjdfdNc69FpCwweJOF3E0yckKkypZPGbmT9e5pVpR3D59zQ8zc/Jip?=\n\t=?utf-8?q?Z28HL2H9edhV5jFtSrhZUa3aQPm2RR3erkaVjmGUEKa2qKJReMP4XYc3?=\n\t=?utf-8?q?1qqHqXDigY5ck2TQEP34FIeyu2xnX2BZwO6vHBaEXQc2yubzUstoe53i?=\n\t=?utf-8?q?KWbyLyyt0qNbBbWIT3EBVsJGWT9XhIGxxeIbu8Cgi/5dYtz27Zc4ZDFd?=\n\t=?utf-8?q?jnV9RDniKIRXrTE7au5U0qmbi6Wfq74e6TLpE/w9+9uMD5iGmBc+pJzW?=\n\t=?utf-8?q?IELHX/zejJOQVubNilovmbb5kV3OlPnFpyuVjIC7b33CGXnkIepF+ZXb?=\n\t=?utf-8?q?vKA57TBDKBC3oifmrcnvTdrBo7/94OzbEqsYREQwrr3Z+63Lext3HvLv?=\n\t=?utf-8?q?flN7Dz4BkGHottHcXp/7t4icqW9n4E1jBKe8PlvOB8NhMYB57myMkFQZ?=\n\t=?utf-8?q?avrBgCAfO1Oig3/fzdCpdHnq7BdZ/GdnBnoWe6gqfzV52n3k6AQiRVaE?=\n\t=?utf-8?q?39k7RduVUXeA/53qmGcw6dihYIcYaib2SFQQ5O8vCAFD+MpkkaeUO6MJ?=\n\t=?utf-8?q?QD2xaJGa2GWgGHA3AOdUmyLHG4D8vNIqu2H4+JmLHJqkSNoT5x9wn03M?=\n\t=?utf-8?q?poQBHgvUZ/7SM4/AfTR68EQm/+xBWLgJMpsaDrh152en4g3YRMZMm0oe?=\n\t=?utf-8?q?PdADSdi0GVRryiG1qvqeTRusK+H8TxgR3BUYUctyDDmoRPZdIPLHq2mx?=\n\t=?utf-8?q?ekB3sof90qulLWwQucjcj6dgNwaJ2N0SZpXvJo1r0KQJABEN8vwwwiGd?=\n\t=?utf-8?q?peKpKUEQUwbLDgt4Ffc/NXnwq2g9bIhyRDQ4ODCs6rYwEVPtm4ndGqay?=\n\t=?utf-8?q?72SBjn1hhGMsMF46j7NllCcn4LCwYS3VDsQITNH+gbyCXZt7C8yMuUPv?=\n\t=?utf-8?q?HMt8UHHFR8lV9U95gE45/42CKSoA/ttqhWFoikDQwTA3jBIVPLWNkFyt?=\n\t=?utf-8?q?L0s+ybN3OvdwT7hLFGWUTgp6aabS4b/dGktm+omSzaRyzIzQnm7RHyv4?=\n\t=?utf-8?q?fbNW6CZVF6MxT/1QGWAMxFmE0biVOBfrRptrly2W6QFdiJfVBUHHM2No?=\n\t=?utf-8?q?Ts9kWTt1YXUT9t5OLQoQD1Qevx72cMVoF2RW+BiBv4maJoc2qmURLaAy?=\n\t=?utf-8?q?P3V+CFuQWFZcZDFJHptzzC+qd+fH7y0hG8CGR8XOeuo925h3WE5iLjE6?=\n\t=?utf-8?q?4ghAqCeTwMKXP8SyMMyUx3Ibi0EvThFTA/TZ8RF/fU/v7z6fQVqN/bGu?=\n\t=?utf-8?q?c1XBg8vlrXMgqv9Pk7TqmxtTcKdc1dVa7V/XQu2A/rB6BPVAoRWop6cy?=\n\t=?utf-8?q?qyZXazXi/aFi97Kif5NDI2qSNEsDg=3D=3D?=","X-OriginatorOrg":"nxp.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"8d9634b4-71e9-4464-22ad-08dc732a4f10","X-MS-Exchange-CrossTenant-AuthSource":"AM9PR04MB8147.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"13 May 2024 08:54:34.4591\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"686ea1d3-bc2b-4c6f-a92c-d99c5c301635","X-MS-Exchange-CrossTenant-MailboxType":"HOSTED","X-MS-Exchange-CrossTenant-UserPrincipalName":"5uz37idQZkvPlqXwI29hHlPhGVYChokU+kCnr759SDEd5w75Jd6NP6fthwZmk3d5OyeCJiETSQUUvXHTF+nQiHT2kIjQF98yrmya/fgzx8s=","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"VI1PR04MB6893","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>"}}]