summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Evlogiev <x0099089@ti.com>2011-12-02 13:54:41 +0200
committerDaniel Levin <dendy@ti.com>2012-07-25 08:55:37 -0500
commit9f5eca216a5dafd2d7fa85ffb2bc6d236fd414f1 (patch)
tree1f50b6d5e715e0a0d7066c9e0945d8efaed8f927
parent7098591b5d2f2372ecc5b29268263a732e74452e (diff)
downloadhardware_ti_omap4-9f5eca216a5dafd2d7fa85ffb2bc6d236fd414f1.zip
hardware_ti_omap4-9f5eca216a5dafd2d7fa85ffb2bc6d236fd414f1.tar.gz
hardware_ti_omap4-9f5eca216a5dafd2d7fa85ffb2bc6d236fd414f1.tar.bz2
Camera Hal: Add supported capture modes
Add supported capture modes, so the camera app can filter them from the menu Change-Id: I767a8cca6e0f9c72ed6228627bb9ce0ad3376c33 Signed-off-by: Ivan Evlogiev <x0099089@ti.com>
-rw-r--r--camera/CameraHal.cpp1
-rw-r--r--camera/CameraParameters.cpp1
-rw-r--r--camera/OMXCameraAdapter/OMXAlgo.cpp4
-rw-r--r--camera/OMXCameraAdapter/OMXCapabilities.cpp59
-rw-r--r--camera/TICameraParameters.cpp3
-rw-r--r--camera/inc/CameraProperties.h1
-rw-r--r--camera/inc/OMXCameraAdapter/OMXCameraAdapter.h3
-rw-r--r--camera/inc/TICameraParameters.h4
8 files changed, 75 insertions, 1 deletions
diff --git a/camera/CameraHal.cpp b/camera/CameraHal.cpp
index d1f4d77..ebe3e08 100644
--- a/camera/CameraHal.cpp
+++ b/camera/CameraHal.cpp
@@ -3349,6 +3349,7 @@ void CameraHal::insertSupportedParams()
p.set(CameraParameters::KEY_AUTO_WHITEBALANCE_LOCK_SUPPORTED, mCameraProperties->get(CameraProperties::AUTO_WHITEBALANCE_LOCK_SUPPORTED));
p.set(CameraParameters::KEY_VIDEO_SNAPSHOT_SUPPORTED, mCameraProperties->get(CameraProperties::VIDEO_SNAPSHOT_SUPPORTED));
p.set(TICameraParameters::KEY_MECHANICAL_MISALIGNMENT_CORRECTION_VALUES, mCameraProperties->get(CameraProperties::MECHANICAL_MISALIGNMENT_CORRECTION_VALUES));
+ p.set(TICameraParameters::KEY_CAP_MODE_VALUES, mCameraProperties->get(CameraProperties::CAP_MODE_VALUES));
LOG_FUNCTION_NAME_EXIT;
diff --git a/camera/CameraParameters.cpp b/camera/CameraParameters.cpp
index 0107852..c6805cc 100644
--- a/camera/CameraParameters.cpp
+++ b/camera/CameraParameters.cpp
@@ -119,6 +119,7 @@ const char CameraProperties::PREFERRED_PREVIEW_SIZE_FOR_VIDEO[] = "preferred-pre
const char CameraProperties::MECHANICAL_MISALIGNMENT_CORRECTION[] = "prop-mechanical-misalignment-correction";
const char CameraProperties::MECHANICAL_MISALIGNMENT_CORRECTION_VALUES[] = "prop-mechanical-misalignment-correction-values";
+const char CameraProperties::CAP_MODE_VALUES[] = "prop-mode-values";
const char CameraProperties::DEFAULT_VALUE[] = "";
diff --git a/camera/OMXCameraAdapter/OMXAlgo.cpp b/camera/OMXCameraAdapter/OMXAlgo.cpp
index f166e3a..ea5c270 100644
--- a/camera/OMXCameraAdapter/OMXAlgo.cpp
+++ b/camera/OMXCameraAdapter/OMXAlgo.cpp
@@ -46,6 +46,10 @@ status_t OMXCameraAdapter::setParametersAlgo(const CameraParameters &params,
{
capMode = OMXCameraAdapter::HIGH_SPEED;
}
+ else if (strcmp(valstr, (const char *) TICameraParameters::EXPOSURE_BRACKETING) == 0)
+ {
+ capMode = OMXCameraAdapter::HIGH_SPEED;
+ }
else if (strcmp(valstr, (const char *) TICameraParameters::HIGH_QUALITY_MODE) == 0)
{
capMode = OMXCameraAdapter::HIGH_QUALITY;
diff --git a/camera/OMXCameraAdapter/OMXCapabilities.cpp b/camera/OMXCameraAdapter/OMXCapabilities.cpp
index d5daa3d..b19f76c 100644
--- a/camera/OMXCameraAdapter/OMXCapabilities.cpp
+++ b/camera/OMXCameraAdapter/OMXCapabilities.cpp
@@ -252,6 +252,16 @@ const LUTtype OMXCameraAdapter::mMechanicalMisalignmentCorrectionLUT = {
mMechanicalMisalignmentCorrection
};
+const userToOMX_LUT OMXCameraAdapter::mBracketingModes [] = {
+ { TICameraParameters::TEMP_BRACKETING , OMX_BracketTemporal },
+ { TICameraParameters::EXPOSURE_BRACKETING , OMX_BracketExposureRelativeInEV },
+};
+
+const LUTtype OMXCameraAdapter::mBracketingModesLUT = {
+ ARRAY_SIZE(mBracketingModes),
+ mBracketingModes
+};
+
// values for supported camera facing direction
const CapU32 OMXCameraAdapter::mFacing [] = {
{ OMX_TI_SENFACING_BACK , TICameraParameters::FACING_BACK },
@@ -1276,6 +1286,51 @@ status_t OMXCameraAdapter::insertMechanicalMisalignmentCorrection(CameraProperti
return ret;
}
+status_t OMXCameraAdapter::insertCaptureModes(CameraProperties::Properties* params, OMX_TI_CAPTYPE &caps)
+{
+ status_t ret = NO_ERROR;
+ char supported[MAX_PROP_VALUE_LENGTH];
+ const char *p;
+
+ LOG_FUNCTION_NAME;
+
+ memset(supported, '\0', sizeof(supported));
+
+ // 3D mode detect: Misalignment is present only in 3d mode
+ if (caps.bMechanicalMisalignmentSupported)
+ {
+ strncat(supported, TICameraParameters::HIGH_QUALITY_MODE, REMAINING_BYTES(supported));
+ strncat(supported, PARAM_SEP, REMAINING_BYTES(supported));
+ strncat(supported, TICameraParameters::VIDEO_MODE, REMAINING_BYTES(supported));
+ }
+ else // 2D mode detect: Misalignment is present only in 3d mode
+ {
+ strncat(supported, TICameraParameters::HIGH_QUALITY_MODE, REMAINING_BYTES(supported));
+ strncat(supported, PARAM_SEP, REMAINING_BYTES(supported));
+ strncat(supported, TICameraParameters::VIDEO_MODE, REMAINING_BYTES(supported));
+ strncat(supported, PARAM_SEP, REMAINING_BYTES(supported));
+ strncat(supported, TICameraParameters::HIGH_PERFORMANCE_MODE, REMAINING_BYTES(supported));
+ strncat(supported, PARAM_SEP, REMAINING_BYTES(supported));
+ strncat(supported, TICameraParameters::HIGH_QUALITY_ZSL_MODE, REMAINING_BYTES(supported));
+ }
+
+ for ( unsigned int i = 0 ; i < caps.ulBracketingModesCount; i++ ) {
+ p = getLUTvalue_OMXtoHAL(caps.eBracketingModes[i], mBracketingModesLUT);
+ if ( NULL != p ) {
+ if (supported[0] != '\0') {
+ strncat(supported, PARAM_SEP, REMAINING_BYTES(supported));
+ }
+ strncat(supported, p, REMAINING_BYTES(supported));
+ }
+ }
+
+ params->set(CameraProperties::CAP_MODE_VALUES, supported);
+
+ LOG_FUNCTION_NAME_EXIT;
+
+ return ret;
+}
+
status_t OMXCameraAdapter::insertDefaults(CameraProperties::Properties* params, OMX_TI_CAPTYPE &caps)
{
status_t ret = NO_ERROR;
@@ -1449,6 +1504,10 @@ status_t OMXCameraAdapter::insertCapabilities(CameraProperties::Properties* para
ret = insertMechanicalMisalignmentCorrection(params, caps);
}
+ if ( NO_ERROR == ret) {
+ ret = insertCaptureModes(params, caps);
+ }
+
//NOTE: Ensure that we always call insertDefaults after inserting the supported capabilities
//as there are checks inside insertDefaults to make sure a certain default is supported
// or not
diff --git a/camera/TICameraParameters.cpp b/camera/TICameraParameters.cpp
index 600e191..c42346a 100644
--- a/camera/TICameraParameters.cpp
+++ b/camera/TICameraParameters.cpp
@@ -28,6 +28,8 @@ const char TICameraParameters::HIGH_PERFORMANCE_MODE[] = "high-performance";
const char TICameraParameters::HIGH_QUALITY_MODE[] = "high-quality";
const char TICameraParameters::HIGH_QUALITY_ZSL_MODE[] = "high-quality-zsl";
const char TICameraParameters::VIDEO_MODE[] = "video-mode";
+const char TICameraParameters::EXPOSURE_BRACKETING[] = "exposure-bracketing";
+const char TICameraParameters::TEMP_BRACKETING[] = "temporal-bracketing";
// TI extensions to standard android Parameters
const char TICameraParameters::KEY_SUPPORTED_CAMERAS[] = "camera-indexes";
@@ -36,6 +38,7 @@ const char TICameraParameters::KEY_SHUTTER_ENABLE[] = "shutter-enable";
const char TICameraParameters::KEY_CAMERA_NAME[] = "camera-name";
const char TICameraParameters::KEY_BURST[] = "burst-capture";
const char TICameraParameters::KEY_CAP_MODE[] = "mode";
+const char TICameraParameters::KEY_CAP_MODE_VALUES[] = "mode-values";
const char TICameraParameters::KEY_VNF[] = "vnf";
const char TICameraParameters::KEY_SATURATION[] = "saturation";
const char TICameraParameters::KEY_BRIGHTNESS[] = "brightness";
diff --git a/camera/inc/CameraProperties.h b/camera/inc/CameraProperties.h
index ba1058d..2d81a5b 100644
--- a/camera/inc/CameraProperties.h
+++ b/camera/inc/CameraProperties.h
@@ -149,6 +149,7 @@ public:
static const char MECHANICAL_MISALIGNMENT_CORRECTION[];
static const char MECHANICAL_MISALIGNMENT_CORRECTION_VALUES[];
+ static const char CAP_MODE_VALUES[];
CameraProperties();
~CameraProperties();
diff --git a/camera/inc/OMXCameraAdapter/OMXCameraAdapter.h b/camera/inc/OMXCameraAdapter/OMXCameraAdapter.h
index 9c2fdcd..62f480a 100644
--- a/camera/inc/OMXCameraAdapter/OMXCameraAdapter.h
+++ b/camera/inc/OMXCameraAdapter/OMXCameraAdapter.h
@@ -598,6 +598,7 @@ private:
static status_t insertLocks(CameraProperties::Properties*, OMX_TI_CAPTYPE&);
static status_t insertAreas(CameraProperties::Properties*, OMX_TI_CAPTYPE&);
static status_t insertMechanicalMisalignmentCorrection(CameraProperties::Properties*, OMX_TI_CAPTYPE&);
+ static status_t insertCaptureModes(CameraProperties::Properties*, OMX_TI_CAPTYPE&);
static status_t insertVideoSizes(CameraProperties::Properties*, OMX_TI_CAPTYPE&);
static status_t insertFacing(CameraProperties::Properties*, OMX_TI_CAPTYPE&);
static status_t insertFocalLength(CameraProperties::Properties*, OMX_TI_CAPTYPE&);
@@ -760,6 +761,8 @@ private:
static const LUTtype mAutoConvergenceLUT;
static const userToOMX_LUT mMechanicalMisalignmentCorrection[];
static const LUTtype mMechanicalMisalignmentCorrectionLUT;
+ static const userToOMX_LUT mBracketingModes[];
+ static const LUTtype mBracketingModesLUT;
// OMX Camera defaults
static const char DEFAULT_ANTIBANDING[];
diff --git a/camera/inc/TICameraParameters.h b/camera/inc/TICameraParameters.h
index a2c111e..bb3763a 100644
--- a/camera/inc/TICameraParameters.h
+++ b/camera/inc/TICameraParameters.h
@@ -36,6 +36,7 @@ static const char KEY_CAMERA_NAME[];
static const char KEY_S3D_SUPPORTED[];
static const char KEY_BURST[];
static const char KEY_CAP_MODE[];
+static const char KEY_CAP_MODE_VALUES[];
static const char KEY_VNF[];
static const char KEY_SATURATION[];
static const char KEY_BRIGHTNESS[];
@@ -151,7 +152,8 @@ static const char HIGH_PERFORMANCE_MODE[];
static const char HIGH_QUALITY_MODE[];
static const char HIGH_QUALITY_ZSL_MODE[];
static const char VIDEO_MODE[];
-
+static const char EXPOSURE_BRACKETING[];
+static const char TEMP_BRACKETING[];
// TI extensions to standard android pixel formats
static const char PIXEL_FORMAT_UNUSED[];