summaryrefslogtreecommitdiffstats
path: root/libcamera/SecCamera.cpp
diff options
context:
space:
mode:
authorJeong-Seok Yang <jseok.yang@samsung.com>2010-10-25 03:53:52 -0700
committerWu-cheng Li <wuchengli@google.com>2010-10-28 21:47:48 +0900
commit0f5a5274024492536dab8dafa85ed1334aeff304 (patch)
tree7b3dbbe630625555b8d9e6447e5997e68df5da2f /libcamera/SecCamera.cpp
parent19e06af6ed882c956061936169f5ac6cc75b4231 (diff)
downloaddevice_samsung_crespo-0f5a5274024492536dab8dafa85ed1334aeff304.zip
device_samsung_crespo-0f5a5274024492536dab8dafa85ed1334aeff304.tar.gz
device_samsung_crespo-0f5a5274024492536dab8dafa85ed1334aeff304.tar.bz2
libcamera: Fix EXIF informations
Binary version, ISO, focal-length, and flash informations in EXIF are fixed correctly. Change-Id: I2dbfd217ae1e1bb875848ba89c4633a93d337779 Signed-off-by: Jeong-Seok Yang <jseok.yang@samsung.com> pid:3604
Diffstat (limited to 'libcamera/SecCamera.cpp')
-rw-r--r--libcamera/SecCamera.cpp41
1 files changed, 27 insertions, 14 deletions
diff --git a/libcamera/SecCamera.cpp b/libcamera/SecCamera.cpp
index 78a760d..1519be8 100644
--- a/libcamera/SecCamera.cpp
+++ b/libcamera/SecCamera.cpp
@@ -827,9 +827,10 @@ int SecCamera::initCamera(int index)
ret = fimc_v4l2_s_input(m_cam_fd2, index);
CHECK(ret);
#endif
+ m_camera_id = index;
+
setExifFixedAttribute();
- m_camera_id = index;
m_flag_init = 1;
}
return 0;
@@ -3271,13 +3272,19 @@ int SecCamera::getJpegThumbnailSize(int *width, int *height)
void SecCamera::setExifFixedAttribute()
{
+ char property[PROPERTY_VALUE_MAX];
+
//2 0th IFD TIFF Tags
//3 Maker
strcpy((char *)mExifInfo.maker, EXIF_DEF_MAKER);
//3 Model
strcpy((char *)mExifInfo.model, EXIF_DEF_MODEL);
//3 Software
- property_get("ro.build.PDA", (char *)mExifInfo.software, EXIF_DEF_SOFTWARE);
+ property_get("ro.build.id", property, EXIF_DEF_SOFTWARE);
+ strncpy((char *)mExifInfo.software, property,
+ sizeof(mExifInfo.software) - 1);
+ mExifInfo.software[sizeof(mExifInfo.software) - 1] = '\0';
+
//3 YCbCr Positioning
mExifInfo.ycbcr_positioning = EXIF_DEF_YCBCR_POSITIONING;
@@ -3296,10 +3303,12 @@ void SecCamera::setExifFixedAttribute()
//3 Maximum lens aperture
mExifInfo.max_aperture.num = mExifInfo.aperture.num;
mExifInfo.max_aperture.den = mExifInfo.aperture.den;
- //3 Flash
- mExifInfo.flash = EXIF_DEF_FLASH;
//3 Lens Focal Length
- mExifInfo.focal_length.num = 343; /* focal length of 3.43mm */
+ if (m_camera_id == CAMERA_ID_BACK)
+ mExifInfo.focal_length.num = BACK_CAMERA_FOCAL_LENGTH;
+ else
+ mExifInfo.focal_length.num = FRONT_CAMERA_FOCAL_LENGTH;
+
mExifInfo.focal_length.den = EXIF_DEF_FOCAL_LEN_DEN;
//3 User Comments
strcpy((char *)mExifInfo.user_comment, EXIF_DEF_USERCOMMENTS);
@@ -3376,12 +3385,9 @@ void SecCamera::setExifChangedAttribute()
if (iso < 0) {
LOGE("%s: error %d getting iso, camera_id = %d, using 100",
__func__, iso, m_camera_id);
- iso = 100;
+ iso = ISO_100;
}
- if (m_params->iso == ISO_AUTO) {
- mExifInfo.iso_speed_rating = iso;
- } else {
- switch(m_params->iso) {
+ switch(iso) {
case ISO_50:
mExifInfo.iso_speed_rating = 50;
break;
@@ -3401,18 +3407,17 @@ void SecCamera::setExifChangedAttribute()
mExifInfo.iso_speed_rating = 1600;
break;
default:
- mExifInfo.iso_speed_rating = iso;
+ mExifInfo.iso_speed_rating = 100;
break;
- }
}
uint32_t av, tv, bv, sv, ev;
av = APEX_FNUM_TO_APERTURE((double)mExifInfo.fnumber.num / mExifInfo.fnumber.den);
tv = APEX_EXPOSURE_TO_SHUTTER((double)mExifInfo.exposure_time.num / mExifInfo.exposure_time.den);
- sv = APEX_ISO_TO_FILMSENSITIVITY(iso);
+ sv = APEX_ISO_TO_FILMSENSITIVITY(mExifInfo.iso_speed_rating);
bv = av + tv - sv;
ev = av + tv;
- LOGD("Shutter speed=%d us, iso=%d\n", shutterSpeed, iso);
+ LOGD("Shutter speed=%d us, iso=%d\n", shutterSpeed, mExifInfo.iso_speed_rating);
LOGD("AV=%d, TV=%d, SV=%d\n", av, tv, sv);
//3 Shutter Speed
@@ -3444,6 +3449,14 @@ void SecCamera::setExifChangedAttribute()
mExifInfo.metering_mode = EXIF_METERING_AVERAGE;
break;
}
+
+ //3 Flash
+ int flash = fimc_v4l2_g_ctrl(m_cam_fd, V4L2_CID_CAMERA_GET_FLASH_ONOFF);
+ if (flash < 0)
+ mExifInfo.flash = EXIF_DEF_FLASH;
+ else
+ mExifInfo.flash = flash;
+
//3 White Balance
if (m_params->white_balance == WHITE_BALANCE_AUTO)
mExifInfo.white_balance = EXIF_WB_AUTO;