Camera2: Minor bugfixes and cleanup
- Use CameraParameter-defined enum strings instead of writing our own
- Remember last window binder sent properly
Bug: 6243944
Change-Id: I68b1d042becaa6ebb4776fd2865dc0a29db7b87e
diff --git a/services/camera/libcameraservice/Camera2Client.cpp b/services/camera/libcameraservice/Camera2Client.cpp
index 5a320a9..1cea906 100644
--- a/services/camera/libcameraservice/Camera2Client.cpp
+++ b/services/camera/libcameraservice/Camera2Client.cpp
@@ -365,6 +365,8 @@
return res;
}
+ mPreviewSurface = binder;
+
if (mState == WAITING_FOR_PREVIEW_WINDOW) {
return startPreview();
}
@@ -417,7 +419,8 @@
res = mDevice->setStreamingRequest(mPreviewRequest);
if (res != OK) {
- ALOGE("%s: Camera %d: Unable to set preview request to start preview: %s (%d)",
+ ALOGE("%s: Camera %d: Unable to set preview request to start preview: "
+ "%s (%d)",
__FUNCTION__, mCameraId, strerror(-res), res);
mState = STOPPED;
return res;
@@ -1122,19 +1125,24 @@
addComma = true;
switch (availableFormats.data.i32[i]) {
case HAL_PIXEL_FORMAT_YCbCr_422_SP:
- supportedPreviewFormats += "yuv422sp";
+ supportedPreviewFormats +=
+ CameraParameters::PIXEL_FORMAT_YUV422SP;
break;
case HAL_PIXEL_FORMAT_YCrCb_420_SP:
- supportedPreviewFormats += "yuv420sp";
+ supportedPreviewFormats +=
+ CameraParameters::PIXEL_FORMAT_YUV420SP;
break;
case HAL_PIXEL_FORMAT_YCbCr_422_I:
- supportedPreviewFormats += "yuv422i-yuyv";
+ supportedPreviewFormats +=
+ CameraParameters::PIXEL_FORMAT_YUV422I;
break;
case HAL_PIXEL_FORMAT_YV12:
- supportedPreviewFormats += "yuv420p";
+ supportedPreviewFormats +=
+ CameraParameters::PIXEL_FORMAT_YUV420P;
break;
case HAL_PIXEL_FORMAT_RGB_565:
- supportedPreviewFormats += "rgb565";
+ supportedPreviewFormats +=
+ CameraParameters::PIXEL_FORMAT_RGB565;
break;
// Not advertizing JPEG, RAW_SENSOR, etc, for preview formats
case HAL_PIXEL_FORMAT_RAW_SENSOR:
@@ -1248,28 +1256,36 @@
addComma = true;
switch (availableWhiteBalanceModes.data.u8[i]) {
case ANDROID_CONTROL_AWB_AUTO:
- supportedWhiteBalance += "auto";
+ supportedWhiteBalance +=
+ CameraParameters::WHITE_BALANCE_AUTO;
break;
case ANDROID_CONTROL_AWB_INCANDESCENT:
- supportedWhiteBalance += "incandescent";
+ supportedWhiteBalance +=
+ CameraParameters::WHITE_BALANCE_INCANDESCENT;
break;
case ANDROID_CONTROL_AWB_FLUORESCENT:
- supportedWhiteBalance += "fluorescent";
+ supportedWhiteBalance +=
+ CameraParameters::WHITE_BALANCE_FLUORESCENT;
break;
case ANDROID_CONTROL_AWB_WARM_FLUORESCENT:
- supportedWhiteBalance += "warm-fluorescent";
+ supportedWhiteBalance +=
+ CameraParameters::WHITE_BALANCE_WARM_FLUORESCENT;
break;
case ANDROID_CONTROL_AWB_DAYLIGHT:
- supportedWhiteBalance += "daylight";
+ supportedWhiteBalance +=
+ CameraParameters::WHITE_BALANCE_DAYLIGHT;
break;
case ANDROID_CONTROL_AWB_CLOUDY_DAYLIGHT:
- supportedWhiteBalance += "cloudy-daylight";
+ supportedWhiteBalance +=
+ CameraParameters::WHITE_BALANCE_CLOUDY_DAYLIGHT;
break;
case ANDROID_CONTROL_AWB_TWILIGHT:
- supportedWhiteBalance += "twilight";
+ supportedWhiteBalance +=
+ CameraParameters::WHITE_BALANCE_TWILIGHT;
break;
case ANDROID_CONTROL_AWB_SHADE:
- supportedWhiteBalance += "shade";
+ supportedWhiteBalance +=
+ CameraParameters::WHITE_BALANCE_SHADE;
break;
// Skipping values not mappable to v1 API
case ANDROID_CONTROL_AWB_OFF:
@@ -1302,30 +1318,40 @@
addComma = true;
switch (availableEffects.data.u8[i]) {
case ANDROID_CONTROL_EFFECT_OFF:
- supportedEffects += "none";
+ supportedEffects +=
+ CameraParameters::EFFECT_NONE;
break;
case ANDROID_CONTROL_EFFECT_MONO:
- supportedEffects += "mono";
+ supportedEffects +=
+ CameraParameters::EFFECT_MONO;
+ break;
case ANDROID_CONTROL_EFFECT_NEGATIVE:
- supportedEffects += "negative";
+ supportedEffects +=
+ CameraParameters::EFFECT_NEGATIVE;
break;
case ANDROID_CONTROL_EFFECT_SOLARIZE:
- supportedEffects += "solarize";
+ supportedEffects +=
+ CameraParameters::EFFECT_SOLARIZE;
break;
case ANDROID_CONTROL_EFFECT_SEPIA:
- supportedEffects += "sepia";
+ supportedEffects +=
+ CameraParameters::EFFECT_SEPIA;
break;
case ANDROID_CONTROL_EFFECT_POSTERIZE:
- supportedEffects += "posterize";
+ supportedEffects +=
+ CameraParameters::EFFECT_POSTERIZE;
break;
case ANDROID_CONTROL_EFFECT_WHITEBOARD:
- supportedEffects += "whiteboard";
+ supportedEffects +=
+ CameraParameters::EFFECT_WHITEBOARD;
break;
case ANDROID_CONTROL_EFFECT_BLACKBOARD:
- supportedEffects += "blackboard";
+ supportedEffects +=
+ CameraParameters::EFFECT_BLACKBOARD;
break;
case ANDROID_CONTROL_EFFECT_AQUA:
- supportedEffects += "aqua";
+ supportedEffects +=
+ CameraParameters::EFFECT_AQUA;
break;
default:
ALOGW("%s: Camera %d: Unknown effect value: %d",
@@ -1352,16 +1378,20 @@
addComma = true;
switch (availableAntibandingModes.data.u8[i]) {
case ANDROID_CONTROL_AE_ANTIBANDING_OFF:
- supportedAntibanding += "off";
+ supportedAntibanding +=
+ CameraParameters::ANTIBANDING_OFF;
break;
case ANDROID_CONTROL_AE_ANTIBANDING_50HZ:
- supportedAntibanding += "50hz";
+ supportedAntibanding +=
+ CameraParameters::ANTIBANDING_50HZ;
break;
case ANDROID_CONTROL_AE_ANTIBANDING_60HZ:
- supportedAntibanding += "60hz";
+ supportedAntibanding +=
+ CameraParameters::ANTIBANDING_60HZ;
break;
case ANDROID_CONTROL_AE_ANTIBANDING_AUTO:
- supportedAntibanding += "auto";
+ supportedAntibanding +=
+ CameraParameters::ANTIBANDING_AUTO;
break;
default:
ALOGW("%s: Camera %d: Unknown antibanding value: %d",
@@ -1383,7 +1413,7 @@
staticInfo(ANDROID_CONTROL_AVAILABLE_SCENE_MODES);
if (!availableSceneModes.count) return NO_INIT;
{
- String8 supportedSceneModes("auto");
+ String8 supportedSceneModes(CameraParameters::SCENE_MODE_AUTO);
bool addComma = true;
bool noSceneModes = false;
for (size_t i=0; i < availableSceneModes.count; i++) {
@@ -1398,53 +1428,69 @@
addComma = false;
break;
case ANDROID_CONTROL_SCENE_MODE_ACTION:
- supportedSceneModes += "action";
+ supportedSceneModes +=
+ CameraParameters::SCENE_MODE_ACTION;
break;
case ANDROID_CONTROL_SCENE_MODE_PORTRAIT:
- supportedSceneModes += "portrait";
+ supportedSceneModes +=
+ CameraParameters::SCENE_MODE_PORTRAIT;
break;
case ANDROID_CONTROL_SCENE_MODE_LANDSCAPE:
- supportedSceneModes += "landscape";
+ supportedSceneModes +=
+ CameraParameters::SCENE_MODE_LANDSCAPE;
break;
case ANDROID_CONTROL_SCENE_MODE_NIGHT:
- supportedSceneModes += "night";
+ supportedSceneModes +=
+ CameraParameters::SCENE_MODE_NIGHT;
break;
case ANDROID_CONTROL_SCENE_MODE_NIGHT_PORTRAIT:
- supportedSceneModes += "night-portrait";
+ supportedSceneModes +=
+ CameraParameters::SCENE_MODE_NIGHT_PORTRAIT;
break;
case ANDROID_CONTROL_SCENE_MODE_THEATRE:
- supportedSceneModes += "theatre";
+ supportedSceneModes +=
+ CameraParameters::SCENE_MODE_THEATRE;
break;
case ANDROID_CONTROL_SCENE_MODE_BEACH:
- supportedSceneModes += "beach";
+ supportedSceneModes +=
+ CameraParameters::SCENE_MODE_BEACH;
break;
case ANDROID_CONTROL_SCENE_MODE_SNOW:
- supportedSceneModes += "snow";
+ supportedSceneModes +=
+ CameraParameters::SCENE_MODE_SNOW;
break;
case ANDROID_CONTROL_SCENE_MODE_SUNSET:
- supportedSceneModes += "sunset";
+ supportedSceneModes +=
+ CameraParameters::SCENE_MODE_SUNSET;
break;
case ANDROID_CONTROL_SCENE_MODE_STEADYPHOTO:
- supportedSceneModes += "steadyphoto";
+ supportedSceneModes +=
+ CameraParameters::SCENE_MODE_STEADYPHOTO;
break;
case ANDROID_CONTROL_SCENE_MODE_FIREWORKS:
- supportedSceneModes += "fireworks";
+ supportedSceneModes +=
+ CameraParameters::SCENE_MODE_FIREWORKS;
break;
case ANDROID_CONTROL_SCENE_MODE_SPORTS:
- supportedSceneModes += "sports";
+ supportedSceneModes +=
+ CameraParameters::SCENE_MODE_SPORTS;
break;
case ANDROID_CONTROL_SCENE_MODE_PARTY:
- supportedSceneModes += "party";
+ supportedSceneModes +=
+ CameraParameters::SCENE_MODE_PARTY;
break;
case ANDROID_CONTROL_SCENE_MODE_CANDLELIGHT:
- supportedSceneModes += "candlelight";
+ supportedSceneModes +=
+ CameraParameters::SCENE_MODE_CANDLELIGHT;
break;
case ANDROID_CONTROL_SCENE_MODE_BARCODE:
- supportedSceneModes += "barcode";
+ supportedSceneModes +=
+ CameraParameters::SCENE_MODE_BARCODE;
break;
default:
ALOGW("%s: Camera %d: Unknown scene mode value: %d",
- __FUNCTION__, mCameraId, availableSceneModes.data.u8[i]);
+ __FUNCTION__, mCameraId,
+ availableSceneModes.data.u8[i]);
addComma = false;
break;
}
@@ -1514,26 +1560,32 @@
supportedFocusModes = supportedFocusModes + "," +
CameraParameters::FOCUS_MODE_INFINITY;
bool addComma = true;
+
for (size_t i=0; i < availableAfModes.count; i++) {
if (addComma) supportedFocusModes += ",";
addComma = true;
switch (availableAfModes.data.u8[i]) {
case ANDROID_CONTROL_AF_AUTO:
- supportedFocusModes += "auto";
+ supportedFocusModes +=
+ CameraParameters::FOCUS_MODE_AUTO;
break;
case ANDROID_CONTROL_AF_MACRO:
- supportedFocusModes += "macro";
+ supportedFocusModes +=
+ CameraParameters::FOCUS_MODE_MACRO;
break;
case ANDROID_CONTROL_AF_CONTINUOUS_VIDEO:
- supportedFocusModes += "continuous-video";
+ supportedFocusModes +=
+ CameraParameters::FOCUS_MODE_CONTINUOUS_VIDEO;
break;
case ANDROID_CONTROL_AF_CONTINUOUS_PICTURE:
- supportedFocusModes += "continuous-picture";
+ supportedFocusModes +=
+ CameraParameters::FOCUS_MODE_CONTINUOUS_PICTURE;
break;
case ANDROID_CONTROL_AF_EDOF:
- supportedFocusModes += "edof";
+ supportedFocusModes +=
+ CameraParameters::FOCUS_MODE_EDOF;
break;
- // Not supported in v1 API
+ // Not supported in old API
case ANDROID_CONTROL_AF_OFF:
addComma = false;
break;