hardware: exynos5: add initial include directory

Change-Id: I6f93539713b700c74a17e85c03578e64a84eca86
Signed-off-by: Jiho Chang <jiho04.chang@samsung.com>

Conflicts:

	include/gralloc_priv.h
	include/ion.h
diff --git a/include/ExynosCamera.h b/include/ExynosCamera.h
new file mode 100644
index 0000000..4318094
--- /dev/null
+++ b/include/ExynosCamera.h
@@ -0,0 +1,906 @@
+/*
+**
+** 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
+ *
+ * <b>Revision History: </b>
+ * - 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 <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include <fcntl.h>
+#include <unistd.h>
+#include <errno.h>
+#include <signal.h>
+#include <sys/mman.h>
+#include <sys/time.h>
+#include <sys/ioctl.h>
+#include <sys/poll.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#include <videodev2.h>
+#include <videodev2_samsung.h>
+#include <linux/vt.h>
+
+#include <utils/RefBase.h>
+#include <utils/String8.h>
+#include "cutils/properties.h"
+
+#include "exynos_format.h"
+#include "ExynosBuffer.h"
+#include "ExynosRect.h"
+#include "ExynosJpegEncoderForCamera.h"
+#include "ExynosExif.h"
+#include "exynos_v4l2.h"
+
+using namespace android;
+
+#define GAIA_FW_BETA                        1
+
+//! 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 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();
+};
+
+//! 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
+    };
+
+    //! Flash 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
+    };
+
+    //! 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);
+
+    //! 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<Integer>  getSupportedPictureFormats()
+
+    //! Gets the supported picture sizes.
+    bool            getSupportedPictureSizes(int *w, int *h);
+
+    //List<Integer>   getSupportedPreviewFormats()
+
+    //List<int[]>     getSupportedPreviewFpsRange()
+
+    //List<Integer>   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<Integer>   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);
+
+    //! 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;
+
+    // v4l2 sub-dev file description
+    devInfo         m_sensorDev;
+    devInfo         m_mipiDev;
+    devInfo         m_fliteDev;
+    devInfo         m_gscPreviewDev;
+    devInfo         m_gscVideoDev;
+    devInfo         m_gscPictureDev;
+
+    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;
+
+    // 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_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(void);
+    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:
+    //! 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);
+};
+
+#endif // EXYNOS_CAMERA_H__
\ No newline at end of file