summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Plowman <david.plowman@raspberrypi.com>2020-06-23 10:14:04 +0100
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-06-25 06:47:53 +0300
commit58732e4b49583e0b035980d71e8d15e76bbaf77b (patch)
treef4abb02cd1c91494372fdf694b60fa767e118cef
parent0dbc6a507c682db1590105765119b7fa59f6493e (diff)
libcamera: ipa: raspberrypi: Plumb in the libcamera sharpness control
This simply wires up the libcamera sharpness control in the Raspberry Pi IPAs so that it controls the strength of the Raspberry Pi sharpness control algorithm. Signed-off-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--include/libcamera/ipa/raspberrypi.h1
-rw-r--r--src/ipa/raspberrypi/raspberrypi.cpp12
2 files changed, 13 insertions, 0 deletions
diff --git a/include/libcamera/ipa/raspberrypi.h b/include/libcamera/ipa/raspberrypi.h
index c109469e..a18ce9a8 100644
--- a/include/libcamera/ipa/raspberrypi.h
+++ b/include/libcamera/ipa/raspberrypi.h
@@ -51,6 +51,7 @@ static const ControlInfoMap RPiControls = {
{ &controls::Brightness, ControlInfo(-1.0f, 1.0f) },
{ &controls::Contrast, ControlInfo(0.0f, 32.0f) },
{ &controls::Saturation, ControlInfo(0.0f, 32.0f) },
+ { &controls::Sharpness, ControlInfo(0.0f, 16.0f, 1.0f) },
};
} /* namespace libcamera */
diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp
index 42c84b16..bc89ab58 100644
--- a/src/ipa/raspberrypi/raspberrypi.cpp
+++ b/src/ipa/raspberrypi/raspberrypi.cpp
@@ -47,6 +47,7 @@
#include "metadata.hpp"
#include "noise_status.h"
#include "sdn_status.h"
+#include "sharpen_algorithm.hpp"
#include "sharpen_status.h"
namespace libcamera {
@@ -633,6 +634,17 @@ void IPARPi::queueRequest(const ControlList &controls)
break;
}
+ case controls::SHARPNESS: {
+ RPi::SharpenAlgorithm *sharpen = dynamic_cast<RPi::SharpenAlgorithm *>(
+ controller_.GetAlgorithm("sharpen"));
+ ASSERT(sharpen);
+
+ sharpen->SetStrength(ctrl.second.get<float>());
+ libcameraMetadata_.set(controls::Sharpness,
+ ctrl.second.get<float>());
+ break;
+ }
+
default:
LOG(IPARPI, Warning)
<< "Ctrl " << controls::controls.at(ctrl.first)->name()