summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorinsup.choi <insup.choi@lge.com>2013-01-08 17:55:46 -0800
committerIliyan Malchev <malchev@google.com>2013-04-12 12:17:43 -0700
commit8a2375fac006cb98324bdf2c4011579eeb346906 (patch)
tree85844445eb9983655a3fbb06a4598244e57915e4
parent9c4962685507633b85be84d46ee05d21020ec8ea (diff)
downloadmako-8a2375fac006cb98324bdf2c4011579eeb346906.tar.gz
mako: camera: update exif header for new exif member
Add f-number on EXIF header to show aperture item in exif viewer. Bug: 7960810 Change-Id: Ic78012cfb1d0d8a8d44571c5439c29a65abe4ff0 Signed-off-by: Iliyan Malchev <malchev@google.com>
-rw-r--r--camera/QCameraHWI.h2
-rw-r--r--camera/QCameraHWI_Parm.cpp23
-rw-r--r--camera/QCamera_Intf.h2
-rw-r--r--camera/mm-camera-interface/mm_camera.c4
4 files changed, 25 insertions, 6 deletions
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 @@ static const char ExifUndefinedPrefix[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
#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 @@ typedef struct{
//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 @@ void QCameraHardwareInterface::loadTables()
}
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 @@ void QCameraHardwareInterface::initDefaultParameters()
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 @@ void QCameraHardwareInterface::addExifTag(exif_tag_id_t tagid, exif_tag_type_t t
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 @@ void QCameraHardwareInterface::initExifData(){
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 @@ typedef enum {
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 @@ typedef enum {
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 @@ int32_t mm_camera_get_parm(mm_camera_obj_t * my_obj,
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;