[v2,27/35] libcamera: internal: camera_sensor: Add accessor for mountingOrientation_
diff mbox series

Message ID 20251023144841.403689-28-stefan.klug@ideasonboard.com
State New
Headers show
Series
  • Full dewarper support on imx8mp
Related show

Commit Message

Stefan Klug Oct. 23, 2025, 2:48 p.m. UTC
To properly handle the orientation in the dewarper, the mounting
orientation of the sensor needs to be queryable. Add that.

Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

---

Changes in v2:
- Collected tag
- Add documentation
---
 include/libcamera/internal/camera_sensor.h    | 1 +
 src/libcamera/sensor/camera_sensor.cpp        | 7 +++++++
 src/libcamera/sensor/camera_sensor_legacy.cpp | 1 +
 src/libcamera/sensor/camera_sensor_raw.cpp    | 1 +
 4 files changed, 10 insertions(+)

Comments

Umang Jain Oct. 25, 2025, 12:33 p.m. UTC | #1
On Thu, Oct 23, 2025 at 04:48:28PM +0200, Stefan Klug wrote:
> To properly handle the orientation in the dewarper, the mounting
> orientation of the sensor needs to be queryable. Add that.

Rotation property not sufficient ? Or is it set late in the pipeline
to not be able to access that property?

> 
> Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>
> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
> 
> ---
> 
> Changes in v2:
> - Collected tag
> - Add documentation
> ---
>  include/libcamera/internal/camera_sensor.h    | 1 +
>  src/libcamera/sensor/camera_sensor.cpp        | 7 +++++++
>  src/libcamera/sensor/camera_sensor_legacy.cpp | 1 +
>  src/libcamera/sensor/camera_sensor_raw.cpp    | 1 +
>  4 files changed, 10 insertions(+)
> 
> diff --git a/include/libcamera/internal/camera_sensor.h b/include/libcamera/internal/camera_sensor.h
> index f6ef4df170d4..e6b72d22ac21 100644
> --- a/include/libcamera/internal/camera_sensor.h
> +++ b/include/libcamera/internal/camera_sensor.h
> @@ -73,6 +73,7 @@ public:
>  	virtual int sensorInfo(IPACameraSensorInfo *info) const = 0;
>  	virtual Transform computeTransform(Orientation *orientation) const = 0;
>  	virtual BayerFormat::Order bayerOrder(Transform t) const = 0;
> +	virtual Orientation mountingOrientation() const = 0;
>  
>  	virtual const ControlInfoMap &controls() const = 0;
>  	virtual ControlList getControls(Span<const uint32_t> ids) = 0;
> diff --git a/src/libcamera/sensor/camera_sensor.cpp b/src/libcamera/sensor/camera_sensor.cpp
> index 4f2fd2690eb5..05390d1e1b60 100644
> --- a/src/libcamera/sensor/camera_sensor.cpp
> +++ b/src/libcamera/sensor/camera_sensor.cpp
> @@ -331,6 +331,13 @@ int CameraSensor::setEmbeddedDataEnabled(bool enable)
>   * \return The Bayer order produced by the sensor when the Transform is applied
>   */
>  
> +/**
> + * \fn CameraSensor::mountingOrientation()
> + * \brief Fetch the mounting orientation of the sensor
> + *
> + * \return The mounting orientation of the sensor
> + */
> +
>  /**
>   * \fn CameraSensor::controls()
>   * \brief Retrieve the supported V4L2 controls and their information
> diff --git a/src/libcamera/sensor/camera_sensor_legacy.cpp b/src/libcamera/sensor/camera_sensor_legacy.cpp
> index f9e685a9acc4..39c34200b0ff 100644
> --- a/src/libcamera/sensor/camera_sensor_legacy.cpp
> +++ b/src/libcamera/sensor/camera_sensor_legacy.cpp
> @@ -88,6 +88,7 @@ public:
>  	int sensorInfo(IPACameraSensorInfo *info) const override;
>  	Transform computeTransform(Orientation *orientation) const override;
>  	BayerFormat::Order bayerOrder(Transform t) const override;
> +	Orientation mountingOrientation() const override { return mountingOrientation_; }
>  
>  	const ControlInfoMap &controls() const override;
>  	ControlList getControls(Span<const uint32_t> ids) override;
> diff --git a/src/libcamera/sensor/camera_sensor_raw.cpp b/src/libcamera/sensor/camera_sensor_raw.cpp
> index 8ea4423698cd..759cccafe4a9 100644
> --- a/src/libcamera/sensor/camera_sensor_raw.cpp
> +++ b/src/libcamera/sensor/camera_sensor_raw.cpp
> @@ -94,6 +94,7 @@ public:
>  	int sensorInfo(IPACameraSensorInfo *info) const override;
>  	Transform computeTransform(Orientation *orientation) const override;
>  	BayerFormat::Order bayerOrder(Transform t) const override;
> +	Orientation mountingOrientation() const override { return mountingOrientation_; }
>  
>  	const ControlInfoMap &controls() const override;
>  	ControlList getControls(Span<const uint32_t> ids) override;
> -- 
> 2.48.1
>
Paul Elder Nov. 6, 2025, noon UTC | #2
Quoting Stefan Klug (2025-10-23 23:48:28)
> To properly handle the orientation in the dewarper, the mounting
> orientation of the sensor needs to be queryable. Add that.
> 
> Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>
> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

Looks good to me.

Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>

> 
> ---
> 
> Changes in v2:
> - Collected tag
> - Add documentation
> ---
>  include/libcamera/internal/camera_sensor.h    | 1 +
>  src/libcamera/sensor/camera_sensor.cpp        | 7 +++++++
>  src/libcamera/sensor/camera_sensor_legacy.cpp | 1 +
>  src/libcamera/sensor/camera_sensor_raw.cpp    | 1 +
>  4 files changed, 10 insertions(+)
> 
> diff --git a/include/libcamera/internal/camera_sensor.h b/include/libcamera/internal/camera_sensor.h
> index f6ef4df170d4..e6b72d22ac21 100644
> --- a/include/libcamera/internal/camera_sensor.h
> +++ b/include/libcamera/internal/camera_sensor.h
> @@ -73,6 +73,7 @@ public:
>         virtual int sensorInfo(IPACameraSensorInfo *info) const = 0;
>         virtual Transform computeTransform(Orientation *orientation) const = 0;
>         virtual BayerFormat::Order bayerOrder(Transform t) const = 0;
> +       virtual Orientation mountingOrientation() const = 0;
>  
>         virtual const ControlInfoMap &controls() const = 0;
>         virtual ControlList getControls(Span<const uint32_t> ids) = 0;
> diff --git a/src/libcamera/sensor/camera_sensor.cpp b/src/libcamera/sensor/camera_sensor.cpp
> index 4f2fd2690eb5..05390d1e1b60 100644
> --- a/src/libcamera/sensor/camera_sensor.cpp
> +++ b/src/libcamera/sensor/camera_sensor.cpp
> @@ -331,6 +331,13 @@ int CameraSensor::setEmbeddedDataEnabled(bool enable)
>   * \return The Bayer order produced by the sensor when the Transform is applied
>   */
>  
> +/**
> + * \fn CameraSensor::mountingOrientation()
> + * \brief Fetch the mounting orientation of the sensor
> + *
> + * \return The mounting orientation of the sensor
> + */
> +
>  /**
>   * \fn CameraSensor::controls()
>   * \brief Retrieve the supported V4L2 controls and their information
> diff --git a/src/libcamera/sensor/camera_sensor_legacy.cpp b/src/libcamera/sensor/camera_sensor_legacy.cpp
> index f9e685a9acc4..39c34200b0ff 100644
> --- a/src/libcamera/sensor/camera_sensor_legacy.cpp
> +++ b/src/libcamera/sensor/camera_sensor_legacy.cpp
> @@ -88,6 +88,7 @@ public:
>         int sensorInfo(IPACameraSensorInfo *info) const override;
>         Transform computeTransform(Orientation *orientation) const override;
>         BayerFormat::Order bayerOrder(Transform t) const override;
> +       Orientation mountingOrientation() const override { return mountingOrientation_; }
>  
>         const ControlInfoMap &controls() const override;
>         ControlList getControls(Span<const uint32_t> ids) override;
> diff --git a/src/libcamera/sensor/camera_sensor_raw.cpp b/src/libcamera/sensor/camera_sensor_raw.cpp
> index 8ea4423698cd..759cccafe4a9 100644
> --- a/src/libcamera/sensor/camera_sensor_raw.cpp
> +++ b/src/libcamera/sensor/camera_sensor_raw.cpp
> @@ -94,6 +94,7 @@ public:
>         int sensorInfo(IPACameraSensorInfo *info) const override;
>         Transform computeTransform(Orientation *orientation) const override;
>         BayerFormat::Order bayerOrder(Transform t) const override;
> +       Orientation mountingOrientation() const override { return mountingOrientation_; }
>  
>         const ControlInfoMap &controls() const override;
>         ControlList getControls(Span<const uint32_t> ids) override;
> -- 
> 2.48.1
>

Patch
diff mbox series

diff --git a/include/libcamera/internal/camera_sensor.h b/include/libcamera/internal/camera_sensor.h
index f6ef4df170d4..e6b72d22ac21 100644
--- a/include/libcamera/internal/camera_sensor.h
+++ b/include/libcamera/internal/camera_sensor.h
@@ -73,6 +73,7 @@  public:
 	virtual int sensorInfo(IPACameraSensorInfo *info) const = 0;
 	virtual Transform computeTransform(Orientation *orientation) const = 0;
 	virtual BayerFormat::Order bayerOrder(Transform t) const = 0;
+	virtual Orientation mountingOrientation() const = 0;
 
 	virtual const ControlInfoMap &controls() const = 0;
 	virtual ControlList getControls(Span<const uint32_t> ids) = 0;
diff --git a/src/libcamera/sensor/camera_sensor.cpp b/src/libcamera/sensor/camera_sensor.cpp
index 4f2fd2690eb5..05390d1e1b60 100644
--- a/src/libcamera/sensor/camera_sensor.cpp
+++ b/src/libcamera/sensor/camera_sensor.cpp
@@ -331,6 +331,13 @@  int CameraSensor::setEmbeddedDataEnabled(bool enable)
  * \return The Bayer order produced by the sensor when the Transform is applied
  */
 
+/**
+ * \fn CameraSensor::mountingOrientation()
+ * \brief Fetch the mounting orientation of the sensor
+ *
+ * \return The mounting orientation of the sensor
+ */
+
 /**
  * \fn CameraSensor::controls()
  * \brief Retrieve the supported V4L2 controls and their information
diff --git a/src/libcamera/sensor/camera_sensor_legacy.cpp b/src/libcamera/sensor/camera_sensor_legacy.cpp
index f9e685a9acc4..39c34200b0ff 100644
--- a/src/libcamera/sensor/camera_sensor_legacy.cpp
+++ b/src/libcamera/sensor/camera_sensor_legacy.cpp
@@ -88,6 +88,7 @@  public:
 	int sensorInfo(IPACameraSensorInfo *info) const override;
 	Transform computeTransform(Orientation *orientation) const override;
 	BayerFormat::Order bayerOrder(Transform t) const override;
+	Orientation mountingOrientation() const override { return mountingOrientation_; }
 
 	const ControlInfoMap &controls() const override;
 	ControlList getControls(Span<const uint32_t> ids) override;
diff --git a/src/libcamera/sensor/camera_sensor_raw.cpp b/src/libcamera/sensor/camera_sensor_raw.cpp
index 8ea4423698cd..759cccafe4a9 100644
--- a/src/libcamera/sensor/camera_sensor_raw.cpp
+++ b/src/libcamera/sensor/camera_sensor_raw.cpp
@@ -94,6 +94,7 @@  public:
 	int sensorInfo(IPACameraSensorInfo *info) const override;
 	Transform computeTransform(Orientation *orientation) const override;
 	BayerFormat::Order bayerOrder(Transform t) const override;
+	Orientation mountingOrientation() const override { return mountingOrientation_; }
 
 	const ControlInfoMap &controls() const override;
 	ControlList getControls(Span<const uint32_t> ids) override;