[libcamera-devel,v7,1/8] libcamera: pipeline: raspberrypi: Revert "Set sensor default orientation before configure()"

Message ID 20200904103042.1593-2-david.plowman@raspberrypi.com
State Accepted
Headers show
Series
  • 2D transforms
Related show

Commit Message

David Plowman Sept. 4, 2020, 10:30 a.m. UTC
This reverts commit 1e8c91b65695449c5246d17ba7dc439c8058b781.

Now that we shall be implementing application-defined 2D transforms
it's no longer possible to set the sensor orientation so early on. We
have to wait until we have the CameraConfiguration object as that's
where the application puts its choice of transform.

Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
---
 src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

Comments

Laurent Pinchart Sept. 5, 2020, 10:28 p.m. UTC | #1
Hi David,

Thank you for the patch.

On Fri, Sep 04, 2020 at 11:30:35AM +0100, David Plowman wrote:
> This reverts commit 1e8c91b65695449c5246d17ba7dc439c8058b781.
> 
> Now that we shall be implementing application-defined 2D transforms
> it's no longer possible to set the sensor orientation so early on. We
> have to wait until we have the CameraConfiguration object as that's
> where the application puts its choice of transform.
> 
> Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> ---
>  src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 14 +++++++-------
>  1 file changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> index ce43af3..f78b73e 100644
> --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> @@ -962,13 +962,6 @@ bool PipelineHandlerRPi::match(DeviceEnumerator *enumerator)
>  	/* Initialize the camera properties. */
>  	data->properties_ = data->sensor_->properties();
>  
> -	/* Configure the H/V flip controls based on the sensor rotation. */
> -	ControlList ctrls(data->unicam_[Unicam::Image].dev()->controls());
> -	int32_t rotation = data->properties_.get(properties::Rotation);
> -	ctrls.set(V4L2_CID_HFLIP, static_cast<int32_t>(!!rotation));
> -	ctrls.set(V4L2_CID_VFLIP, static_cast<int32_t>(!!rotation));
> -	data->unicam_[Unicam::Image].dev()->setControls(&ctrls);
> -
>  	/*
>  	 * List the available output streams.
>  	 * Currently cannot do Unicam streams!
> @@ -1173,6 +1166,13 @@ int RPiCameraData::configureIPA()
>  					      { V4L2_CID_EXPOSURE, result.data[1] } });
>  			sensorMetadata_ = result.data[2];
>  		}
> +
> +		/* Configure the H/V flip controls based on the sensor rotation. */
> +		ControlList ctrls(unicam_[Unicam::Image].dev()->controls());
> +		int32_t rotation = sensor_->properties().get(properties::Rotation);
> +		ctrls.set(V4L2_CID_HFLIP, static_cast<int32_t>(!!rotation));
> +		ctrls.set(V4L2_CID_VFLIP, static_cast<int32_t>(!!rotation));
> +		unicam_[Unicam::Image].dev()->setControls(&ctrls);
>  	}
>  
>  	if (result.operation & RPI_IPA_CONFIG_SENSOR) {

Patch

diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
index ce43af3..f78b73e 100644
--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
+++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
@@ -962,13 +962,6 @@  bool PipelineHandlerRPi::match(DeviceEnumerator *enumerator)
 	/* Initialize the camera properties. */
 	data->properties_ = data->sensor_->properties();
 
-	/* Configure the H/V flip controls based on the sensor rotation. */
-	ControlList ctrls(data->unicam_[Unicam::Image].dev()->controls());
-	int32_t rotation = data->properties_.get(properties::Rotation);
-	ctrls.set(V4L2_CID_HFLIP, static_cast<int32_t>(!!rotation));
-	ctrls.set(V4L2_CID_VFLIP, static_cast<int32_t>(!!rotation));
-	data->unicam_[Unicam::Image].dev()->setControls(&ctrls);
-
 	/*
 	 * List the available output streams.
 	 * Currently cannot do Unicam streams!
@@ -1173,6 +1166,13 @@  int RPiCameraData::configureIPA()
 					      { V4L2_CID_EXPOSURE, result.data[1] } });
 			sensorMetadata_ = result.data[2];
 		}
+
+		/* Configure the H/V flip controls based on the sensor rotation. */
+		ControlList ctrls(unicam_[Unicam::Image].dev()->controls());
+		int32_t rotation = sensor_->properties().get(properties::Rotation);
+		ctrls.set(V4L2_CID_HFLIP, static_cast<int32_t>(!!rotation));
+		ctrls.set(V4L2_CID_VFLIP, static_cast<int32_t>(!!rotation));
+		unicam_[Unicam::Image].dev()->setControls(&ctrls);
 	}
 
 	if (result.operation & RPI_IPA_CONFIG_SENSOR) {