Camera: Adding Sharpness, Contrast and Saturation features
Enabling Sharpness, Contrast and Saturation features in HAL
layer
CRs-Fixed: 215214
diff --git a/QualcommCameraHardware.cpp b/QualcommCameraHardware.cpp
index ebcf7f5..f026654 100644
--- a/QualcommCameraHardware.cpp
+++ b/QualcommCameraHardware.cpp
@@ -646,6 +646,9 @@
mAutoFocusThreadRunning(false),
mAutoFocusFd(-1),
mBrightness(0),
+ mSharpness(0),
+ mContrast(0),
+ mSaturation(0),
mInPreviewCallback(false),
mUseOverlay(0),
mOverlay(0),
@@ -770,6 +773,13 @@
flash_values);
}
+ mParameters.set(CameraParameters::KEY_MAX_SHARPNESS,
+ CAMERA_MAX_SHARPNESS);
+ mParameters.set(CameraParameters::KEY_MAX_CONTRAST,
+ CAMERA_MAX_CONTRAST);
+ mParameters.set(CameraParameters::KEY_MAX_SATURATION,
+ CAMERA_MAX_SATURATION);
+
mParameters.set("luma-adaptation", "18");
mParameters.set("zoom-supported", "true");
mParameters.set("max-zoom", MAX_ZOOM_LEVEL);
@@ -2347,6 +2357,9 @@
if ((rc = setLensshadeValue(params))) final_rc = rc;
if ((rc = setISOValue(params))) final_rc = rc;
if ((rc = setPictureFormat(params))) final_rc = rc;
+ if ((rc = setSharpness(params))) final_rc = rc;
+ if ((rc = setContrast(params))) final_rc = rc;
+ if ((rc = setSaturation(params))) final_rc = rc;
LOGV("setParameters: X");
return final_rc;
@@ -2953,6 +2966,66 @@
return BAD_VALUE;
}
+status_t QualcommCameraHardware::setSharpness(const CameraParameters& params)
+{
+ if(!strcmp(sensorType->name, "2mp")) {
+ LOGE("Sharpness not supported for this sensor");
+ return NO_ERROR;
+ }
+ int sharpness = params.getInt(CameraParameters::KEY_SHARPNESS);
+ if((sharpness < CAMERA_MIN_SHARPNESS
+ || sharpness > CAMERA_MAX_SHARPNESS))
+ return UNKNOWN_ERROR;
+ if (mSharpness != sharpness) {
+ mSharpness = sharpness;
+ bool ret = native_set_parm(CAMERA_SET_PARM_SHARPNESS, sizeof(mSharpness),
+ (void *)&mSharpness);
+ return ret ? NO_ERROR : UNKNOWN_ERROR;
+ } else {
+ return NO_ERROR;
+ }
+}
+
+status_t QualcommCameraHardware::setContrast(const CameraParameters& params)
+{
+ if(!strcmp(sensorType->name, "2mp")) {
+ LOGE("Contrast not supported for this sensor");
+ return NO_ERROR;
+ }
+ int contrast = params.getInt(CameraParameters::KEY_CONTRAST);
+ if((contrast < CAMERA_MIN_CONTRAST)
+ || (contrast > CAMERA_MAX_CONTRAST))
+ return UNKNOWN_ERROR;
+ if (mContrast != contrast) {
+ mContrast = contrast;
+ bool ret = native_set_parm(CAMERA_SET_PARM_CONTRAST, sizeof(mContrast),
+ (void *)&mContrast);
+ return ret ? NO_ERROR : UNKNOWN_ERROR;
+ } else {
+ return NO_ERROR;
+ }
+}
+
+status_t QualcommCameraHardware::setSaturation(const CameraParameters& params)
+{
+ if(!strcmp(sensorType->name, "2mp")) {
+ LOGE("Saturation not supported for this sensor");
+ return NO_ERROR;
+ }
+ int saturation = params.getInt(CameraParameters::KEY_SATURATION);
+ if((saturation < CAMERA_MIN_SATURATION)
+ || (saturation > CAMERA_MAX_SATURATION))
+ return UNKNOWN_ERROR;
+ if (mSaturation != saturation) {
+ mSaturation = saturation;
+ bool ret = native_set_parm(CAMERA_SET_PARM_SATURATION, sizeof(mSaturation),
+ (void *)&mSaturation);
+ return ret ? NO_ERROR : UNKNOWN_ERROR;
+ } else {
+ return NO_ERROR;
+ }
+}
+
status_t QualcommCameraHardware::setBrightness(const CameraParameters& params) {
int brightness = params.getInt("luma-adaptation");
if (mBrightness != brightness) {