mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-19 10:25:05 +03:00
ipa: libipa: Introduce a Module class template
libipa defines an abstract Algorithm class template that is specialized by IPA modules. IPA modules then instantiate and manage algorithms internally, without help from libipa. With ongoing work on tuning data support for the RkISP1, and future similar work for the IPU3, more code duplication for algorithms management is expected. To address this and share code between multiple IPA modules, introduce a new Module class template that will define and manage top-level concepts for the IPA module. The Module class template needs to be specialized with the same types as the Algorithm class. To avoid manual specialization of both classes, store the types in the Module class, and replace the template arguments of the Algorithm class with a single Module argument from which the other types are retrieved. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
This commit is contained in:
parent
9dacde0d65
commit
83df785493
9 changed files with 183 additions and 31 deletions
|
@ -10,27 +10,26 @@ namespace libcamera {
|
|||
|
||||
namespace ipa {
|
||||
|
||||
template<typename Context, typename FrameContext, typename Config,
|
||||
typename Params, typename Stats>
|
||||
template<typename Module>
|
||||
class Algorithm
|
||||
{
|
||||
public:
|
||||
virtual ~Algorithm() {}
|
||||
|
||||
virtual int configure([[maybe_unused]] Context &context,
|
||||
[[maybe_unused]] const Config &configInfo)
|
||||
virtual int configure([[maybe_unused]] typename Module::Context &context,
|
||||
[[maybe_unused]] const typename Module::Config &configInfo)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual void prepare([[maybe_unused]] Context &context,
|
||||
[[maybe_unused]] Params *params)
|
||||
virtual void prepare([[maybe_unused]] typename Module::Context &context,
|
||||
[[maybe_unused]] typename Module::Params *params)
|
||||
{
|
||||
}
|
||||
|
||||
virtual void process([[maybe_unused]] Context &context,
|
||||
[[maybe_unused]] FrameContext *frameContext,
|
||||
[[maybe_unused]] const Stats *stats)
|
||||
virtual void process([[maybe_unused]] typename Module::Context &context,
|
||||
[[maybe_unused]] typename Module::FrameContext *frameContext,
|
||||
[[maybe_unused]] const typename Module::Stats *stats)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue