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