diff options
author | Eino-Ville Talvala <etalvala@google.com> | 2018-04-12 16:32:04 -0700 |
---|---|---|
committer | Eino-Ville Talvala <etalvala@google.com> | 2018-04-12 16:32:04 -0700 |
commit | d9221d2ea9789519dfc80fed05310304589977ee (patch) | |
tree | 4d159ba29244c5df552b32f4192aa5a547da622b | |
parent | 206360b89e5455feb0b1084e7c79eb4d72b2c281 (diff) | |
download | camera-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.cpp | 46 |
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; } |