summaryrefslogtreecommitdiffstats
path: root/camera
diff options
context:
space:
mode:
authorIgor Murashkin <iam@google.com>2014-03-18 18:15:23 -0700
committerIgor Murashkin <iam@google.com>2014-03-20 00:21:25 +0000
commit9078a1b3b9f9c0c48046ade0e8e18b0d79a659db (patch)
treeb621ec3b2db6b4dcb12df7d201eb474a09183386 /camera
parentb4a7a2df4c28c3f32b5d877b54831d2cc5d78f81 (diff)
downloadframeworks_av-9078a1b3b9f9c0c48046ade0e8e18b0d79a659db.zip
frameworks_av-9078a1b3b9f9c0c48046ade0e8e18b0d79a659db.tar.gz
frameworks_av-9078a1b3b9f9c0c48046ade0e8e18b0d79a659db.tar.bz2
camera: Fix setParameters for Preview FPS single/range values
Bug: 12609188 Change-Id: I82ea6f5de2183dd046d4bf5683600c97f37ab4db
Diffstat (limited to 'camera')
-rw-r--r--camera/CameraParameters.cpp53
1 files changed, 48 insertions, 5 deletions
diff --git a/camera/CameraParameters.cpp b/camera/CameraParameters.cpp
index af091f4..99e5df4 100644
--- a/camera/CameraParameters.cpp
+++ b/camera/CameraParameters.cpp
@@ -16,6 +16,7 @@
*/
#define LOG_TAG "CameraParams"
+// #define LOG_NDEBUG 0
#include <utils/Log.h>
#include <string.h>
@@ -198,6 +199,8 @@ String8 CameraParameters::flatten() const
flattened += ";";
}
+ ALOGV("%s: Flattened params = %s", __FUNCTION__, flattened.string());
+
return flattened;
}
@@ -247,7 +250,9 @@ void CameraParameters::set(const char *key, const char *value)
return;
}
- mMap.replaceValueFor(String8(key), String8(value));
+ // Replacing a value updates the key's order to be the new largest order
+ ssize_t res = mMap.replaceValueFor(String8(key), String8(value));
+ LOG_ALWAYS_FATAL_IF(res < 0, "replaceValueFor(%s,%s) failed", key, value);
}
void CameraParameters::set(const char *key, int value)
@@ -266,10 +271,12 @@ void CameraParameters::setFloat(const char *key, float value)
const char *CameraParameters::get(const char *key) const
{
- String8 v = mMap.valueFor(String8(key));
- if (v.length() == 0)
- return 0;
- return v.string();
+ ssize_t idx = mMap.indexOfKey(String8(key));
+ if (idx < 0) {
+ return NULL;
+ } else {
+ return mMap.valueAt(idx).string();
+ }
}
int CameraParameters::getInt(const char *key) const
@@ -287,6 +294,36 @@ float CameraParameters::getFloat(const char *key) const
return strtof(v, 0);
}
+status_t CameraParameters::compareSetOrder(const char *key1, const char *key2,
+ int *order) const {
+ if (key1 == NULL) {
+ ALOGE("%s: key1 must not be NULL", __FUNCTION__);
+ return BAD_VALUE;
+ } else if (key2 == NULL) {
+ ALOGE("%s: key2 must not be NULL", __FUNCTION__);
+ return BAD_VALUE;
+ } else if (order == NULL) {
+ ALOGE("%s: order must not be NULL", __FUNCTION__);
+ return BAD_VALUE;
+ }
+
+ ssize_t index1 = mMap.indexOfKey(String8(key1));
+ ssize_t index2 = mMap.indexOfKey(String8(key2));
+ if (index1 < 0) {
+ ALOGW("%s: Key1 (%s) was not set", __FUNCTION__, key1);
+ return NAME_NOT_FOUND;
+ } else if (index2 < 0) {
+ ALOGW("%s: Key2 (%s) was not set", __FUNCTION__, key2);
+ return NAME_NOT_FOUND;
+ }
+
+ *order = (index1 == index2) ? 0 :
+ (index1 < index2) ? -1 :
+ 1;
+
+ return OK;
+}
+
void CameraParameters::remove(const char *key)
{
mMap.removeItem(String8(key));
@@ -412,6 +449,12 @@ void CameraParameters::getPreviewFpsRange(int *min_fps, int *max_fps) const
parse_pair(p, min_fps, max_fps, ',');
}
+void CameraParameters::setPreviewFpsRange(int min_fps, int max_fps)
+{
+ String8 str = String8::format("%d,%d", min_fps, max_fps);
+ set(KEY_PREVIEW_FPS_RANGE, str.string());
+}
+
void CameraParameters::setPreviewFormat(const char *format)
{
set(KEY_PREVIEW_FORMAT, format);