diff --git a/hardware/camera/CameraParameters.cpp b/hardware/camera/CameraParameters.cpp index a1b38dd..5a11f46 100644 --- a/hardware/camera/CameraParameters.cpp +++ b/hardware/camera/CameraParameters.cpp @@ -175,6 +175,113 @@ const char CameraParameters::FOCUS_MODE_CONTINUOUS_PICTURE[] = "continuous-pictu const char CameraParameters::LIGHTFX_LOWLIGHT[] = "low-light"; const char CameraParameters::LIGHTFX_HDR[] = "high-dynamic-range"; +// Custom parameters for Samsung +const char CameraParameters::KEY_SUPPORTED_ISO_MODES[] = "iso-values"; +const char CameraParameters::KEY_QC_FACE_RECOGNITION[] = "face-recognition"; +const char CameraParameters::KEY_QC_SUPPORTED_FACE_RECOGNITION[] = "face-recognition-values"; +const char CameraParameters::KEY_QC_SUPPORTED_FACE_RECOGNITION_MODES[] = "face-recognition-values"; +const char CameraParameters::KEY_QC_FACE_DETECTION[] = "face-detection"; +const char CameraParameters::KEY_QC_SUPPORTED_FACE_DETECTION[] = "face-detection-values"; +const char CameraParameters::KEY_FACE_DETECTION[] = "face-detection"; +const char CameraParameters::KEY_SUPPORTED_FACE_DETECTION[] = "face-detection-values"; +const char CameraParameters::FACE_DETECTION_OFF[] = "off"; +const char CameraParameters::FACE_DETECTION_ON[] = "on"; +const char CameraParameters::KEY_ZSL[] = "zsl"; +const char CameraParameters::KEY_SUPPORTED_ZSL_MODES[] = "zsl-values"; +const char CameraParameters::ZSL_OFF[] = "off"; +const char CameraParameters::ZSL_ON[] = "on"; +const char CameraParameters::KEY_ISO_MODE[] = "iso"; +const char CameraParameters::KEY_CAMERA_MODE[] = "camera-mode"; +const char CameraParameters::KEY_SAMSUNG_CAMERA_MODE[] = "cam_mode"; +const char CameraParameters::KEY_SELECTABLE_ZONE_AF[] = "selectable-zone-af"; +const char CameraParameters::KEY_SUPPORTED_SELECTABLE_ZONE_AF[] = "selectable-zone-af-values"; +const char CameraParameters::SELECTABLE_ZONE_AF_AUTO[] = "auto"; +const char CameraParameters::SELECTABLE_ZONE_AF_SPOT_METERING[] = "spot-metering"; +const char CameraParameters::SELECTABLE_ZONE_AF_CENTER_WEIGHTED[] = "center-weighted"; +const char CameraParameters::SELECTABLE_ZONE_AF_FRAME_AVERAGE[] = "frame-average"; +const char CameraParameters::KEY_PREVIEW_FRAME_RATE_MODE[] = "preview-frame-rate-mode"; +const char CameraParameters::KEY_SUPPORTED_PREVIEW_FRAME_RATE_MODES[] = "preview-frame-rate-modes"; +const char CameraParameters::KEY_PREVIEW_FRAME_RATE_AUTO_MODE[] = "frame-rate-auto"; +const char CameraParameters::KEY_PREVIEW_FRAME_RATE_FIXED_MODE[] = "frame-rate-fixed"; +const char CameraParameters::KEY_SHARPNESS[] = "sharpness"; +const char CameraParameters::KEY_SATURATION[] = "saturation"; +const char CameraParameters::KEY_CONTRAST[] = "contrast"; +const char CameraParameters::KEY_SCENE_DETECT[] = "scene-detect"; +const char CameraParameters::KEY_SUPPORTED_SCENE_DETECT[] = "scene-detect-values"; +const char CameraParameters::SCENE_DETECT_OFF[] = "off"; +const char CameraParameters::SCENE_DETECT_ON[] = "on"; +const char CameraParameters::KEY_WEATHER[] = "weather"; +const char CameraParameters::KEY_CITYID[] = "contextualtag-cityid"; +const char CameraParameters::KEY_TOUCH_AF_AEC[] = "touch-af-aec"; +const char CameraParameters::KEY_SUPPORTED_TOUCH_AF_AEC[] = "touch-af-aec-values"; +const char CameraParameters::TOUCH_AF_AEC_OFF[] = "touch-off"; +const char CameraParameters::TOUCH_AF_AEC_ON[] = "touch-on"; +const char CameraParameters::KEY_MEMORY_COLOR_ENHANCEMENT[] = "mce"; +const char CameraParameters::KEY_LENSSHADE[] = "lensshade"; +const char CameraParameters::KEY_REDEYE_REDUCTION[] = "redeye-reduction"; +const char CameraParameters::KEY_SUPPORTED_REDEYE_REDUCTION[] = "redeye-reduction-values"; +const char CameraParameters::REDEYE_REDUCTION_ENABLE[] = "enable"; +const char CameraParameters::REDEYE_REDUCTION_DISABLE[] = "disable"; +const char CameraParameters::KEY_GPS_LATITUDE_REF[] = "gps-latitude-ref"; +const char CameraParameters::KEY_GPS_LONGITUDE_REF[] = "gps-longitude-ref"; +const char CameraParameters::KEY_GPS_ALTITUDE_REF[] = "gps-altitude-ref"; +const char CameraParameters::KEY_GPS_STATUS[] = "gps-status"; +const char CameraParameters::KEY_EXIF_DATETIME[] = "exif-datetime"; +const char CameraParameters::KEY_AUTO_EXPOSURE[] = "auto-exposure"; +const char CameraParameters::KEY_SUPPORTED_AUTO_EXPOSURE[] = "auto-exposure-values"; +const char CameraParameters::KEY_SUPPORTED_LENSSHADE_MODES[] = "lensshade-values"; +const char CameraParameters::LENSSHADE_ENABLE[] = "enable"; +const char CameraParameters::LENSSHADE_DISABLE[] = "disable"; +const char CameraParameters::MCE_ENABLE[] = "enable"; +const char CameraParameters::MCE_DISABLE[] = "disable"; +const char CameraParameters::ISO_AUTO[] = "auto"; +const char CameraParameters::ISO_HJR[] = "ISO_HJR"; +const char CameraParameters::ISO_100[] = "ISO100"; +const char CameraParameters::ISO_200[] = "ISO200"; +const char CameraParameters::ISO_400[] = "ISO400"; +const char CameraParameters::ISO_800[] = "ISO800"; +const char CameraParameters::ISO_1600[] = "ISO1600"; +const char CameraParameters::ISO_3200[] = "ISO3200"; +const char CameraParameters::ISO_6400[] = "ISO6400"; +const char CameraParameters::KEY_SUPPORTED_HFR_SIZES[] = "hfr-size-values"; +const char CameraParameters::KEY_SUPPORTED_MEM_COLOR_ENHANCE_MODES[] = "mce-values"; +const char CameraParameters::VIDEO_HFR_OFF[] = "off"; +const char CameraParameters::VIDEO_HFR_2X[] = "60"; +const char CameraParameters::VIDEO_HFR_3X[] = "90"; +const char CameraParameters::VIDEO_HFR_4X[] = "120"; +const char CameraParameters::KEY_VIDEO_HIGH_FRAME_RATE[] = "video-hfr"; +const char CameraParameters::KEY_SUPPORTED_VIDEO_HIGH_FRAME_RATE_MODES[] = "video-hfr-values"; +const char CameraParameters::KEY_HISTOGRAM[] = "histogram"; +const char CameraParameters::KEY_SUPPORTED_HISTOGRAM_MODES[] = "histogram-values"; +const char CameraParameters::HISTOGRAM_ENABLE[] = "enable"; +const char CameraParameters::HISTOGRAM_DISABLE[] = "disable"; +const char CameraParameters::SKIN_TONE_ENHANCEMENT_ENABLE[] = "enable"; +const char CameraParameters::SKIN_TONE_ENHANCEMENT_DISABLE[] = "disable"; +const char CameraParameters::KEY_SKIN_TONE_ENHANCEMENT[] = "skinToneEnhancement"; +const char CameraParameters::KEY_SUPPORTED_SKIN_TONE_ENHANCEMENT_MODES[] = "skinToneEnhancement-values"; +const char CameraParameters::DENOISE_OFF[] = "denoise-off"; +const char CameraParameters::DENOISE_ON[] = "denoise-on"; +const char CameraParameters::KEY_DENOISE[] = "denoise"; +const char CameraParameters::KEY_SUPPORTED_DENOISE[] = "denoise-values"; +const char CameraParameters::EFFECT_EMBOSS[] = "emboss"; +const char CameraParameters::EFFECT_SKETCH[] = "sketch"; +const char CameraParameters::EFFECT_NEON[] = "neon"; +const char CameraParameters::SCENE_MODE_FLOWERS[] = "flowers"; +const char CameraParameters::SCENE_MODE_AR[] = "AR"; +const char CameraParameters::PIXEL_FORMAT_YUV420SP_ADRENO[] = "yuv420sp-adreno"; +const char CameraParameters::PIXEL_FORMAT_RAW[] = "raw"; +const char CameraParameters::PIXEL_FORMAT_YV12[] = "yuv420p"; +const char CameraParameters::PIXEL_FORMAT_NV12[] = "nv12"; +const char CameraParameters::EFFECT_CARTOONIZE[] = "cartoonize"; +const char CameraParameters::EFFECT_POINT_RED_YELLOW[] = "point-red-yellow"; +const char CameraParameters::EFFECT_POINT_GREEN[] = "point-green"; +const char CameraParameters::EFFECT_POINT_BLUE[] = "point-blue"; +const char CameraParameters::EFFECT_VINTAGE_COLD[] = "vintage-cold"; +const char CameraParameters::EFFECT_VINTAGE_WARM[] = "vintage-warm"; +const char CameraParameters::EFFECT_WASHED[] = "washed"; +const char CameraParameters::SCENE_MODE_BACKLIGHT[] = "backlight"; +const char CameraParameters::SCENE_MODE_ASD[] = "asd"; + CameraParameters::CameraParameters() : mMap() { @@ -252,7 +359,15 @@ void CameraParameters::set(const char *key, const char *value) //XXX ALOGE("Value \"%s\"contains invalid character (= or ;)", value); return; } - +#ifdef QCOM_HARDWARE + // qcom cameras default to delivering an extra zero-exposure frame on HDR. + // The android SDK only wants one frame, so disable this unless the app + // explicitly asks for it + if (!get("hdr-need-1x")) { + mMap.replaceValueFor(String8("hdr-need-1x"), String8("false")); + } +#endif + mMap.replaceValueFor(String8(key), String8(value)); } @@ -539,4 +654,51 @@ bool CameraParameters::isEmpty() const { return mMap.isEmpty(); } +// Custom parameters for Samsung +int CameraParameters::getInt64(const char *key __unused) const +{ + return -1; +} + +const char * CameraParameters::getPreviewFrameRateMode() const +{ + return mParams->get("preview-frame-rate-mode"); +} + +void CameraParameters::setPreviewFrameRateMode(const char *mode) +{ + mParams->set("preview-frame-rate-mode", mode); +} + +void CameraParameters::getMeteringAreaCenter(int *x, int *y) const +{ + const char *p; + *x = *y = -2000; + p = mParams->get("metering-areas"); + parse_pair(p, x, y, 'x'); + *x /= 2; + *y /= 2; +} + +void CameraParameters::setTouchIndexAec(int x, int y) +{ + char buf[32]; + snprintf(buf, 32, "%dx%d", x, y); + mParams->set("touch-index-aec", buf); +} + +void CameraParameters::setTouchIndexAf(int x, int y) +{ + char buf[32]; + snprintf(buf, 32, "%dx%d", x, y); + mParams->set("touch-index-af", buf); +} + +void CameraParameters::setPreviewFpsRange(int min, int max) +{ + char buf[32]; + snprintf(buf, 32, "%d,%d", min, max); + mParams->set("preview-fps-range", buf); +} + }; // namespace android