Merge "mako: camera: update exif header for new exif member" into jb-mr2-dev
diff --git a/camera/QCameraHWI.h b/camera/QCameraHWI.h
index 3d47bf9..c9a7f3e 100644
--- a/camera/QCameraHWI.h
+++ b/camera/QCameraHWI.h
@@ -206,6 +206,7 @@
#define GPS_PROCESSING_METHOD_SIZE 101
#define FOCAL_LENGTH_DECIMAL_PRECISION 100
#define EXIF_ASCII_PREFIX_SIZE 8 //(sizeof(ExifAsciiPrefix))
+#define F_NUMBER_DECIMAL_PRECISION 100
typedef struct{
//GPS tags
@@ -220,6 +221,7 @@
//Other tags
char dateTime[20];
rat_t focalLength;
+ rat_t f_number;
uint16_t flashMode;
uint16_t isoSpeed;
rat_t exposure_time;
diff --git a/camera/QCameraHWI_Parm.cpp b/camera/QCameraHWI_Parm.cpp
index e212d22..cccc759 100644
--- a/camera/QCameraHWI_Parm.cpp
+++ b/camera/QCameraHWI_Parm.cpp
@@ -694,6 +694,13 @@
}
ALOGV("%s: X", __func__);
}
+
+rat_t getRational(int num, int denom)
+{
+ rat_t temp = {num, denom};
+ return temp;
+}
+
void QCameraHardwareInterface::initDefaultParameters()
{
bool ret;
@@ -1247,6 +1254,12 @@
mParameters.setFloat(QCameraParameters::KEY_VERTICAL_VIEW_ANGLE,
verticalViewAngle);
+ //Set Aperture
+ float f_number = 0.0f;
+ cam_config_get_parm(mCameraId, MM_CAMERA_PARM_F_NUMBER,
+ (void *)&f_number);
+ mExifValues.f_number = getRational(f_number*F_NUMBER_DECIMAL_PRECISION, F_NUMBER_DECIMAL_PRECISION);
+
//Set Exposure Compensation
mParameters.set(
QCameraParameters::KEY_MAX_EXPOSURE_COMPENSATION,
@@ -4004,12 +4017,6 @@
mExifTableNumEntries++;
}
-rat_t getRational(int num, int denom)
-{
- rat_t temp = {num, denom};
- return temp;
-}
-
void QCameraHardwareInterface::initExifData(){
if(mExifValues.dateTime) {
addExifTag(EXIFTAGID_EXIF_DATE_TIME_ORIGINAL, EXIF_ASCII,
@@ -4020,6 +4027,10 @@
addExifTag(EXIFTAGID_FOCAL_LENGTH, EXIF_RATIONAL, 1, 1, (void *)&(mExifValues.focalLength));
addExifTag(EXIFTAGID_ISO_SPEED_RATING,EXIF_SHORT,1,1,(void *)&(mExifValues.isoSpeed));
+ // normal f_number is from 1.2 to 22, but I'd like to put some margin.
+ if(mExifValues.f_number.num>0 && mExifValues.f_number.num<3200)
+ addExifTag(EXIFTAGID_F_NUMBER,EXIF_RATIONAL,1,1,(void *)&(mExifValues.f_number));
+
if(mExifValues.mGpsProcess) {
addExifTag(EXIFTAGID_GPS_PROCESSINGMETHOD, EXIF_ASCII,
EXIF_ASCII_PREFIX_SIZE + strlen(mExifValues.gpsProcessingMethod + EXIF_ASCII_PREFIX_SIZE) + 1,
diff --git a/camera/QCamera_Intf.h b/camera/QCamera_Intf.h
index 4daea63..51b1744 100644
--- a/camera/QCamera_Intf.h
+++ b/camera/QCamera_Intf.h
@@ -473,6 +473,7 @@
MM_CAMERA_PARM_CHECK_AF_RETRY,
MM_CAMERA_PARM_LG_CAF_LOCK,
MM_CAMERA_PARM_INFORM_STARTPRVIEW,
+ MM_CAMERA_PARM_F_NUMBER,
MM_CAMERA_PARM_MAX
} mm_camera_parm_type_t;
@@ -625,6 +626,7 @@
CAMERA_CHECK_AF_RETRY,
CAMERA_SET_LG_CAF_LOCK,
CAMERA_SET_INFORM_STARTPREVIEW,
+ CAMERA_GET_PARM_F_NUMBER,
CAMERA_CTRL_PARM_MAX
} cam_ctrl_type;
diff --git a/camera/mm-camera-interface/mm_camera.c b/camera/mm-camera-interface/mm_camera.c
index eb3fe00..6cfb9b2 100644
--- a/camera/mm-camera-interface/mm_camera.c
+++ b/camera/mm-camera-interface/mm_camera.c
@@ -669,6 +669,10 @@
case MM_CAMERA_PARM_GET_AF_STATUS:
return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_GET_PARM_AF_STATUS,
sizeof(af_actuator_status_t), (void *)parm->p_value);
+
+ case MM_CAMERA_PARM_F_NUMBER:
+ return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_GET_PARM_F_NUMBER,
+ sizeof(float), (void *)parm->p_value);
default:
/* needs to add more implementation */
rc = -1;