From 9078a1b3b9f9c0c48046ade0e8e18b0d79a659db Mon Sep 17 00:00:00 2001 From: Igor Murashkin Date: Tue, 18 Mar 2014 18:15:23 -0700 Subject: camera: Fix setParameters for Preview FPS single/range values Bug: 12609188 Change-Id: I82ea6f5de2183dd046d4bf5683600c97f37ab4db --- camera/CameraParameters.cpp | 53 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 48 insertions(+), 5 deletions(-) (limited to 'camera') 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 #include @@ -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); -- cgit v1.1