[{"id":18969,"web_url":"https://patchwork.libcamera.org/comment/18969/","msgid":"<d0bbb801-db0b-5dd5-6e50-e31f4719a288@ideasonboard.com>","date":"2021-08-20T09:16:09","subject":"Re: [libcamera-devel] [PATCH v5 1/9] ipa: move libipa::Algorithm to\n\tipa/ipu3/algorithms","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"On 20/08/2021 07:53, Jean-Michel Hautbois wrote:\n> The abstract Algorithm class was originally placed in libipa as an\n> attempt define a generic algorithm container. This was a little\n> optimistic and pushed a bit far too early.\n> \n> Move the Algorithm class into the IPU3 which is the only user of the\n> class, as we adapt it to support modular algorithm components for the\n> IPU3.\n> \n> Not documenting the namespace may cause issues with Doxygen in libipa.\n> The file libipa.cpp is thus created as an empty file for now, but we\n> can leverage it in the future to add more global libipa documentation,\n> and possibly code too.\n> \n> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>\n> Reviewed-by: Kieran Bingham kieran.bingham@ideasonboard.com\n\nIt's trivial, but this is missing the < >\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\nOnly noticed because it caused this patch of the series not to be sent\ndirectly to me, and only got to me through the list ;-)\n\nCan be fixed while applying.\n\n\n\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  .../{libipa => ipu3/algorithms}/algorithm.cpp | 17 ++++---------\n>  src/ipa/ipu3/algorithms/algorithm.h           | 24 +++++++++++++++++++\n>  src/ipa/ipu3/algorithms/meson.build           |  5 ++++\n>  src/ipa/ipu3/ipu3_agc.h                       |  2 +-\n>  src/ipa/ipu3/ipu3_awb.h                       |  2 +-\n>  src/ipa/ipu3/meson.build                      |  4 ++++\n>  src/ipa/libipa/algorithm.h                    | 24 -------------------\n>  src/ipa/libipa/libipa.cpp                     | 22 +++++++++++++++++\n>  src/ipa/libipa/meson.build                    |  5 ++--\n>  9 files changed, 63 insertions(+), 42 deletions(-)\n>  rename src/ipa/{libipa => ipu3/algorithms}/algorithm.cpp (55%)\n>  create mode 100644 src/ipa/ipu3/algorithms/algorithm.h\n>  create mode 100644 src/ipa/ipu3/algorithms/meson.build\n>  delete mode 100644 src/ipa/libipa/algorithm.h\n>  create mode 100644 src/ipa/libipa/libipa.cpp\n> \n> diff --git a/src/ipa/libipa/algorithm.cpp b/src/ipa/ipu3/algorithms/algorithm.cpp\n> similarity index 55%\n> rename from src/ipa/libipa/algorithm.cpp\n> rename to src/ipa/ipu3/algorithms/algorithm.cpp\n> index 930f9353..dd46846a 100644\n> --- a/src/ipa/libipa/algorithm.cpp\n> +++ b/src/ipa/ipu3/algorithms/algorithm.cpp\n> @@ -2,7 +2,7 @@\n>  /*\n>   * Copyright (C) 2021, Ideas On Board\n>   *\n> - * algorithm.cpp - ISP control algorithms\n> + * algorithm.cpp - IPU3 control algorithm interface\n>   */\n>  \n>  #include \"algorithm.h\"\n> @@ -14,26 +14,17 @@\n>  \n>  namespace libcamera {\n>  \n> -/**\n> - * \\brief The IPA namespace\n> - *\n> - * The IPA namespace groups all types specific to IPA modules. It serves as the\n> - * top-level namespace for the IPA library libipa, and also contains\n> - * module-specific namespaces for IPA modules.\n> - */\n> -namespace ipa {\n> +namespace ipa::ipu3 {\n>  \n>  /**\n>   * \\class Algorithm\n> - * \\brief The base class for all IPA algorithms\n> + * \\brief The base class for all IPU3 algorithms\n>   *\n>   * The Algorithm class defines a standard interface for IPA algorithms. By\n>   * abstracting algorithms, it makes possible the implementation of generic code\n>   * to manage algorithms regardless of their specific type.\n>   */\n>  \n> -Algorithm::~Algorithm() = default;\n> -\n> -} /* namespace ipa */\n> +} /* namespace ipa::ipu3 */\n>  \n>  } /* namespace libcamera */\n> diff --git a/src/ipa/ipu3/algorithms/algorithm.h b/src/ipa/ipu3/algorithms/algorithm.h\n> new file mode 100644\n> index 00000000..072f01c4\n> --- /dev/null\n> +++ b/src/ipa/ipu3/algorithms/algorithm.h\n> @@ -0,0 +1,24 @@\n> +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> +/*\n> + * Copyright (C) 2021, Ideas On Board\n> + *\n> + * algorithm.h - IPU3 control algorithm interface\n> + */\n> +#ifndef __LIBCAMERA_IPA_IPU3_ALGORITHM_H__\n> +#define __LIBCAMERA_IPA_IPU3_ALGORITHM_H__\n> +\n> +namespace libcamera {\n> +\n> +namespace ipa::ipu3 {\n> +\n> +class Algorithm\n> +{\n> +public:\n> +\tvirtual ~Algorithm() {}\n> +};\n> +\n> +} /* namespace ipa::ipu3 */\n> +\n> +} /* namespace libcamera */\n> +\n> +#endif /* __LIBCAMERA_IPA_IPU3_ALGORITHM_H__ */\n> diff --git a/src/ipa/ipu3/algorithms/meson.build b/src/ipa/ipu3/algorithms/meson.build\n> new file mode 100644\n> index 00000000..dc538b79\n> --- /dev/null\n> +++ b/src/ipa/ipu3/algorithms/meson.build\n> @@ -0,0 +1,5 @@\n> +# SPDX-License-Identifier: CC0-1.0\n> +\n> +ipu3_ipa_algorithms = files([\n> +    'algorithm.cpp',\n> +])\n> diff --git a/src/ipa/ipu3/ipu3_agc.h b/src/ipa/ipu3/ipu3_agc.h\n> index 9f3d4257..f00b98d6 100644\n> --- a/src/ipa/ipu3/ipu3_agc.h\n> +++ b/src/ipa/ipu3/ipu3_agc.h\n> @@ -13,7 +13,7 @@\n>  \n>  #include <libcamera/geometry.h>\n>  \n> -#include \"libipa/algorithm.h\"\n> +#include \"algorithms/algorithm.h\"\n>  \n>  namespace libcamera {\n>  \n> diff --git a/src/ipa/ipu3/ipu3_awb.h b/src/ipa/ipu3/ipu3_awb.h\n> index 122cf68c..ea2d4320 100644\n> --- a/src/ipa/ipu3/ipu3_awb.h\n> +++ b/src/ipa/ipu3/ipu3_awb.h\n> @@ -13,7 +13,7 @@\n>  \n>  #include <libcamera/geometry.h>\n>  \n> -#include \"libipa/algorithm.h\"\n> +#include \"algorithms/algorithm.h\"\n>  \n>  namespace libcamera {\n>  \n> diff --git a/src/ipa/ipu3/meson.build b/src/ipa/ipu3/meson.build\n> index b6364190..fcb27d68 100644\n> --- a/src/ipa/ipu3/meson.build\n> +++ b/src/ipa/ipu3/meson.build\n> @@ -1,5 +1,7 @@\n>  # SPDX-License-Identifier: CC0-1.0\n>  \n> +subdir('algorithms')\n> +\n>  ipa_name = 'ipa_ipu3'\n>  \n>  ipu3_ipa_sources = files([\n> @@ -8,6 +10,8 @@ ipu3_ipa_sources = files([\n>      'ipu3_awb.cpp',\n>  ])\n>  \n> +ipu3_ipa_sources += ipu3_ipa_algorithms\n> +\n>  mod = shared_module(ipa_name,\n>                      [ipu3_ipa_sources, libcamera_generated_ipa_headers],\n>                      name_prefix : '',\n> diff --git a/src/ipa/libipa/algorithm.h b/src/ipa/libipa/algorithm.h\n> deleted file mode 100644\n> index 89cee4c4..00000000\n> --- a/src/ipa/libipa/algorithm.h\n> +++ /dev/null\n> @@ -1,24 +0,0 @@\n> -/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> -/*\n> - * Copyright (C) 2021, Ideas On Board\n> - *\n> - * algorithm.h - ISP control algorithm interface\n> - */\n> -#ifndef __LIBCAMERA_IPA_LIBIPA_ALGORITHM_H__\n> -#define __LIBCAMERA_IPA_LIBIPA_ALGORITHM_H__\n> -\n> -namespace libcamera {\n> -\n> -namespace ipa {\n> -\n> -class Algorithm\n> -{\n> -public:\n> -\tvirtual ~Algorithm();\n> -};\n> -\n> -} /* namespace ipa */\n> -\n> -} /* namespace libcamera */\n> -\n> -#endif /* __LIBCAMERA_IPA_LIBIPA_ALGORITHM_H__ */\n> diff --git a/src/ipa/libipa/libipa.cpp b/src/ipa/libipa/libipa.cpp\n> new file mode 100644\n> index 00000000..08bc3541\n> --- /dev/null\n> +++ b/src/ipa/libipa/libipa.cpp\n> @@ -0,0 +1,22 @@\n> +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> +/*\n> + * Copyright (C) 2021, Ideas On Board\n> + *\n> + * libipa.cpp - libipa interface\n> + */\n> +\n> +namespace libcamera {\n> +\n> +/**\n> + * \\brief The IPA namespace\n> + *\n> + * The IPA namespace groups all types specific to IPA modules. It serves as the\n> + * top-level namespace for the IPA library libipa, and also contains\n> + * module-specific namespaces for IPA modules.\n> + */\n> +namespace ipa {\n> +\n> +} /* namespace ipa */\n> +\n> +} /* namespace libcamera */\n> +\n> diff --git a/src/ipa/libipa/meson.build b/src/ipa/libipa/meson.build\n> index 3fda7c00..4d073a03 100644\n> --- a/src/ipa/libipa/meson.build\n> +++ b/src/ipa/libipa/meson.build\n> @@ -1,15 +1,14 @@\n>  # SPDX-License-Identifier: CC0-1.0\n>  \n>  libipa_headers = files([\n> -    'algorithm.h',\n>      'camera_sensor_helper.h',\n>      'histogram.h'\n>  ])\n>  \n>  libipa_sources = files([\n> -    'algorithm.cpp',\n>      'camera_sensor_helper.cpp',\n> -    'histogram.cpp'\n> +    'histogram.cpp',\n> +    'libipa.cpp',\n>  ])\n>  \n>  libipa_includes = include_directories('..')\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 1BB6CBD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 20 Aug 2021 09:16:14 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7291C68895;\n\tFri, 20 Aug 2021 11:16:13 +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 013D768890\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Aug 2021 11:16:11 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 7D5F68C8;\n\tFri, 20 Aug 2021 11:16:11 +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=\"vlgJlKYe\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1629450971;\n\tbh=TM6h2gcSxq6eaEyJLXfTQbKFi+dAif2S9Wa4nvYTjf4=;\n\th=Subject:To:References:From:Date:In-Reply-To:From;\n\tb=vlgJlKYeCo8YMcVqxnCcmtEu/NSq4oo1iDBQ0zHrTbzYRVG1hZfGovWuaO7mBo1Pv\n\t5EmjJ9zup0kLgTWYB0WIh7o9ei/+O+FQWwZxIvTBngJTysmb7v1vdjg3yhacLxNUQM\n\tr+gsGWeyLh0U8QgAEEN2qhkndGGTHXsebZ3R0a40=","To":"Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20210820065316.44343-1-jeanmichel.hautbois@ideasonboard.com>\n\t<20210820065316.44343-2-jeanmichel.hautbois@ideasonboard.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<d0bbb801-db0b-5dd5-6e50-e31f4719a288@ideasonboard.com>","Date":"Fri, 20 Aug 2021 10:16:09 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101\n\tThunderbird/78.11.0","MIME-Version":"1.0","In-Reply-To":"<20210820065316.44343-2-jeanmichel.hautbois@ideasonboard.com>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-GB","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH v5 1/9] ipa: move libipa::Algorithm to\n\tipa/ipu3/algorithms","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>"}}]