summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2018-04-12 16:32:04 -0700
committerEino-Ville Talvala <etalvala@google.com>2018-04-12 16:32:04 -0700
commitd9221d2ea9789519dfc80fed05310304589977ee (patch)
tree4d159ba29244c5df552b32f4192aa5a547da622b
parent206360b89e5455feb0b1084e7c79eb4d72b2c281 (diff)
downloadcamera-d9221d2ea9789519dfc80fed05310304589977ee.tar.gz
Add lens calibration fields into result metadata
These were added to camera characteristics, but not capture results. Test: Camera CTS passes; captured DNGs include distortion correction fields. Bug: 74641761 Bug: 63629224 Change-Id: I33f9b65945cba05314f898b8c465df39c4d374a3
-rw-r--r--msm8998/QCamera2/HAL3/QCamera3HWI.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
index d0ad8d0..6fa7da0 100644
--- a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
@@ -8356,6 +8356,52 @@ QCamera3HardwareInterface::translateFromHalMetadata(
&fwk_DevCamDebug_aec_subject_motion, 1);
}
+ // Camera lens calibration dynamic fields, for back camera. Same values as for static metadata.
+ if (mCameraId == 0) {
+ const camera_metadata_t *staticInfo = gStaticMetadata[mCameraId];
+ camera_metadata_ro_entry_t rotation, translation, intrinsics, distortion, reference;
+ int res;
+ bool fail = false;
+ res = find_camera_metadata_ro_entry(staticInfo, ANDROID_LENS_POSE_ROTATION,
+ &rotation);
+ if (res != 0) {
+ fail = true;
+ }
+ res = find_camera_metadata_ro_entry(staticInfo, ANDROID_LENS_POSE_TRANSLATION,
+ &translation);
+ if (res != 0) {
+ fail = true;
+ }
+ res = find_camera_metadata_ro_entry(staticInfo, ANDROID_LENS_INTRINSIC_CALIBRATION,
+ &intrinsics);
+ if (res != 0) {
+ fail = true;
+ }
+ res = find_camera_metadata_ro_entry(staticInfo, ANDROID_LENS_DISTORTION,
+ &distortion);
+ if (res != 0) {
+ fail = true;
+ }
+ res = find_camera_metadata_ro_entry(staticInfo, ANDROID_LENS_POSE_REFERENCE,
+ &reference);
+ if (res != 0) {
+ fail = true;
+ }
+
+ if (!fail) {
+ camMetadata.update(ANDROID_LENS_POSE_ROTATION,
+ rotation.data.f, rotation.count);
+ camMetadata.update(ANDROID_LENS_POSE_TRANSLATION,
+ translation.data.f, translation.count);
+ camMetadata.update(ANDROID_LENS_INTRINSIC_CALIBRATION,
+ intrinsics.data.f, intrinsics.count);
+ camMetadata.update(ANDROID_LENS_DISTORTION,
+ distortion.data.f, distortion.count);
+ camMetadata.update(ANDROID_LENS_POSE_REFERENCE,
+ reference.data.u8, reference.count);
+ }
+ }
+
resultMetadata = camMetadata.release();
return resultMetadata;
}