summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/jni/android_hardware_camera2_DngCreator.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/core/jni/android_hardware_camera2_DngCreator.cpp b/core/jni/android_hardware_camera2_DngCreator.cpp
index d2932e43fe5b..3d021d6cc6b2 100644
--- a/core/jni/android_hardware_camera2_DngCreator.cpp
+++ b/core/jni/android_hardware_camera2_DngCreator.cpp
@@ -21,6 +21,7 @@
#include <algorithm>
#include <memory>
#include <vector>
+#include <cmath>
#include <utils/Log.h>
#include <utils/Errors.h>
@@ -1375,6 +1376,23 @@ static sp<TiffWriter> DngCreator_setup(JNIEnv* env, jobject thiz, uint32_t image
}
{
+ // Baseline exposure
+ camera_metadata_entry entry =
+ results.find(ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST);
+ BAIL_IF_EMPTY_RET_NULL_SP(entry, env, TAG_BASELINEEXPOSURE, writer);
+
+ // post RAW gain should be boostValue / 100
+ double postRAWGain = static_cast<double> (entry.data.i32[0]) / 100.f;
+ // Baseline exposure should be in EV units so log2(gain) =
+ // log10(gain)/log10(2)
+ double baselineExposure = std::log(postRAWGain) / std::log(2.0f);
+ int32_t baseExposureSRat[] = { static_cast<int32_t> (baselineExposure * 100),
+ 100 };
+ BAIL_IF_INVALID_RET_NULL_SP(writer->addEntry(TAG_BASELINEEXPOSURE, 1,
+ baseExposureSRat, TIFF_IFD_0), env, TAG_BASELINEEXPOSURE, writer);
+ }
+
+ {
// focal length
camera_metadata_entry entry =
results.find(ANDROID_LENS_FOCAL_LENGTH);