/* ** ** Copyright 2008, The Android Open Source Project ** Copyright 2010, Samsung Electronics Co. LTD ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** ** http://www.apache.org/licenses/LICENSE-2.0 ** ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed toggle an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License. */ /*! * \file ExynosCamera.h * \brief hearder file for CAMERA HAL MODULE * \author thun.hwang(thun.hwang@samsung.com) * \date 2010/06/03 * * Revision History: * - 2011/12/31 : thun.hwang(thun.hwang@samsung.com) \n * Initial version * * - 2012/01/18 : Sangwoo, Park(sw5771.park@samsung.com) \n * Adjust Doxygen Document * * - 2012/02/01 : Sangwoo, Park(sw5771.park@samsung.com) \n * Adjust libv4l2 * Adjust struct ExynosCameraInfo * External ISP feature * * - 2012/03/14 : sangwoo.park(sw5771.park@samsung.com) \n * Change file, class name to ExynosXXX. */ #ifndef EXYNOS_CAMERA_H__ #define EXYNOS_CAMERA_H__ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "cutils/properties.h" #include "exynos_format.h" #include "ExynosBuffer.h" #include "ExynosRect.h" #include "ExynosJpegEncoderForCamera.h" #include "ExynosExif.h" #include "exynos_v4l2.h" #define ALIGN(x, a) (((x) + (a) - 1) & ~((a) - 1)) namespace android { #define GAIA_FW_BETA 1 /* FIXME: This is for test. We remove this after test */ #define USE_DIGITAL_ZOOM //! struct for Camera sensor information /*! * \ingroup Exynos */ struct ExynosCameraInfo { public: // Google Official API : Camera.Parameters // http://developer.android.com/reference/android/hardware/Camera.Parameters.html int previewW; int previewH; int previewColorFormat; int videoW; int videoH; int videoColorFormat; int pictureW; int pictureH; int pictureColorFormat; int thumbnailW; int thumbnailH; int antiBandingList; int antiBanding; int effectList; int effect; int flashModeList; int flashMode; int focusModeList; int focusMode; int sceneModeList; int sceneMode; int whiteBalanceList; int whiteBalance; bool autoWhiteBalanceLockSupported; bool autoWhiteBalanceLock; int rotation; int minExposure; int maxExposure; int exposure; bool autoExposureLockSupported; bool autoExposureLock; int fps; int focalLengthNum; int focalLengthDen; bool supportVideoStabilization; bool applyVideoStabilization; bool videoStabilization; int maxNumMeteringAreas; int maxNumDetectedFaces; int maxNumFocusAreas; int maxZoom; bool hwZoomSupported; int zoom; long gpsLatitude; long gpsLongitude; long gpsAltitude; long gpsTimestamp; // Additional API. int angle; bool antiShake; bool beautyShot; int brightness; int contrast; bool gamma; bool odc; int hue; int iso; int metering; bool objectTracking; bool objectTrackingStart; int saturation; int sharpness; int shotMode; bool slowAE; bool smartAuto; bool touchAfStart; bool wdr; bool tdnr; public: ExynosCameraInfo(); }; struct ExynosCameraInfoM5M0 : public ExynosCameraInfo { public: ExynosCameraInfoM5M0(); }; struct ExynosCameraInfoS5K6A3 : public ExynosCameraInfo { public: ExynosCameraInfoS5K6A3(); }; struct ExynosCameraInfoS5K4E5 : public ExynosCameraInfo { public: ExynosCameraInfoS5K4E5(); }; struct ExynosCameraInfoS5K3H7 : public ExynosCameraInfo { public: ExynosCameraInfoS5K3H7(); }; //! ExynosCamera /*! * \ingroup Exynos */ class ExynosCamera : public virtual RefBase { /////////////////////////////////////////////////// // Google Official API : Camera.Parameters // http://developer.android.com/reference/android/hardware/Camera.Parameters.html /////////////////////////////////////////////////// public: //! Camera ID enum CAMERA_ID { CAMERA_ID_BACK = 0, //!< CAMERA_ID_FRONT = 1, //!< }; //! Anti banding enum { ANTIBANDING_AUTO = (1 << 0), //!< \n ANTIBANDING_50HZ = (1 << 1), //!< \n ANTIBANDING_60HZ = (1 << 2), //!< \n ANTIBANDING_OFF = (1 << 3), //!< \n }; //! Effect enum { EFFECT_NONE = (1 << 0), //!< \n EFFECT_MONO = (1 << 1), //!< \n EFFECT_NEGATIVE = (1 << 2), //!< \n EFFECT_SOLARIZE = (1 << 3), //!< \n EFFECT_SEPIA = (1 << 4), //!< \n EFFECT_POSTERIZE = (1 << 5), //!< \n EFFECT_WHITEBOARD = (1 << 6), //!< \n EFFECT_BLACKBOARD = (1 << 7), //!< \n EFFECT_AQUA = (1 << 8), //!< \n }; //! Flash mode enum { FLASH_MODE_OFF = (1 << 0), //!< \n FLASH_MODE_AUTO = (1 << 1), //!< \n FLASH_MODE_ON = (1 << 2), //!< \n FLASH_MODE_RED_EYE = (1 << 3), //!< \n FLASH_MODE_TORCH = (1 << 4), //!< \n }; //! Focus mode enum { FOCUS_MODE_AUTO = (1 << 0), //!< \n FOCUS_MODE_INFINITY = (1 << 1), //!< \n FOCUS_MODE_MACRO = (1 << 2), //!< \n FOCUS_MODE_FIXED = (1 << 3), //!< \n FOCUS_MODE_EDOF = (1 << 4), //!< \n FOCUS_MODE_CONTINUOUS_VIDEO = (1 << 5), //!< \n FOCUS_MODE_CONTINUOUS_PICTURE = (1 << 6), //!< \n FOCUS_MODE_TOUCH = (1 << 7), //!< \n }; //! Scene mode enum { SCENE_MODE_AUTO = (1 << 0), //!< \n SCENE_MODE_ACTION = (1 << 1), //!< \n SCENE_MODE_PORTRAIT = (1 << 2), //!< \n SCENE_MODE_LANDSCAPE = (1 << 3), //!< \n SCENE_MODE_NIGHT = (1 << 4), //!< \n SCENE_MODE_NIGHT_PORTRAIT = (1 << 5), //!< \n SCENE_MODE_THEATRE = (1 << 6), //!< \n SCENE_MODE_BEACH = (1 << 7), //!< \n SCENE_MODE_SNOW = (1 << 8), //!< \n SCENE_MODE_SUNSET = (1 << 9), //!< \n SCENE_MODE_STEADYPHOTO = (1 << 10), //!< \n SCENE_MODE_FIREWORKS = (1 << 11), //!< \n SCENE_MODE_SPORTS = (1 << 12), //!< \n SCENE_MODE_PARTY = (1 << 13), //!< \n SCENE_MODE_CANDLELIGHT = (1 << 14), //!< \n }; //! White balance enum { WHITE_BALANCE_AUTO = (1 << 0), //!< \n WHITE_BALANCE_INCANDESCENT = (1 << 1), //!< \n WHITE_BALANCE_FLUORESCENT = (1 << 2), //!< \n WHITE_BALANCE_WARM_FLUORESCENT = (1 << 3), //!< \n WHITE_BALANCE_DAYLIGHT = (1 << 4), //!< \n WHITE_BALANCE_CLOUDY_DAYLIGHT = (1 << 5), //!< \n WHITE_BALANCE_TWILIGHT = (1 << 6), //!< \n WHITE_BALANCE_SHADE = (1 << 7), //!< \n }; //! Jpeg Qualtiy enum JPEG_QUALITY { JPEG_QUALITY_MIN = 0, //!< JPEG_QUALITY_ECONOMY = 70, //!< JPEG_QUALITY_NORMAL = 80, //!< JPEG_QUALITY_SUPERFINE = 90, //!< JPEG_QUALITY_MAX = 100, //!< }; private: //! Constructor ExynosCamera(); //! Destructor virtual ~ExynosCamera(); public: //! Gets the Camera instance static ExynosCamera* createInstance(void) { static ExynosCamera singleton; return &singleton; } //! Create the instance bool create(int cameraId); //! Destroy the instance bool destroy(void); //! Check if the instance was created bool flagCreate(void); //! Gets current camera_id int getCameraId(void); //! Gets camera sensor name char *getCameraName(void); //! Gets file descriptor by gotten open() for preview int getPreviewFd(void); //! Gets file descriptor by gotten open() for recording int getVideoFd(void); //! Gets file descriptor by gotten open() for snapshot int getPictureFd(void); //! Starts capturing and drawing preview frames to the screen. bool startPreview(void); //! Stop preview bool stopPreview(void); //! Check preview start bool flagStartPreview(void); //! Gets preview's max buffer int getPreviewMaxBuf(void); //! Sets preview's buffer bool setPreviewBuf(ExynosBuffer *buf); //! Gets preview's buffer bool getPreviewBuf(ExynosBuffer *buf); //! Put(dq) preview's buffer bool putPreviewBuf(ExynosBuffer *buf); //! Sets video's width, height bool setVideoSize(int w, int h); //! Gets video's width, height bool getVideoSize(int *w, int *h); //! Sets video's color format bool setVideoFormat(int colorFormat); //! Gets video's color format int getVideoFormat(void); //! Start video bool startVideo(void); //! Stop video bool stopVideo(void); //! Check video start bool flagStartVideo(void); //! Gets video's buffer int getVideoMaxBuf(void); //! Sets video's buffer bool setVideoBuf(ExynosBuffer *buf); //! Gets video's buffer bool getVideoBuf(ExynosBuffer *buf); //! Put(dq) video's buffer bool putVideoBuf(ExynosBuffer *buf); //! Start snapshot bool startPicture(void); //! Stop snapshot bool stopPicture(void); //! Check snapshot start bool flagStartPicture(void); //! Gets snapshot's buffer int getPictureMaxBuf(void); //! Sets snapshot's buffer bool setPictureBuf(ExynosBuffer *buf); //! Gets snapshot's buffer bool getPictureBuf(ExynosBuffer *buf); //! Put(dq) snapshot's buffer bool putPictureBuf(ExynosBuffer *buf); //! Encode JPEG from YUV bool yuv2Jpeg(ExynosBuffer *yuvBuf, ExynosBuffer *jpegBuf, ExynosRect *rect); //! Starts camera auto-focus and registers a callback function to run when the camera is focused. bool autoFocus(void); //! Cancel auto-focus operation bool cancelAutoFocus(void); //! Gets auto-focus result whether success or not int getFucusModeResult(void); //! Starts the face detection. bool startFaceDetection(void); //! Stop face detection bool stopFaceDetection(void); //! Gets the face detection started bool flagStartFaceDetection(void); //! Lock or unlock face detection operation bool setFaceDetectLock(bool toggle); //! Zooms to the requested value smoothly. bool startSmoothZoom(int value); //! Stop the face detection. bool stopSmoothZoom(void); //! Gets the current antibanding setting. int getAntibanding(void); //! Gets the state of the auto-exposure lock. bool getAutoExposureLock(void); //! Gets the state of the auto-white balance lock. bool getAutoWhiteBalanceLock(void); //! Gets the current color effect setting. int getColorEffect(void); //! Gets the detected faces areas. int getDetectedFacesAreas(int num, int *id, int *score, ExynosRect *face, ExynosRect *leftEye, ExynosRect *rightEye, ExynosRect *mouth); //! Gets the detected faces areas. (Using ExynosRect2) int getDetectedFacesAreas(int num, int *id, int *score, ExynosRect2 *face, ExynosRect2 *leftEye, ExynosRect2 *rightEye, ExynosRect2 *mouth); //! Gets the current exposure compensation index. int getExposureCompensation(void); //! Gets the exposure compensation step. float getExposureCompensationStep(void); //! Gets the current flash mode setting. int getFlashMode(void); //! Gets the focal length (in millimeter) of the camera. bool getFocalLength(int *num, int *den); //! Gets the current focus areas. int getFocusAreas(ExynosRect *rects); //! Gets the distances from the camera to where an object appears to be in focus. int getFocusDistances(float *output); //! Gets the current focus mode setting. int getFocusMode(void); //! Gets the horizontal angle of view in degrees. float getHorizontalViewAngle(void); //int getInt(String key); //! Returns the quality setting for the JPEG picture. int getJpegQuality(void); //! Returns the quality setting for the EXIF thumbnail in Jpeg picture. int getJpegThumbnailQuality(void); //! Returns the dimensions for EXIF thumbnail in Jpeg picture. bool getJpegThumbnailSize(int *w, int *h); //! Gets the maximum exposure compensation index. int getMaxExposureCompensation(void); //! Gets the maximum number of detected faces supported. int getMaxNumDetectedFaces(void); //! Gets the maximum number of focus areas supported. int getMaxNumFocusAreas(void); //! Gets the maximum number of metering areas supported. int getMaxNumMeteringAreas(void); //! Gets the maximum zoom value allowed for snapshot. int getMaxZoom(void); //! Gets the current metering areas. int getMeteringAreas(ExynosRect *rects); //! Gets the minimum exposure compensation index. int getMinExposureCompensation(void); //! Returns the image format for pictures. int getPictureFormat(void); //! Returns the dimension setting for pictures. bool getPictureSize(int *w, int *h); //Camera.Size getPreferredPreviewSizeForVideo(); //! Returns the image format for preview frames got from Camera.PreviewCallback. int getPreviewFormat(void); //! Returns the current minimum and maximum preview fps. bool getPreviewFpsRange(int *min, int *max); //! This method is deprecated. replaced by getPreviewFpsRange(int[]) int getPreviewFrameRate(void); //! Returns the dimensions setting for preview pictures. bool getPreviewSize(int *w, int *h); //! Gets scene mode int getSceneMode(void); //! Gets the supported antibanding values. int getSupportedAntibanding(void); //! Gets the supported color effects. int getSupportedColorEffects(void); //! Check whether the target support Flash int getSupportedFlashModes(void); //! Gets the supported focus modes. int getSupportedFocusModes(void); //! Gets the supported jpeg thumbnail sizes. bool getSupportedJpegThumbnailSizes(int *w, int *h); // List getSupportedPictureFormats() //! Gets the supported picture sizes. bool getSupportedPictureSizes(int *w, int *h); //List getSupportedPreviewFormats() //List getSupportedPreviewFpsRange() //List getSupportedPreviewFrameRates() //! Gets the supported preview sizes. bool getSupportedPreviewSizes(int *w, int *h); //! Gets the supported scene modes. int getSupportedSceneModes(void); //! Gets the supported video frame sizes that can be used by MediaRecorder. bool getSupportedVideoSizes(int *w, int *h); //! Gets the supported white balance. int getSupportedWhiteBalance(void); //! Gets the vertical angle of view in degrees. float getVerticalViewAngle(void); //! Gets the current state of video stabilization. bool getVideoStabilization(void); //! Gets the current white balance setting. int getWhiteBalance(void); //! Gets current zoom value. int getZoom(void); //List getZoomRatios() //! Gets max zoom ratio int getMaxZoomRatio(void); //! Returns true if auto-exposure locking is supported. bool isAutoExposureLockSupported(void); //! Returns true if auto-white balance locking is supported. bool isAutoWhiteBalanceLockSupported(void); //! Returns true if smooth zoom is supported. bool isSmoothZoomSupported(void); //! Returns true if video snapshot is supported. bool isVideoSnapshotSupported(void); //! Returns true if video stabilization is supported. bool isVideoStabilizationSupported(void); //! Returns true if zoom is supported. bool isZoomSupported(void); //void remove(String key) //void removeGpsData() //void set(String key, String value) //void set(String key, int value) //! Sets the antibanding. bool setAntibanding(int value); //! Sets the auto-exposure lock state. bool setAutoExposureLock(bool toggle); //! Sets the auto-white balance lock state. bool setAutoWhiteBalanceLock(bool toggle); //! Sets the current color effect setting. bool setColorEffect(int value); //! Sets the exposure compensation index. bool setExposureCompensation(int value); //! Sets the flash mode. bool setFlashMode(int value); //! Sets focus z. bool setFocusAreas(int num, ExynosRect* rects, int *weights); //! Sets focus areas. (Using ExynosRect2) bool setFocusAreas(int num, ExynosRect2* rect2s, int *weights); //! Sets the focus mode. bool setFocusMode(int value); //! Sets GPS altitude. bool setGpsAltitude(const char *gpsAltitude); //! Sets GPS latitude coordinate. bool setGpsLatitude(const char *gpsLatitude); //! Sets GPS longitude coordinate. bool setGpsLongitude(const char *gpsLongitude); //! Sets GPS processing method. bool setGpsProcessingMethod(const char *gpsProcessingMethod); //! Sets GPS timestamp. bool setGpsTimeStamp(const char *gpsTimestamp); //! Sets Jpeg quality of captured picture. bool setJpegQuality(int quality); //! Sets the quality of the EXIF thumbnail in Jpeg picture. bool setJpegThumbnailQuality(int quality); //! Sets the dimensions for EXIF thumbnail in Jpeg picture. bool setJpegThumbnailSize(int w, int h); //! Sets metering areas. bool setMeteringAreas(int num, ExynosRect *rects, int *weights); //! Sets metering areas.(Using ExynosRect2) bool setMeteringAreas(int num, ExynosRect2 *rect2s, int *weights); //! Cancel metering areas. bool cancelMeteringAreas(); //! Sets the image format for pictures. bool setPictureFormat(int colorFormat); //! Sets the dimensions for pictures. bool setPictureSize(int w, int h); //! Sets the image format for preview pictures. bool setPreviewFormat(int colorFormat); //void setPreviewFpsRange(int min, int max) // ! This method is deprecated. replaced by setPreviewFpsRange(int, int) bool setPreviewFrameRate(int fps); //! Sets the dimensions for preview pictures. bool setPreviewSize(int w, int h); //! Sets recording mode hint. bool setRecordingHint(bool hint); //! Sets the rotation angle in degrees relative to the orientation of the camera. bool setRotation(int rotation); //! Gets the rotation angle in degrees relative to the orientation of the camera. int getRotation(void); //! Sets the scene mode. bool setSceneMode(int value); //! Enables and disables video stabilization. bool setVideoStabilization(bool toggle); //! Sets the white balance. bool setWhiteBalance(int value); //! Sets current zoom value. bool setZoom(int value); //void unflatten(String flattened) private: enum MODE { PREVIEW_MODE = 0, VIDEO_MODE, PICTURE_MODE, }; struct devInfo { int fd; pollfd events; bool flagStart; }; bool m_flagCreate; int m_cameraId; ExynosCameraInfo *m_defaultCameraInfo; ExynosCameraInfo *m_curCameraInfo; int m_jpegQuality; int m_jpegThumbnailQuality; int m_currentZoom; bool m_recordingHint; // v4l2 sub-dev file description devInfo m_sensorDev; devInfo m_mipiDev; devInfo m_fliteDev; devInfo m_gscPreviewDev; devInfo m_gscVideoDev; devInfo m_gscPictureDev; #ifdef USE_DIGITAL_ZOOM devInfo m_gscBayerDev; devInfo *m_bayerDev; #endif devInfo *m_previewDev; devInfo *m_videoDev; devInfo *m_pictureDev; bool m_tryPreviewStop; bool m_tryVideoStop; bool m_tryPictureStop; bool m_flagStartFaceDetection; bool m_flagAutoFocusRunning; char m_cameraName[32]; bool m_internalISP; bool m_touchAFMode; bool m_isTouchMetering; bool m_focusIdle; // media controller variable struct media_device *m_media; struct media_entity *m_sensorEntity; struct media_entity *m_mipiEntity; struct media_entity *m_fliteSdEntity; struct media_entity *m_fliteVdEntity; struct media_entity *m_gscSdEntity; struct media_entity *m_gscVdEntity; struct media_entity *m_ispSensorEntity; struct media_entity *m_ispFrontEntity; struct media_entity *m_ispBackEntity; struct media_entity *m_ispBayerEntity; struct media_entity *m_ispScalercEntity; struct media_entity *m_ispScalerpEntity; struct media_entity *m_isp3dnrEntity; bool m_validPreviewBuf[VIDEO_MAX_FRAME]; bool m_validVideoBuf[VIDEO_MAX_FRAME]; bool m_validPictureBuf[VIDEO_MAX_FRAME]; struct ExynosBuffer m_previewBuf[VIDEO_MAX_FRAME]; struct ExynosBuffer m_videoBuf[VIDEO_MAX_FRAME]; struct ExynosBuffer m_pictureBuf[VIDEO_MAX_FRAME]; exif_attribute_t mExifInfo; private: bool m_setWidthHeight(int mode, int fd, struct pollfd *event, int w, int h, int colorFormat, struct ExynosBuffer *buf, bool *validBuf); bool m_setZoom(int fd, int zoom, int w, int h); bool m_setCrop(int fd, int w, int h, int zoom); bool m_getCropRect(unsigned int src_w, unsigned int src_h, unsigned int dst_w, unsigned int dst_h, unsigned int *crop_x, unsigned int *crop_y, unsigned int *crop_w, unsigned int *crop_h, int zoom); void m_setExifFixedAttribute(void); void m_setExifChangedAttribute(exif_attribute_t *exifInfo, ExynosRect *rect); void m_secRect2SecRect2(ExynosRect *rect, ExynosRect2 *rect2); void m_secRect22SecRect(ExynosRect2 *rect2, ExynosRect *rect); void m_printFormat(int colorFormat, const char *arg); /////////////////////////////////////////////////// // Additional API. /////////////////////////////////////////////////// public: //! Focus mode enum { FOCUS_MODE_CONTINUOUS_PICTURE_MACRO = (1 << 8), //!< \n }; //! Metering enum { METERING_MODE_AVERAGE = (1 << 0), //!< \n METERING_MODE_CENTER = (1 << 1), //!< \n METERING_MODE_MATRIX = (1 << 2), //!< \n METERING_MODE_SPOT = (1 << 3), //!< \n }; //! Contrast enum { CONTRAST_AUTO = (1 << 0), //!< \n CONTRAST_MINUS_2 = (1 << 1), //!< \n CONTRAST_MINUS_1 = (1 << 2), //!< \n CONTRAST_DEFAULT = (1 << 3), //!< \n CONTRAST_PLUS_1 = (1 << 4), //!< \n CONTRAST_PLUS_2 = (1 << 5), //!< \n }; //! Camera Shot mode enum SHOT_MODE { SHOT_MODE_SINGLE = 0, //!< SHOT_MODE_CONTINUOUS = 1, //!< SHOT_MODE_PANORAMA = 2, //!< SHOT_MODE_SMILE = 3, //!< SHOT_MODE_SELF = 6, //!< }; //! Sets camera angle bool setAngle(int angle); //! Gets camera angle int getAngle(void); //! Sets metering areas. bool setMeteringMode(int value); //! Gets metering int getMeteringMode(void); //! Sets Top-down mirror bool setTopDownMirror(void); //! Sets Left-right mirror bool setLRMirror(void); //! Sets brightness bool setBrightness(int brightness); //! Gets brightness int getBrightness(void); //! Sets ISO bool setISO(int iso); //! Gets ISO int getISO(void); //! Sets Contrast bool setContrast(int value); //! Gets Contrast int getContrast(void); //! Sets Saturation bool setSaturation(int saturation); //! Gets Saturation int getSaturation(void); //! Sets Sharpness bool setSharpness(int sharpness); //! Gets Sharpness int getSharpness(void); // ! Sets Hue bool setHue(int hue); // ! Gets Hue int getHue(void); //! Sets WDR bool setWDR(bool toggle); //! Gets WDR bool getWDR(void); //! Sets anti shake bool setAntiShake(bool toggle); //! Gets anti shake bool getAntiShake(void); //! Sets object tracking bool setObjectTracking(bool toggle); //! Gets object tracking bool getObjectTracking(void); //! Start or stop object tracking operation bool setObjectTrackingStart(bool toggle); //! Gets status of object tracking operation int getObjectTrackingStatus(void); //! Sets x, y position for object tracking operation bool setObjectPosition(int x, int y); //! Sets smart auto bool setSmartAuto(bool toggle); //! Gets smart auto bool getSmartAuto(void); //! Gets the status of smart auto operation int getSmartAutoStatus(void); //! Sets beauty shot bool setBeautyShot(bool toggle); //! Gets beauty shot bool getBeautyShot(void); //! Start or stop the touch auto focus operation bool setTouchAFStart(bool toggle); //! Sets gamma bool setGamma(bool toggle); //! Gets gamma bool getGamma(void); //! Sets ODC bool setODC(bool toggle); //! Gets ODC bool getODC(void); //! Sets Slow AE bool setSlowAE(bool toggle); //! Gets Slow AE bool getSlowAE(void); //! Sets Shot mode bool setShotMode(int shotMode); //! Gets Shot mode int getShotMode(void); //! Sets 3DNR bool set3DNR(bool toggle); //! Gets 3DNR bool get3DNR(void); }; }; // namespace android #endif // EXYNOS_CAMERA_H__