diff --git a/camera/CameraWrapper.cpp b/camera/CameraWrapper.cpp index bdf5c3a..86fc8f6 100644 --- a/camera/CameraWrapper.cpp +++ b/camera/CameraWrapper.cpp @@ -33,6 +33,8 @@ #include #include +static char KEY_QC_MORPHO_HDR[] = "morpho-hdr"; + static android::Mutex gCameraWrapperLock; static camera_module_t *gVendorModule = 0; @@ -54,7 +56,7 @@ camera_module_t HAL_MODULE_INFO_SYM = { .hal_api_version = HARDWARE_HAL_API_VERSION, .id = CAMERA_HARDWARE_MODULE_ID, .name = "Cancro Camera Wrapper", - .author = "The Android Open Source Project", + .author = "The CyanogenMod Project", .methods = &camera_module_methods, .dso = NULL, /* remove compilation warnings */ .reserved = {0}, /* remove compilation warnings */ @@ -119,6 +121,9 @@ static char *camera_fixup_getparams(int id __attribute__((unused)), static char *camera_fixup_setparams(int id, const char *settings) { + bool videoMode = false; + bool hdrMode = false; + android::CameraParameters params; params.unflatten(android::String8(settings)); @@ -129,6 +134,27 @@ static char *camera_fixup_setparams(int id, const char *settings) params.set(android::CameraParameters::KEY_VIDEO_STABILIZATION, "false"); + /* ZSL */ + if (params.get(android::CameraParameters::KEY_RECORDING_HINT)) { + videoMode = !strcmp(params.get(android::CameraParameters::KEY_RECORDING_HINT), "true"); + } + if (videoMode) { + params.set("zsl", "off"); + } else { + params.set("zsl", "on"); + } + + /* HDR */ + if (params.get(android::CameraParameters::KEY_SCENE_MODE)) { + hdrMode = (!strcmp(params.get(android::CameraParameters::KEY_SCENE_MODE), "hdr")); + } + if (hdrMode) { + params.set(KEY_QC_MORPHO_HDR, "true"); + params.set(android::CameraParameters::KEY_FLASH_MODE, android::CameraParameters::FLASH_MODE_OFF); + } else { + params.set(KEY_QC_MORPHO_HDR, "false"); + } + #if !LOG_NDEBUG ALOGV("%s: fixed parameters:", __FUNCTION__); params.dump();