ipa: raspberrypi: Add a DenoiseAlgorithm class to the Controller

This denoise algorithm class will be used to pass in the user requested
denoise operating mode to the controller. The existing Denoise
controller will derive from this new DenoiseAlgorithm class.

Add a denoise mode field in the denoise status metadata object for the
IPA to use when configuring the ISP.

Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Reviewed-by: David Plowman <david.plowman@raspberrypi.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Naushir Patuck 2021-02-08 15:07:37 +00:00 committed by Laurent Pinchart
parent 44ea5b65c8
commit c9e1ef7bd2
4 changed files with 37 additions and 3 deletions

View file

@ -1,6 +1,6 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
* Copyright (C) 2019, Raspberry Pi (Trading) Limited
* Copyright (C) 2019-2021, Raspberry Pi (Trading) Limited
*
* sdn.cpp - SDN (spatial denoise) control algorithm
*/
@ -23,7 +23,7 @@ LOG_DEFINE_CATEGORY(RPiSdn)
#define NAME "rpi.sdn"
Sdn::Sdn(Controller *controller)
: Algorithm(controller)
: DenoiseAlgorithm(controller), mode_(DenoiseMode::ColourOff)
{
}
@ -53,6 +53,7 @@ void Sdn::Prepare(Metadata *image_metadata)
status.noise_constant = noise_status.noise_constant * deviation_;
status.noise_slope = noise_status.noise_slope * deviation_;
status.strength = strength_;
status.mode = static_cast<std::underlying_type_t<DenoiseMode>>(mode_);
image_metadata->Set("denoise.status", status);
LOG(RPiSdn, Debug)
<< "programmed constant " << status.noise_constant
@ -60,6 +61,12 @@ void Sdn::Prepare(Metadata *image_metadata)
<< " strength " << status.strength;
}
void Sdn::SetMode(DenoiseMode mode)
{
// We only distinguish between off and all other modes.
mode_ = mode;
}
// Register algorithm with the system.
static Algorithm *Create(Controller *controller)
{