Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9ba1ed6a authored by Wu-cheng Li's avatar Wu-cheng Li Committed by Android Git Automerger
Browse files

am ccb91596: Merge "Adding getSupportedPictureSizes to CameraParameters.DO NOT...

am ccb91596: Merge "Adding getSupportedPictureSizes to CameraParameters.DO NOT MERGE" into gingerbread

Merge commit 'ccb91596' into gingerbread-plus-aosp

* commit 'ccb91596':
  Adding getSupportedPictureSizes to CameraParameters.DO NOT MERGE
parents b29ebd39 ccb91596
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -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;

+31 −2
Original line number Diff line number Diff line
@@ -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;