summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWu-cheng Li <wuchengli@google.com>2010-08-19 11:08:36 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-08-19 11:08:36 -0700
commit3ac620a0ab90dd5e4a8bcd93ab596c848f29bbbf (patch)
treeaf1178fe966bf2655cc82f5b5045cd801af8c9d9
parentc0f7ec8134eca61752d23c10596dd211745642d9 (diff)
parent34c91a321c297c1a7518ec4f10ae5993904034dd (diff)
downloadframeworks_av-3ac620a0ab90dd5e4a8bcd93ab596c848f29bbbf.zip
frameworks_av-3ac620a0ab90dd5e4a8bcd93ab596c848f29bbbf.tar.gz
frameworks_av-3ac620a0ab90dd5e4a8bcd93ab596c848f29bbbf.tar.bz2
Merge "Adding getSupportedPictureSizes to CameraParameters.DO NOT MERGE" into gingerbread
-rw-r--r--camera/CameraParameters.cpp33
-rw-r--r--include/camera/CameraParameters.h16
2 files changed, 47 insertions, 2 deletions
diff --git a/camera/CameraParameters.cpp b/camera/CameraParameters.cpp
index 1415493..1cf19a0 100644
--- a/camera/CameraParameters.cpp
+++ b/camera/CameraParameters.cpp
@@ -269,7 +269,7 @@ void CameraParameters::remove(const char *key)
mMap.removeItem(String8(key));
}
-static int parse_size(const char *str, int &width, int &height)
+static int parse_size(const char *str, int &width, int &height, char **endptr = NULL)
{
// Find the width.
char *end;
@@ -279,11 +279,15 @@ static int parse_size(const char *str, int &width, int &height)
return -1;
// Find the height, immediately after the 'x'.
- int h = (int)strtol(end+1, 0, 10);
+ int h = (int)strtol(end+1, &end, 10);
width = w;
height = h;
+ if (endptr) {
+ *endptr = end;
+ }
+
return 0;
}
@@ -338,6 +342,31 @@ void CameraParameters::setPictureSize(int width, int height)
set(KEY_PICTURE_SIZE, str);
}
+void CameraParameters::getSupportedPictureSizes(Vector<Size> &sizes) const
+{
+ const char *pictureSizesStr = get(KEY_SUPPORTED_PICTURE_SIZES);
+ if (pictureSizesStr == 0) {
+ return;
+ }
+
+ char *sizeStartPtr = (char *)pictureSizesStr;
+
+ while (true) {
+ int width, height;
+ int success = parse_size(sizeStartPtr, width, height, &sizeStartPtr);
+ if (success == -1 || (*sizeStartPtr != ',' && *sizeStartPtr != '\0')) {
+ LOGE("Picture sizes string \"%s\" contains invalid character.", pictureSizesStr);
+ return;
+ }
+ sizes.push(Size(width, height));
+
+ if (*sizeStartPtr == '\0') {
+ return;
+ }
+ sizeStartPtr++;
+ }
+}
+
void CameraParameters::getPictureSize(int *width, int *height) const
{
*width = -1;
diff --git a/include/camera/CameraParameters.h b/include/camera/CameraParameters.h
index 99a3115..013452f 100644
--- a/include/camera/CameraParameters.h
+++ b/include/camera/CameraParameters.h
@@ -22,6 +22,21 @@
namespace android {
+struct Size {
+ int width;
+ int height;
+
+ Size() {
+ width = 0;
+ height = 0;
+ }
+
+ Size(int w, int h) {
+ width = w;
+ height = h;
+ }
+};
+
class CameraParameters
{
public:
@@ -49,6 +64,7 @@ public:
const char *getPreviewFormat() const;
void setPictureSize(int width, int height);
void getPictureSize(int *width, int *height) const;
+ void getSupportedPictureSizes(Vector<Size> &sizes) const;
void setPictureFormat(const char *format);
const char *getPictureFormat() const;