From 7f61084a428a5c7afbeff2fa9e9839baf9018020 Mon Sep 17 00:00:00 2001 From: Eino-Ville Talvala Date: Thu, 7 Jun 2012 10:20:51 -0700 Subject: [PATCH] Camera2: Add internal parameter state to dump. Bug: 6243944 Change-Id: Id02943001ef92a9c5717b295eb4af1a18669b08b --- services/camera/libcameraservice/Camera2Client.cpp | 162 +++++++++++++++++++++ services/camera/libcameraservice/Camera2Client.h | 4 +- 2 files changed, 165 insertions(+), 1 deletion(-) diff --git a/services/camera/libcameraservice/Camera2Client.cpp b/services/camera/libcameraservice/Camera2Client.cpp index f33a106ca4..6f79aefe57 100644 --- a/services/camera/libcameraservice/Camera2Client.cpp +++ b/services/camera/libcameraservice/Camera2Client.cpp @@ -104,7 +104,169 @@ status_t Camera2Client::dump(int fd, const Vector& args) { mCameraId, getCameraClient()->asBinder().get(), mClientPid); + result.append(" State: "); +#define CASE_APPEND_ENUM(x) case x: result.append(#x "\n"); break; + + switch (mState) { + CASE_APPEND_ENUM(NOT_INITIALIZED) + CASE_APPEND_ENUM(STOPPED) + CASE_APPEND_ENUM(WAITING_FOR_PREVIEW_WINDOW) + CASE_APPEND_ENUM(PREVIEW) + CASE_APPEND_ENUM(RECORD) + CASE_APPEND_ENUM(STILL_CAPTURE) + default: result.append("UNKNOWN\n"); break; + } + + result.append(" Current parameters:\n"); + result.appendFormat(" Preview size: %d x %d\n", + mParameters.previewWidth, mParameters.previewHeight); + result.appendFormat(" Preview FPS range: %d - %d\n", + mParameters.previewFpsRangeMin, mParameters.previewFpsRangeMax); + result.appendFormat(" Preview HAL pixel format: 0x%x\n", + mParameters.previewFormat); + result.appendFormat(" Picture size: %d x %d\n", + mParameters.pictureWidth, mParameters.pictureHeight); + result.appendFormat(" Jpeg thumbnail size: %d x %d\n", + mParameters.jpegThumbWidth, mParameters.jpegThumbHeight); + result.appendFormat(" Jpeg quality: %d, thumbnail quality: %d\n", + mParameters.jpegQuality, mParameters.jpegThumbQuality); + result.appendFormat(" Jpeg rotation: %d\n", mParameters.jpegRotation); + result.appendFormat(" GPS tags %s\n", + mParameters.gpsEnabled ? "enabled" : "disabled"); + if (mParameters.gpsEnabled) { + result.appendFormat(" GPS lat x long x alt: %f x %f x %f\n", + mParameters.gpsLatitude, mParameters.gpsLongitude, + mParameters.gpsAltitude); + result.appendFormat(" GPS timestamp: %lld\n", + mParameters.gpsTimestamp); + result.appendFormat(" GPS processing method: %s\n", + mParameters.gpsProcessingMethod.string()); + } + + result.append(" White balance mode: "); + switch (mParameters.wbMode) { + CASE_APPEND_ENUM(ANDROID_CONTROL_AWB_AUTO) + CASE_APPEND_ENUM(ANDROID_CONTROL_AWB_INCANDESCENT) + CASE_APPEND_ENUM(ANDROID_CONTROL_AWB_FLUORESCENT) + CASE_APPEND_ENUM(ANDROID_CONTROL_AWB_WARM_FLUORESCENT) + CASE_APPEND_ENUM(ANDROID_CONTROL_AWB_DAYLIGHT) + CASE_APPEND_ENUM(ANDROID_CONTROL_AWB_CLOUDY_DAYLIGHT) + CASE_APPEND_ENUM(ANDROID_CONTROL_AWB_TWILIGHT) + CASE_APPEND_ENUM(ANDROID_CONTROL_AWB_SHADE) + default: result.append("UNKNOWN\n"); + } + + result.append(" Effect mode: "); + switch (mParameters.effectMode) { + CASE_APPEND_ENUM(ANDROID_CONTROL_EFFECT_OFF) + CASE_APPEND_ENUM(ANDROID_CONTROL_EFFECT_MONO) + CASE_APPEND_ENUM(ANDROID_CONTROL_EFFECT_NEGATIVE) + CASE_APPEND_ENUM(ANDROID_CONTROL_EFFECT_SOLARIZE) + CASE_APPEND_ENUM(ANDROID_CONTROL_EFFECT_SEPIA) + CASE_APPEND_ENUM(ANDROID_CONTROL_EFFECT_POSTERIZE) + CASE_APPEND_ENUM(ANDROID_CONTROL_EFFECT_WHITEBOARD) + CASE_APPEND_ENUM(ANDROID_CONTROL_EFFECT_BLACKBOARD) + CASE_APPEND_ENUM(ANDROID_CONTROL_EFFECT_AQUA) + default: result.append("UNKNOWN\n"); + } + + result.append(" Antibanding mode: "); + switch (mParameters.antibandingMode) { + CASE_APPEND_ENUM(ANDROID_CONTROL_AE_ANTIBANDING_AUTO) + CASE_APPEND_ENUM(ANDROID_CONTROL_AE_ANTIBANDING_OFF) + CASE_APPEND_ENUM(ANDROID_CONTROL_AE_ANTIBANDING_50HZ) + CASE_APPEND_ENUM(ANDROID_CONTROL_AE_ANTIBANDING_60HZ) + default: result.append("UNKNOWN\n"); + } + + result.append(" Scene mode: "); + switch (mParameters.sceneMode) { + case ANDROID_CONTROL_SCENE_MODE_UNSUPPORTED: + result.append("AUTO\n"); break; + CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_ACTION) + CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_PORTRAIT) + CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_LANDSCAPE) + CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_NIGHT) + CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_NIGHT_PORTRAIT) + CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_THEATRE) + CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_BEACH) + CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_SNOW) + CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_SUNSET) + CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_STEADYPHOTO) + CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_FIREWORKS) + CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_SPORTS) + CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_PARTY) + CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_CANDLELIGHT) + CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_BARCODE) + default: result.append("UNKNOWN\n"); + } + + result.append(" Flash mode: "); + switch (mParameters.flashMode) { + CASE_APPEND_ENUM(Parameters::FLASH_MODE_OFF) + CASE_APPEND_ENUM(Parameters::FLASH_MODE_AUTO) + CASE_APPEND_ENUM(Parameters::FLASH_MODE_ON) + CASE_APPEND_ENUM(Parameters::FLASH_MODE_TORCH) + CASE_APPEND_ENUM(Parameters::FLASH_MODE_RED_EYE) + CASE_APPEND_ENUM(Parameters::FLASH_MODE_INVALID) + default: result.append("UNKNOWN\n"); + } + + result.append(" Focus mode: "); + switch (mParameters.focusMode) { + CASE_APPEND_ENUM(Parameters::FOCUS_MODE_AUTO) + CASE_APPEND_ENUM(Parameters::FOCUS_MODE_MACRO) + CASE_APPEND_ENUM(Parameters::FOCUS_MODE_CONTINUOUS_VIDEO) + CASE_APPEND_ENUM(Parameters::FOCUS_MODE_CONTINUOUS_PICTURE) + CASE_APPEND_ENUM(Parameters::FOCUS_MODE_EDOF) + CASE_APPEND_ENUM(Parameters::FOCUS_MODE_INFINITY) + CASE_APPEND_ENUM(Parameters::FOCUS_MODE_FIXED) + CASE_APPEND_ENUM(Parameters::FOCUS_MODE_INVALID) + default: result.append("UNKNOWN\n"); + } + + result.append(" Focusing areas:\n"); + for (size_t i = 0; i < mParameters.focusingAreas.size(); i++) { + result.appendFormat(" [ (%d, %d, %d, %d), weight %d ]\n", + mParameters.focusingAreas[i].left, + mParameters.focusingAreas[i].top, + mParameters.focusingAreas[i].right, + mParameters.focusingAreas[i].bottom, + mParameters.focusingAreas[i].weight); + } + + result.appendFormat(" Exposure compensation index: %d\n", + mParameters.exposureCompensation); + + result.appendFormat(" AE lock %s, AWB lock %s\n", + mParameters.autoExposureLock ? "enabled" : "disabled", + mParameters.autoWhiteBalanceLock ? "enabled" : "disabled" ); + + result.appendFormat(" Metering areas:\n"); + for (size_t i = 0; i < mParameters.meteringAreas.size(); i++) { + result.appendFormat(" [ (%d, %d, %d, %d), weight %d ]\n", + mParameters.meteringAreas[i].left, + mParameters.meteringAreas[i].top, + mParameters.meteringAreas[i].right, + mParameters.meteringAreas[i].bottom, + mParameters.meteringAreas[i].weight); + } + + result.appendFormat(" Zoom index: %d\n", mParameters.zoom); + result.appendFormat(" Video size: %d x %d\n", mParameters.videoWidth, + mParameters.videoHeight); + + result.appendFormat(" Recording hint is %s\n", + mParameters.recordingHint ? "set" : "not set"); + + result.appendFormat(" Video stabilization is %s\n", + mParameters.videoStabilization ? "enabled" : "disabled"); + write(fd, result.string(), result.size()); + + // TODO: Dump Camera2Device + +#undef CASE_APPEND_ENUM return NO_ERROR; } diff --git a/services/camera/libcameraservice/Camera2Client.h b/services/camera/libcameraservice/Camera2Client.h index e457bec390..2476f35271 100644 --- a/services/camera/libcameraservice/Camera2Client.h +++ b/services/camera/libcameraservice/Camera2Client.h @@ -71,7 +71,9 @@ private: NOT_INITIALIZED, STOPPED, WAITING_FOR_PREVIEW_WINDOW, - PREVIEW + PREVIEW, + RECORD, + STILL_CAPTURE } mState; /** ICamera interface-related private members */ -- 2.11.0