diff options
| author | Michael Bestas <mikeioannina@gmail.com> | 2014-08-26 03:25:53 +0300 |
|---|---|---|
| committer | Michael Bestas <mikeioannina@gmail.com> | 2014-09-10 21:13:30 +0000 |
| commit | 5482281efae1e37c592b9b940129f62b17e44b51 (patch) | |
| tree | e87e9c0d3aab02016ee587437a70141c89404751 | |
| parent | 268b34d7b11da1d1c8d7ca7c808f41ce51c0ff45 (diff) | |
camera: Add support for exposure time
* Add supported slow shutter speeds
* Enabled only in back camera, front doesn't seem to support this
* Disable flash when slow shutter is enabled
Change-Id: I9bdcab11990a97cd67654e1e671f0383752e92d6
| -rw-r--r-- | camera/CameraWrapper.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/camera/CameraWrapper.cpp b/camera/CameraWrapper.cpp index f8c785d..c883657 100644 --- a/camera/CameraWrapper.cpp +++ b/camera/CameraWrapper.cpp @@ -94,8 +94,14 @@ static int check_vendor_module() return rv; } +static const char *KEY_EXPOSURE_TIME = "exposure-time"; +static const char *KEY_EXPOSURE_TIME_VALUES = "exposure-time-values"; + static char *camera_fixup_getparams(int id, const char *settings) { + bool videoMode = false; + const char *exposureTimeValues = "0,1,500000,1000000,2000000,4000000,8000000,16000000,32000000,64000000"; + android::CameraParameters params; params.unflatten(android::String8(settings)); @@ -104,6 +110,17 @@ static char *camera_fixup_getparams(int id, const char *settings) params.dump(); #endif + if (params.get(android::CameraParameters::KEY_RECORDING_HINT)) { + videoMode = (!strcmp(params.get(android::CameraParameters::KEY_RECORDING_HINT), "true")); + } + + /* Set supported exposure time values */ + if (!videoMode) { + if (id == 0) { + params.set(KEY_EXPOSURE_TIME_VALUES, exposureTimeValues); + } + } + #if !LOG_NDEBUG ALOGV("%s: fixed parameters:", __FUNCTION__); params.dump(); @@ -117,6 +134,9 @@ static char *camera_fixup_getparams(int id, const char *settings) static char *camera_fixup_setparams(int id, const char *settings) { + bool videoMode = false; + bool slowShutterMode = false; + android::CameraParameters params; params.unflatten(android::String8(settings)); @@ -125,6 +145,24 @@ static char *camera_fixup_setparams(int id, const char *settings) params.dump(); #endif + if (params.get(android::CameraParameters::KEY_RECORDING_HINT)) { + videoMode = (!strcmp(params.get(android::CameraParameters::KEY_RECORDING_HINT), "true")); + } + + if (params.get(KEY_EXPOSURE_TIME)) { + slowShutterMode = (strcmp(params.get(KEY_EXPOSURE_TIME), "0")); + } + + /* Disable flash if slow shutter is enabled */ + if (!videoMode) { + if (id == 0) { + if (slowShutterMode) { + params.set(android::CameraParameters::KEY_FLASH_MODE, + android::CameraParameters::FLASH_MODE_OFF); + } + } + } + #if !LOG_NDEBUG ALOGV("%s: fixed parameters:", __FUNCTION__); params.dump(); |
