[2/2] pipeline: simple: Report the ScalerCrop
diff mbox series

Message ID 20260507-kbingham-simple-scaler-crop-v1-2-7a5af1948565@ideasonboard.com
State New
Headers show
Series
  • pipeline: simple: Add ScalerCrop reporting
Related show

Commit Message

Kieran Bingham May 7, 2026, 3:25 p.m. UTC
Provide the analogCrop rectangle in the completed request metadata to
inform the applications of the capture pixel region.

Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
---
 src/libcamera/pipeline/simple/simple.cpp | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Stefan Klug Oct. 1, 2026, 2:30 p.m. UTC | #1
Hi,

Quoting Kieran Bingham (2026-05-07 17:25:34)
> Provide the analogCrop rectangle in the completed request metadata to
> inform the applications of the capture pixel region.
> 
> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

Reviewed-by: Stefan Klug <stefan.klug@ideasonboard.com>

Cheers,
Stefan

> ---
>  src/libcamera/pipeline/simple/simple.cpp | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
> index ee394c567a2c..35ee468a3663 100644
> --- a/src/libcamera/pipeline/simple/simple.cpp
> +++ b/src/libcamera/pipeline/simple/simple.cpp
> @@ -362,6 +362,8 @@ public:
>         std::unique_ptr<SoftwareIsp> swIsp_;
>         SimpleFrames frameInfo_;
>  
> +       Rectangle scalerCrop_;
> +
>  private:
>         void tryPipeline(unsigned int code, const Size &size);
>         static std::vector<const MediaPad *> routedSourcePads(MediaPad *sink);
> @@ -998,6 +1000,8 @@ void SimpleCameraData::tryCompleteRequest(Request *request)
>         if (info->metadataRequired && !info->metadataProcessed)
>                 return;
>  
> +       request->_d()->metadata().set(controls::ScalerCrop, scalerCrop_);
> +
>         frameInfo_.destroy(info->frame);
>         pipe()->completeRequest(request);
>  }
> @@ -1530,6 +1534,7 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c)
>                 return ret;
>  
>         data->properties_.set(properties::ScalerCropMaximum, sensorInfo.analogCrop);
> +       data->scalerCrop_ = sensorInfo.analogCrop;
>  
>         /* Configure the video node, taking into account any Bayer pattern change. */
>         V4L2PixelFormat videoFormat;
> 
> -- 
> 2.52.0
>

Patch
diff mbox series

diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
index ee394c567a2c..35ee468a3663 100644
--- a/src/libcamera/pipeline/simple/simple.cpp
+++ b/src/libcamera/pipeline/simple/simple.cpp
@@ -362,6 +362,8 @@  public:
 	std::unique_ptr<SoftwareIsp> swIsp_;
 	SimpleFrames frameInfo_;
 
+	Rectangle scalerCrop_;
+
 private:
 	void tryPipeline(unsigned int code, const Size &size);
 	static std::vector<const MediaPad *> routedSourcePads(MediaPad *sink);
@@ -998,6 +1000,8 @@  void SimpleCameraData::tryCompleteRequest(Request *request)
 	if (info->metadataRequired && !info->metadataProcessed)
 		return;
 
+	request->_d()->metadata().set(controls::ScalerCrop, scalerCrop_);
+
 	frameInfo_.destroy(info->frame);
 	pipe()->completeRequest(request);
 }
@@ -1530,6 +1534,7 @@  int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c)
 		return ret;
 
 	data->properties_.set(properties::ScalerCropMaximum, sensorInfo.analogCrop);
+	data->scalerCrop_ = sensorInfo.analogCrop;
 
 	/* Configure the video node, taking into account any Bayer pattern change. */
 	V4L2PixelFormat videoFormat;