[libcamera-devel] [PATCH v4 1/4] ipa: Add a common interface for algorithm objects

Kieran Bingham kieran.bingham at ideasonboard.com
Mon Apr 12 13:42:38 CEST 2021


Hi Jean-Michel,

On 30/03/2021 22:12, Jean-Michel Hautbois wrote:
> In order to instanciate and use algorithms (AWB, AGC, etc.)

s/instanciate/instantiate/

> there is a need for a common class to define mandatory methods.
> 
> Instead of reinventing the wheel, reuse what Raspberry Pi has done and
> adapt to the minimum requirements expected.
> 
> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

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

> ---
>  src/ipa/libipa/algorithm.cpp | 39 ++++++++++++++++++++++++++++++++++++
>  src/ipa/libipa/algorithm.h   | 24 ++++++++++++++++++++++
>  src/ipa/libipa/meson.build   |  4 +++-
>  3 files changed, 66 insertions(+), 1 deletion(-)
>  create mode 100644 src/ipa/libipa/algorithm.cpp
>  create mode 100644 src/ipa/libipa/algorithm.h
> 
> diff --git a/src/ipa/libipa/algorithm.cpp b/src/ipa/libipa/algorithm.cpp
> new file mode 100644
> index 00000000..930f9353
> --- /dev/null
> +++ b/src/ipa/libipa/algorithm.cpp
> @@ -0,0 +1,39 @@
> +/* SPDX-License-Identifier: LGPL-2.1-or-later */
> +/*
> + * Copyright (C) 2021, Ideas On Board
> + *
> + * algorithm.cpp - ISP control algorithms
> + */
> +
> +#include "algorithm.h"
> +
> +/**
> + * \file algorithm.h
> + * \brief Algorithm common 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 {
> +
> +/**
> + * \class Algorithm
> + * \brief The base class for all IPA 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 libcamera */
> diff --git a/src/ipa/libipa/algorithm.h b/src/ipa/libipa/algorithm.h
> new file mode 100644
> index 00000000..89cee4c4
> --- /dev/null
> +++ b/src/ipa/libipa/algorithm.h
> @@ -0,0 +1,24 @@
> +/* 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/meson.build b/src/ipa/libipa/meson.build
> index b29ef0f4..1819711d 100644
> --- a/src/ipa/libipa/meson.build
> +++ b/src/ipa/libipa/meson.build
> @@ -1,13 +1,15 @@
>  # SPDX-License-Identifier: CC0-1.0
>  
>  libipa_headers = files([
> +    'algorithm.h',
>  ])
>  
>  libipa_sources = files([
> +    'algorithm.cpp',
>  ])
>  
>  libipa_includes = include_directories('..')
>  
> -libipa = static_library('ipa', libipa_sources,
> +libipa = static_library('ipa', [libipa_sources, libipa_headers],
>                          include_directories : ipa_includes,
>                          dependencies : libcamera_dep)
> 

-- 
Regards
--
Kieran


More information about the libcamera-devel mailing list