camera: adding exposure time to EXIF
Bug: 10037666
Change-Id: I5b9e044300ccf901838dc69d5877167c1f102b3b
diff --git a/camera/QCamera2/HAL3/QCamera3Channel.cpp b/camera/QCamera2/HAL3/QCamera3Channel.cpp
index 69e3af4..387ee35 100644
--- a/camera/QCamera2/HAL3/QCamera3Channel.cpp
+++ b/camera/QCamera2/HAL3/QCamera3Channel.cpp
@@ -1380,6 +1380,29 @@
}
/*===========================================================================
+ * FUNCTION : getExifExpTimeInfo
+ *
+ * DESCRIPTION: get exif exposure time information
+ *
+ * PARAMETERS :
+ * @expoTimeInfo : expousure time value
+ * RETURN : nt32_t type of status
+ * NO_ERROR -- success
+ * none-zero failure code
+ *==========================================================================*/
+int32_t getExifExpTimeInfo(rat_t *expoTimeInfo, int64_t value)
+{
+
+ int cal_exposureTime;
+ if (value != 0)
+ cal_exposureTime = value;
+ else
+ cal_exposureTime = 60;
+
+ return getRational(expoTimeInfo, 1, cal_exposureTime);
+}
+
+/*===========================================================================
* FUNCTION : getExifGpsProcessingMethod
*
* DESCRIPTION: get GPS processing method
@@ -1602,6 +1625,16 @@
1,
(void *)&(isoSpeed));
+ rat_t sensorExpTime ;
+ rc = getExifExpTimeInfo(&sensorExpTime, (int64_t)mJpegSettings->sensor_exposure_time);
+ if (rc == NO_ERROR){
+ exif->addEntry(EXIFTAGID_EXPOSURE_TIME,
+ EXIF_RATIONAL,
+ 1,
+ (void *)&(sensorExpTime));
+ } else {
+ ALOGE("now addEntry for EXIFTAGID_EXPOSURE_TIME is %d", sensorExpTime);
+ }
if (strlen(mJpegSettings->gps_processing_method) > 0) {
char gpsProcessingMethod[EXIF_ASCII_PREFIX_SIZE + GPS_PROCESSING_METHOD_SIZE];
diff --git a/camera/QCamera2/HAL3/QCamera3HALHeader.h b/camera/QCamera2/HAL3/QCamera3HALHeader.h
index d8ec935..9aaddbf 100644
--- a/camera/QCamera2/HAL3/QCamera3HALHeader.h
+++ b/camera/QCamera2/HAL3/QCamera3HALHeader.h
@@ -48,6 +48,7 @@
uint8_t jpeg_quality;
cam_dimension_t thumbnail_size;
int32_t sensor_sensitivity;
+ int64_t sensor_exposure_time;
float lens_focal_length;
int32_t max_jpeg_size;
int exposure_compensation;
@@ -68,6 +69,7 @@
typedef struct {
int32_t iso_speed;
+ int64_t exposure_time;
} metadata_response_t;
};//namespace qcamera
diff --git a/camera/QCamera2/HAL3/QCamera3HWI.cpp b/camera/QCamera2/HAL3/QCamera3HWI.cpp
index 33eee96..18b267b 100644
--- a/camera/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/camera/QCamera2/HAL3/QCamera3HWI.cpp
@@ -1371,6 +1371,7 @@
int64_t *sensorExpTime =
(int64_t *)POINTER_OF(CAM_INTF_META_SENSOR_EXPOSURE_TIME, metadata);
+ mMetadataResponse.exposure_time = *sensorExpTime;
camMetadata.update(ANDROID_SENSOR_EXPOSURE_TIME , sensorExpTime, 1);
int64_t *sensorFameDuration =
@@ -3242,6 +3243,8 @@
mJpegSettings->sensor_sensitivity = mMetadataResponse.iso_speed;
}
+ mJpegSettings->sensor_exposure_time = mMetadataResponse.exposure_time;
+
if (jpeg_settings.exists(ANDROID_LENS_FOCAL_LENGTH)) {
mJpegSettings->lens_focal_length =
jpeg_settings.find(ANDROID_LENS_FOCAL_LENGTH).data.f[0];