aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Bestas <mikeioannina@gmail.com>2014-08-26 03:25:53 +0300
committerMichael Bestas <mikeioannina@gmail.com>2014-09-10 21:13:30 +0000
commit5482281efae1e37c592b9b940129f62b17e44b51 (patch)
treee87e9c0d3aab02016ee587437a70141c89404751
parent268b34d7b11da1d1c8d7ca7c808f41ce51c0ff45 (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.cpp38
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();