[libcamera-devel] [PATCH 3/3] libcamera: raspberrypi: plumb the libcamera sharpness control through to the Raspberry Pi implementation
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Mon Jun 22 04:38:46 CEST 2020
Hi David,
Thank you for the patch.
On Fri, Jun 19, 2020 at 10:27:25AM +0100, David Plowman wrote:
> 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 at raspberrypi.com>
> ---
> include/libcamera/ipa/raspberrypi.h | 1 +
> src/ipa/raspberrypi/raspberrypi.cpp | 12 ++++++++++++
> 2 files changed, 13 insertions(+)
>
> diff --git a/include/libcamera/ipa/raspberrypi.h b/include/libcamera/ipa/raspberrypi.h
> index c109469..a18ce9a 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) },
In patch 2/3, status.threshold is computed with a division by the user
strength. Dividing by 0 doesn't seem like a very good idea. That's
something to be fixed in 2/3 though. For this patch,
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> };
>
> } /* namespace libcamera */
> diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp
> index 9669f21..2f2550e 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 {
> @@ -631,6 +632,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()
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list