summaryrefslogtreecommitdiffstats
path: root/camera/CameraParameters.cpp
diff options
context:
space:
mode:
authorEmilian Peev <epeev@mm-sol.com>2012-06-07 17:27:18 +0300
committerDaniel Levin <dendy@ti.com>2012-07-25 08:56:43 -0500
commitc4b947c5581d346dc469a7a465f645fd50cebff0 (patch)
tree8f1ed312db3141b198140527c59226eaef5dc2ac /camera/CameraParameters.cpp
parente0c66b5eac95cf3acbc968833a69b6be76a0da66 (diff)
downloadhardware_ti_omap4-c4b947c5581d346dc469a7a465f645fd50cebff0.tar.gz
hardware_ti_omap4-c4b947c5581d346dc469a7a465f645fd50cebff0.tar.bz2
hardware_ti_omap4-c4b947c5581d346dc469a7a465f645fd50cebff0.zip
CameraHal: Queries picture sizes dynamically
- Currently the picture sizes are static and will not change with the capture mode. For some use-cases this is not sufficient. To overcome this the Properties class is extended to support an operating mode, which will switch the supported properties depending on the current setting. Additionally the Ducati capabilities are queried not only for one capture mode alone but for all use-cases in 2D and 3D. As a result once the camera client switches the capture mode, the supported picture sizes will change inside CameraParameters retrieved through a subsequent "getParameters()" call. Related UI patch: http://review.omapzoom.org/#/c/21685 Signed-off-by: Emilian Peev <epeev@mm-sol.com> Signed-off-by: Daniel Levin <dendy@ti.com> Change-Id: Ib9f02ede94ff76feb86b3422dc453dfd8782ee43
Diffstat (limited to 'camera/CameraParameters.cpp')
-rw-r--r--camera/CameraParameters.cpp83
1 files changed, 47 insertions, 36 deletions
diff --git a/camera/CameraParameters.cpp b/camera/CameraParameters.cpp
index 7d5952e..f9a444b 100644
--- a/camera/CameraParameters.cpp
+++ b/camera/CameraParameters.cpp
@@ -163,64 +163,75 @@ int CameraProperties::getProperties(int cameraIndex, CameraProperties::Propertie
return 0;
}
-ssize_t CameraProperties::Properties::set(const char *prop, const char *value)
-{
- if(!prop)
- return -EINVAL;
- if(!value)
- value = DEFAULT_VALUE;
+void CameraProperties::Properties::set(const char * const prop, const char * const value) {
+ CAMHAL_ASSERT(prop);
- return mProperties->replaceValueFor(String8(prop), String8(value));
+ if ( !value ) {
+ mProperties[mCurrentMode].removeItem(String8(prop));
+ } else {
+ mProperties[mCurrentMode].replaceValueFor(String8(prop), String8(value));
+ }
}
-ssize_t CameraProperties::Properties::set(const char *prop, int value)
-{
+void CameraProperties::Properties::set(const char * const prop, const int value) {
char s_val[30];
-
sprintf(s_val, "%d", value);
-
- return set(prop, s_val);
+ set(prop, s_val);
}
-const char* CameraProperties::Properties::get(const char * prop)
-{
- String8 value = mProperties->valueFor(String8(prop));
- return value.string();
+const char* CameraProperties::Properties::get(const char * prop) const {
+ return mProperties[mCurrentMode].valueFor(String8(prop)).string();
}
-int CameraProperties::Properties::getInt(const char * prop)
-{
- String8 value = mProperties->valueFor(String8(prop));
+int CameraProperties::Properties::getInt(const char * prop) const {
+ String8 value = mProperties[mCurrentMode].valueFor(String8(prop));
if (value.isEmpty()) {
return -1;
}
return strtol(value, 0, 0);
}
-void CameraProperties::Properties::dump()
-{
- for (size_t i = 0; i < mProperties->size(); i++)
- {
- CAMHAL_LOGDB("%s = %s\n",
- mProperties->keyAt(i).string(),
- mProperties->valueAt(i).string());
+void CameraProperties::Properties::setSensorIndex(int idx) {
+ OperatingMode originalMode = getMode();
+ for ( int i = 0 ; i < MODE_MAX ; i++ ) {
+ setMode(static_cast<OperatingMode>(i));
+ set(CAMERA_SENSOR_INDEX, idx);
}
+ setMode(originalMode);
}
-const char* CameraProperties::Properties::keyAt(unsigned int index)
-{
- if(index < mProperties->size())
- {
- return mProperties->keyAt(index).string();
+void CameraProperties::Properties::setMode(OperatingMode mode) {
+ CAMHAL_ASSERT(mode >= 0 && mode < MODE_MAX);
+ mCurrentMode = mode;
+}
+
+OperatingMode CameraProperties::Properties::getMode() const {
+ return mCurrentMode;
+}
+
+void CameraProperties::Properties::dump() {
+ CAMHAL_LOGD("================================");
+ CAMHAL_LOGD("Dumping properties for camera: %d", getInt("prop-sensor-index"));
+
+ for (size_t i = 0; i < mProperties[mCurrentMode].size(); i++) {
+ CAMHAL_LOGD("%s = %s",
+ mProperties[mCurrentMode].keyAt(i).string(),
+ mProperties[mCurrentMode].valueAt(i).string());
+ }
+
+ CAMHAL_LOGD("--------------------------------");
+}
+
+const char* CameraProperties::Properties::keyAt(const unsigned int index) const {
+ if (index < mProperties[mCurrentMode].size()) {
+ return mProperties[mCurrentMode].keyAt(index).string();
}
return NULL;
}
-const char* CameraProperties::Properties::valueAt(unsigned int index)
-{
- if(index < mProperties->size())
- {
- return mProperties->valueAt(index).string();
+const char* CameraProperties::Properties::valueAt(const unsigned int index) const {
+ if (index < mProperties[mCurrentMode].size()) {
+ return mProperties[mCurrentMode].valueAt(index).string();
}
return NULL;
}