[libcamera-devel] [PATCH v2] android: camera_device: Fix value of orientation metadata

Jacopo Mondi jacopo at jmondi.org
Wed Sep 9 13:01:33 CEST 2020


Hi Umang,
 sorry I got late on v1

On Wed, Sep 09, 2020 at 04:17:54PM +0530, Umang Jain wrote:
> Android's orientation metadata cannot have identical numerical
> value to libcamera's rotation property. This is due to the fact
> that libcamera's rotation property specify the correction angle

specifies

> in anticlockwise direction whereas Android's orientation metadata
> specifies the value in clockwise direction. Fix that by computing
> corresponding value for clockwise direction from libcamera's rotation
> property.
>

We used 'counterclockwise', but I think it's the same

> Signed-off-by: Umang Jain <email at uajain.com>
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
>  src/android/camera_device.cpp | 15 ++++++++++-----
>  1 file changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index 2582991..8be846b 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -265,12 +265,17 @@ int CameraDevice::initialize()
>  	}
>
>  	/*
> -	 * The Android orientation metadata and libcamera rotation property are
> -	 * defined differently but have identical numerical values for Android
> -	 * devices such as phones and tablets.
> +	 * The Android orientation metadata specifies its rotation correction
> +	 * value in clockwise direction whereas libcamera specifies the
> +	 * rotation property in anticlockwise direction. Read the libcamera's
> +	 * rotation property (anticlockwise) and compute the corresponding
> +	 * value for clockwise direction as required by the Android orientation
> +	 * metadata.
>  	 */
> -	if (properties.contains(properties::Rotation))
> -		orientation_ = properties.get(properties::Rotation);
> +	if (properties.contains(properties::Rotation)) {
> +		int rotation = properties.get(properties::Rotation);
> +		orientation_ = (360 - rotation) % 360;

The % 360 'should' not be necessary, but I guess it doesn't hurt.

Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>

Thanks
  j

> +	}
>
>  	int ret = camera_->acquire();
>  	if (ret) {
> --
> 2.26.2
>


More information about the libcamera-devel mailing list