Merge "Add support for setting camera display orientation."
This commit is contained in:
commit
556a6fed12
@ -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;
|
||||
|
@ -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
|
||||
|
||||
|
@ -29,12 +29,6 @@ public:
|
||||
CameraParameters(const String8 ¶ms) { unflatten(params); }
|
||||
~CameraParameters();
|
||||
|
||||
enum {
|
||||
CAMERA_ORIENTATION_UNKNOWN = 0,
|
||||
CAMERA_ORIENTATION_PORTRAIT = 1,
|
||||
CAMERA_ORIENTATION_LANDSCAPE = 2,
|
||||
};
|
||||
|
||||
String8 flatten() const;
|
||||
void unflatten(const String8 ¶ms);
|
||||
|
||||
@ -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;
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user