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

Commit f091e833 authored by Chih-Chung Chang's avatar Chih-Chung Chang
Browse files

Add support for setting camera display orientation.

parent fafd2adb
Loading
Loading
Loading
Loading
+24 −8
Original line number Diff line number Diff line
@@ -1191,14 +1191,6 @@ status_t CameraService::Client::setParameters(const String8& params)

    CameraParameters p(params);

    // The orientation parameter is actually for CameraService, not for the camera driver.
    if (p.getOrientation() == CameraParameters::CAMERA_ORIENTATION_PORTRAIT) {
        LOGV("portrait mode");
        mOrientation = ISurface::BufferHeap::ROT_90;
    } else {
        mOrientation = 0;
    }

    return mHardware->setParameters(p);
}

@@ -1224,6 +1216,30 @@ status_t CameraService::Client::sendCommand(int32_t cmd, int32_t arg1, int32_t a
    status_t result = checkPid();
    if (result != NO_ERROR) return result;

    if (cmd == CAMERA_CMD_SET_DISPLAY_ORIENTATION) {
        // The orientation cannot be set during preview.
        if (mHardware->previewEnabled()) {
            return INVALID_OPERATION;
        }
        switch (arg1) {
            case 0:
                mOrientation = ISurface::BufferHeap::ROT_0;
                break;
            case 90:
                mOrientation = ISurface::BufferHeap::ROT_90;
                break;
            case 180:
                mOrientation = ISurface::BufferHeap::ROT_180;
                break;
            case 270:
                mOrientation = ISurface::BufferHeap::ROT_270;
                break;
            default:
                return BAD_VALUE;
        }
        return OK;
    }

    if (mHardware == 0) {
        LOGE("mHardware is NULL, returning.");
        return INVALID_OPERATION;
+1 −1
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ enum {
enum {
    CAMERA_CMD_START_SMOOTH_ZOOM     = 1,
    CAMERA_CMD_STOP_SMOOTH_ZOOM      = 2,
    CAMERA_CMD_SET_DISPLAY_ORIENTATION = 3,
};

// camera fatal errors
@@ -209,4 +210,3 @@ private:
}; // namespace android

#endif
+0 −9
Original line number Diff line number Diff line
@@ -29,12 +29,6 @@ public:
    CameraParameters(const String8 &params) { unflatten(params); }
    ~CameraParameters();

    enum {
        CAMERA_ORIENTATION_UNKNOWN = 0,
        CAMERA_ORIENTATION_PORTRAIT = 1,
        CAMERA_ORIENTATION_LANDSCAPE = 2,
    };

    String8 flatten() const;
    void unflatten(const String8 &params);

@@ -63,9 +57,6 @@ public:
    void setPictureFormat(const char *format);
    const char *getPictureFormat() const;

    int getOrientation() const;
    void setOrientation(int orientation);

    void dump() const;
    status_t dump(int fd, const Vector<String16>& args) const;

+0 −20
Original line number Diff line number Diff line
@@ -121,9 +121,6 @@ const char CameraParameters::FOCUS_MODE_INFINITY[] = "infinity";
const char CameraParameters::FOCUS_MODE_MACRO[] = "macro";
const char CameraParameters::FOCUS_MODE_FIXED[] = "fixed";

static const char* portrait = "portrait";
static const char* landscape = "landscape";

CameraParameters::CameraParameters()
                : mMap()
{
@@ -282,23 +279,6 @@ void CameraParameters::setPreviewFormat(const char *format)
    set(KEY_PREVIEW_FORMAT, format);
}

int CameraParameters::getOrientation() const
{
    const char* orientation = get("orientation");
    if (orientation && !strcmp(orientation, portrait))
        return CAMERA_ORIENTATION_PORTRAIT;
    return CAMERA_ORIENTATION_LANDSCAPE;
}

void CameraParameters::setOrientation(int orientation)
{
    if (orientation == CAMERA_ORIENTATION_PORTRAIT) {
        set("orientation", portrait);
    } else {
        set("orientation", landscape);
    }
}

const char *CameraParameters::getPreviewFormat() const
{
    return get(KEY_PREVIEW_FORMAT);