[libcamera-devel] [PATCH] android: camera_device: Fix value of orientation metadata
Umang Jain
email at uajain.com
Wed Sep 9 09:38:33 CEST 2020
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
in anti-clockwise 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.
Signed-off-by: Umang Jain <email at uajain.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..35aa6c4 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 anti-clockwise direction. Read the libcamera's
+ * rotation property(anti-clockwise) 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 libcameraRotation = properties.get(properties::Rotation);
+ orientation_ = (360 - libcameraRotation) % 360;
+ }
int ret = camera_->acquire();
if (ret) {
--
2.26.2
More information about the libcamera-devel
mailing list