[libcamera-devel] [PATCH v2 4/4] libcamera: ipa: raspberrypi: plumb the libcamera sharpness control through to the Raspberry Pi implementation

Laurent Pinchart laurent.pinchart at ideasonboard.com
Tue Jun 23 01:05:55 CEST 2020


Hi David,

Thank you for the patch.

Same comment as for patch 3/4, maybe the subject line could be shortened
to "libcamera: ipa: raspberrypi: Plumb the libcamera sharpness control" ?

On Mon, Jun 22, 2020 at 02:55:50PM +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>

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.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) },
>  };
>  
>  } /* namespace libcamera */
> diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp
> index 42c84b1..bc89ab5 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()

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list