[v3,14/17] libcamera: rkisp1: make RkISP1CameraConfiguration a friend of the pipeline handler
diff mbox series

Message ID 20241206101344.767170-15-stefan.klug@ideasonboard.com
State Superseded
Delegated to: Paul Elder
Headers show
Series
  • rkisp1: Fix aspect ratio and ScalerCrop
Related show

Commit Message

Stefan Klug Dec. 6, 2024, 10:13 a.m. UTC
For the validate() implementation, the RkISP1CameraConfiguration needs
access to dewarper related members of the PipelineHandlerRkISP1 object.
Allow this access by adding const versions of the pipe accessors and
making RkISP1CameraConfiguration a friend of PipelineHandlerRkISP1.

Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>
---
Changes in v3:
- Added this patch
---
 src/libcamera/pipeline/rkisp1/rkisp1.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Jacopo Mondi Dec. 11, 2024, 2:44 p.m. UTC | #1
Hi Stefan

On Fri, Dec 06, 2024 at 11:13:36AM +0100, Stefan Klug wrote:
> For the validate() implementation, the RkISP1CameraConfiguration needs
> access to dewarper related members of the PipelineHandlerRkISP1 object.
> Allow this access by adding const versions of the pipe accessors and
> making RkISP1CameraConfiguration a friend of PipelineHandlerRkISP1.
>
> Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>
> ---
> Changes in v3:
> - Added this patch
> ---
>  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> index 2c8d670768b1..c582e164670c 100644
> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> @@ -98,6 +98,7 @@ public:
>  	}
>
>  	PipelineHandlerRkISP1 *pipe();
> +	const PipelineHandlerRkISP1 *pipe() const;
>  	int loadIPA(unsigned int hwRevision);
>
>  	Stream mainPathStream_;
> @@ -176,6 +177,7 @@ private:
>  	}
>
>  	friend RkISP1CameraData;
> +	friend RkISP1CameraConfiguration;

Alternatively, a
        V4L2M2MConverter *dewarper();

function could be added.

I don't mind either ways
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>

Thanks
  j

>  	friend RkISP1Frames;
>
>  	int initLinks(Camera *camera, const CameraSensor *sensor,
> @@ -363,6 +365,11 @@ PipelineHandlerRkISP1 *RkISP1CameraData::pipe()
>  	return static_cast<PipelineHandlerRkISP1 *>(Camera::Private::pipe());
>  }
>
> +const PipelineHandlerRkISP1 *RkISP1CameraData::pipe() const
> +{
> +	return static_cast<const PipelineHandlerRkISP1 *>(Camera::Private::pipe());
> +}
> +
>  int RkISP1CameraData::loadIPA(unsigned int hwRevision)
>  {
>  	ipa_ = IPAManager::createIPA<ipa::rkisp1::IPAProxyRkISP1>(pipe(), 1, 1);
> --
> 2.43.0
>
Paul Elder Dec. 12, 2024, 12:08 p.m. UTC | #2
On Fri, Dec 06, 2024 at 11:13:36AM +0100, Stefan Klug wrote:
> For the validate() implementation, the RkISP1CameraConfiguration needs
> access to dewarper related members of the PipelineHandlerRkISP1 object.
> Allow this access by adding const versions of the pipe accessors and
> making RkISP1CameraConfiguration a friend of PipelineHandlerRkISP1.
> 
> Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>

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

> ---
> Changes in v3:
> - Added this patch
> ---
>  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> index 2c8d670768b1..c582e164670c 100644
> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> @@ -98,6 +98,7 @@ public:
>  	}
>  
>  	PipelineHandlerRkISP1 *pipe();
> +	const PipelineHandlerRkISP1 *pipe() const;
>  	int loadIPA(unsigned int hwRevision);
>  
>  	Stream mainPathStream_;
> @@ -176,6 +177,7 @@ private:
>  	}
>  
>  	friend RkISP1CameraData;
> +	friend RkISP1CameraConfiguration;
>  	friend RkISP1Frames;
>  
>  	int initLinks(Camera *camera, const CameraSensor *sensor,
> @@ -363,6 +365,11 @@ PipelineHandlerRkISP1 *RkISP1CameraData::pipe()
>  	return static_cast<PipelineHandlerRkISP1 *>(Camera::Private::pipe());
>  }
>  
> +const PipelineHandlerRkISP1 *RkISP1CameraData::pipe() const
> +{
> +	return static_cast<const PipelineHandlerRkISP1 *>(Camera::Private::pipe());
> +}
> +
>  int RkISP1CameraData::loadIPA(unsigned int hwRevision)
>  {
>  	ipa_ = IPAManager::createIPA<ipa::rkisp1::IPAProxyRkISP1>(pipe(), 1, 1);
> -- 
> 2.43.0
>

Patch
diff mbox series

diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
index 2c8d670768b1..c582e164670c 100644
--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
@@ -98,6 +98,7 @@  public:
 	}
 
 	PipelineHandlerRkISP1 *pipe();
+	const PipelineHandlerRkISP1 *pipe() const;
 	int loadIPA(unsigned int hwRevision);
 
 	Stream mainPathStream_;
@@ -176,6 +177,7 @@  private:
 	}
 
 	friend RkISP1CameraData;
+	friend RkISP1CameraConfiguration;
 	friend RkISP1Frames;
 
 	int initLinks(Camera *camera, const CameraSensor *sensor,
@@ -363,6 +365,11 @@  PipelineHandlerRkISP1 *RkISP1CameraData::pipe()
 	return static_cast<PipelineHandlerRkISP1 *>(Camera::Private::pipe());
 }
 
+const PipelineHandlerRkISP1 *RkISP1CameraData::pipe() const
+{
+	return static_cast<const PipelineHandlerRkISP1 *>(Camera::Private::pipe());
+}
+
 int RkISP1CameraData::loadIPA(unsigned int hwRevision)
 {
 	ipa_ = IPAManager::createIPA<ipa::rkisp1::IPAProxyRkISP1>(pipe(), 1, 1);