[libcamera-devel] [PATCH v5 1/9] ipa: move libipa::Algorithm to ipa/ipu3/algorithms

Kieran Bingham kieran.bingham at ideasonboard.com
Fri Aug 20 11:16:09 CEST 2021



On 20/08/2021 07:53, Jean-Michel Hautbois wrote:
> The abstract Algorithm class was originally placed in libipa as an
> attempt define a generic algorithm container. This was a little
> optimistic and pushed a bit far too early.
> 
> Move the Algorithm class into the IPU3 which is the only user of the
> class, as we adapt it to support modular algorithm components for the
> IPU3.
> 
> Not documenting the namespace may cause issues with Doxygen in libipa.
> The file libipa.cpp is thus created as an empty file for now, but we
> can leverage it in the future to add more global libipa documentation,
> and possibly code too.
> 
> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
> Reviewed-by: Kieran Bingham kieran.bingham at ideasonboard.com

It's trivial, but this is missing the < >

Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

Only noticed because it caused this patch of the series not to be sent
directly to me, and only got to me through the list ;-)

Can be fixed while applying.



> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
>  .../{libipa => ipu3/algorithms}/algorithm.cpp | 17 ++++---------
>  src/ipa/ipu3/algorithms/algorithm.h           | 24 +++++++++++++++++++
>  src/ipa/ipu3/algorithms/meson.build           |  5 ++++
>  src/ipa/ipu3/ipu3_agc.h                       |  2 +-
>  src/ipa/ipu3/ipu3_awb.h                       |  2 +-
>  src/ipa/ipu3/meson.build                      |  4 ++++
>  src/ipa/libipa/algorithm.h                    | 24 -------------------
>  src/ipa/libipa/libipa.cpp                     | 22 +++++++++++++++++
>  src/ipa/libipa/meson.build                    |  5 ++--
>  9 files changed, 63 insertions(+), 42 deletions(-)
>  rename src/ipa/{libipa => ipu3/algorithms}/algorithm.cpp (55%)
>  create mode 100644 src/ipa/ipu3/algorithms/algorithm.h
>  create mode 100644 src/ipa/ipu3/algorithms/meson.build
>  delete mode 100644 src/ipa/libipa/algorithm.h
>  create mode 100644 src/ipa/libipa/libipa.cpp
> 
> diff --git a/src/ipa/libipa/algorithm.cpp b/src/ipa/ipu3/algorithms/algorithm.cpp
> similarity index 55%
> rename from src/ipa/libipa/algorithm.cpp
> rename to src/ipa/ipu3/algorithms/algorithm.cpp
> index 930f9353..dd46846a 100644
> --- a/src/ipa/libipa/algorithm.cpp
> +++ b/src/ipa/ipu3/algorithms/algorithm.cpp
> @@ -2,7 +2,7 @@
>  /*
>   * Copyright (C) 2021, Ideas On Board
>   *
> - * algorithm.cpp - ISP control algorithms
> + * algorithm.cpp - IPU3 control algorithm interface
>   */
>  
>  #include "algorithm.h"
> @@ -14,26 +14,17 @@
>  
>  namespace libcamera {
>  
> -/**
> - * \brief The IPA namespace
> - *
> - * The IPA namespace groups all types specific to IPA modules. It serves as the
> - * top-level namespace for the IPA library libipa, and also contains
> - * module-specific namespaces for IPA modules.
> - */
> -namespace ipa {
> +namespace ipa::ipu3 {
>  
>  /**
>   * \class Algorithm
> - * \brief The base class for all IPA algorithms
> + * \brief The base class for all IPU3 algorithms
>   *
>   * The Algorithm class defines a standard interface for IPA algorithms. By
>   * abstracting algorithms, it makes possible the implementation of generic code
>   * to manage algorithms regardless of their specific type.
>   */
>  
> -Algorithm::~Algorithm() = default;
> -
> -} /* namespace ipa */
> +} /* namespace ipa::ipu3 */
>  
>  } /* namespace libcamera */
> diff --git a/src/ipa/ipu3/algorithms/algorithm.h b/src/ipa/ipu3/algorithms/algorithm.h
> new file mode 100644
> index 00000000..072f01c4
> --- /dev/null
> +++ b/src/ipa/ipu3/algorithms/algorithm.h
> @@ -0,0 +1,24 @@
> +/* SPDX-License-Identifier: LGPL-2.1-or-later */
> +/*
> + * Copyright (C) 2021, Ideas On Board
> + *
> + * algorithm.h - IPU3 control algorithm interface
> + */
> +#ifndef __LIBCAMERA_IPA_IPU3_ALGORITHM_H__
> +#define __LIBCAMERA_IPA_IPU3_ALGORITHM_H__
> +
> +namespace libcamera {
> +
> +namespace ipa::ipu3 {
> +
> +class Algorithm
> +{
> +public:
> +	virtual ~Algorithm() {}
> +};
> +
> +} /* namespace ipa::ipu3 */
> +
> +} /* namespace libcamera */
> +
> +#endif /* __LIBCAMERA_IPA_IPU3_ALGORITHM_H__ */
> diff --git a/src/ipa/ipu3/algorithms/meson.build b/src/ipa/ipu3/algorithms/meson.build
> new file mode 100644
> index 00000000..dc538b79
> --- /dev/null
> +++ b/src/ipa/ipu3/algorithms/meson.build
> @@ -0,0 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
> +ipu3_ipa_algorithms = files([
> +    'algorithm.cpp',
> +])
> diff --git a/src/ipa/ipu3/ipu3_agc.h b/src/ipa/ipu3/ipu3_agc.h
> index 9f3d4257..f00b98d6 100644
> --- a/src/ipa/ipu3/ipu3_agc.h
> +++ b/src/ipa/ipu3/ipu3_agc.h
> @@ -13,7 +13,7 @@
>  
>  #include <libcamera/geometry.h>
>  
> -#include "libipa/algorithm.h"
> +#include "algorithms/algorithm.h"
>  
>  namespace libcamera {
>  
> diff --git a/src/ipa/ipu3/ipu3_awb.h b/src/ipa/ipu3/ipu3_awb.h
> index 122cf68c..ea2d4320 100644
> --- a/src/ipa/ipu3/ipu3_awb.h
> +++ b/src/ipa/ipu3/ipu3_awb.h
> @@ -13,7 +13,7 @@
>  
>  #include <libcamera/geometry.h>
>  
> -#include "libipa/algorithm.h"
> +#include "algorithms/algorithm.h"
>  
>  namespace libcamera {
>  
> diff --git a/src/ipa/ipu3/meson.build b/src/ipa/ipu3/meson.build
> index b6364190..fcb27d68 100644
> --- a/src/ipa/ipu3/meson.build
> +++ b/src/ipa/ipu3/meson.build
> @@ -1,5 +1,7 @@
>  # SPDX-License-Identifier: CC0-1.0
>  
> +subdir('algorithms')
> +
>  ipa_name = 'ipa_ipu3'
>  
>  ipu3_ipa_sources = files([
> @@ -8,6 +10,8 @@ ipu3_ipa_sources = files([
>      'ipu3_awb.cpp',
>  ])
>  
> +ipu3_ipa_sources += ipu3_ipa_algorithms
> +
>  mod = shared_module(ipa_name,
>                      [ipu3_ipa_sources, libcamera_generated_ipa_headers],
>                      name_prefix : '',
> diff --git a/src/ipa/libipa/algorithm.h b/src/ipa/libipa/algorithm.h
> deleted file mode 100644
> index 89cee4c4..00000000
> --- a/src/ipa/libipa/algorithm.h
> +++ /dev/null
> @@ -1,24 +0,0 @@
> -/* SPDX-License-Identifier: LGPL-2.1-or-later */
> -/*
> - * Copyright (C) 2021, Ideas On Board
> - *
> - * algorithm.h - ISP control algorithm interface
> - */
> -#ifndef __LIBCAMERA_IPA_LIBIPA_ALGORITHM_H__
> -#define __LIBCAMERA_IPA_LIBIPA_ALGORITHM_H__
> -
> -namespace libcamera {
> -
> -namespace ipa {
> -
> -class Algorithm
> -{
> -public:
> -	virtual ~Algorithm();
> -};
> -
> -} /* namespace ipa */
> -
> -} /* namespace libcamera */
> -
> -#endif /* __LIBCAMERA_IPA_LIBIPA_ALGORITHM_H__ */
> diff --git a/src/ipa/libipa/libipa.cpp b/src/ipa/libipa/libipa.cpp
> new file mode 100644
> index 00000000..08bc3541
> --- /dev/null
> +++ b/src/ipa/libipa/libipa.cpp
> @@ -0,0 +1,22 @@
> +/* SPDX-License-Identifier: LGPL-2.1-or-later */
> +/*
> + * Copyright (C) 2021, Ideas On Board
> + *
> + * libipa.cpp - libipa interface
> + */
> +
> +namespace libcamera {
> +
> +/**
> + * \brief The IPA namespace
> + *
> + * The IPA namespace groups all types specific to IPA modules. It serves as the
> + * top-level namespace for the IPA library libipa, and also contains
> + * module-specific namespaces for IPA modules.
> + */
> +namespace ipa {
> +
> +} /* namespace ipa */
> +
> +} /* namespace libcamera */
> +
> diff --git a/src/ipa/libipa/meson.build b/src/ipa/libipa/meson.build
> index 3fda7c00..4d073a03 100644
> --- a/src/ipa/libipa/meson.build
> +++ b/src/ipa/libipa/meson.build
> @@ -1,15 +1,14 @@
>  # SPDX-License-Identifier: CC0-1.0
>  
>  libipa_headers = files([
> -    'algorithm.h',
>      'camera_sensor_helper.h',
>      'histogram.h'
>  ])
>  
>  libipa_sources = files([
> -    'algorithm.cpp',
>      'camera_sensor_helper.cpp',
> -    'histogram.cpp'
> +    'histogram.cpp',
> +    'libipa.cpp',
>  ])
>  
>  libipa_includes = include_directories('..')
> 


More information about the libcamera-devel mailing list