diff options
author | Emilian Peev <epeev@mm-sol.com> | 2012-06-07 17:27:18 +0300 |
---|---|---|
committer | Daniel Levin <dendy@ti.com> | 2012-07-25 08:56:43 -0500 |
commit | c4b947c5581d346dc469a7a465f645fd50cebff0 (patch) | |
tree | 8f1ed312db3141b198140527c59226eaef5dc2ac /camera/CameraParameters.cpp | |
parent | e0c66b5eac95cf3acbc968833a69b6be76a0da66 (diff) | |
download | hardware_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.cpp | 83 |
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; } |