ExynosCamera.h revision 20c516838913956e6f86347b305fe29506e2b491
120c516838913956e6f86347b305fe29506e2b491Jiho Chang/*
220c516838913956e6f86347b305fe29506e2b491Jiho Chang**
320c516838913956e6f86347b305fe29506e2b491Jiho Chang** Copyright 2008, The Android Open Source Project
420c516838913956e6f86347b305fe29506e2b491Jiho Chang** Copyright 2010, Samsung Electronics Co. LTD
520c516838913956e6f86347b305fe29506e2b491Jiho Chang**
620c516838913956e6f86347b305fe29506e2b491Jiho Chang** Licensed under the Apache License, Version 2.0 (the "License");
720c516838913956e6f86347b305fe29506e2b491Jiho Chang** you may not use this file except in compliance with the License.
820c516838913956e6f86347b305fe29506e2b491Jiho Chang** You may obtain a copy of the License at
920c516838913956e6f86347b305fe29506e2b491Jiho Chang**
1020c516838913956e6f86347b305fe29506e2b491Jiho Chang**     http://www.apache.org/licenses/LICENSE-2.0
1120c516838913956e6f86347b305fe29506e2b491Jiho Chang**
1220c516838913956e6f86347b305fe29506e2b491Jiho Chang** Unless required by applicable law or agreed to in writing, software
1320c516838913956e6f86347b305fe29506e2b491Jiho Chang** distributed under the License is distributed toggle an "AS IS" BASIS,
1420c516838913956e6f86347b305fe29506e2b491Jiho Chang** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1520c516838913956e6f86347b305fe29506e2b491Jiho Chang** See the License for the specific language governing permissions and
1620c516838913956e6f86347b305fe29506e2b491Jiho Chang** limitations under the License.
1720c516838913956e6f86347b305fe29506e2b491Jiho Chang*/
1820c516838913956e6f86347b305fe29506e2b491Jiho Chang
1920c516838913956e6f86347b305fe29506e2b491Jiho Chang/*!
2020c516838913956e6f86347b305fe29506e2b491Jiho Chang * \file      ExynosCamera.h
2120c516838913956e6f86347b305fe29506e2b491Jiho Chang * \brief     hearder file for CAMERA HAL MODULE
2220c516838913956e6f86347b305fe29506e2b491Jiho Chang * \author    thun.hwang(thun.hwang@samsung.com)
2320c516838913956e6f86347b305fe29506e2b491Jiho Chang * \date      2010/06/03
2420c516838913956e6f86347b305fe29506e2b491Jiho Chang *
2520c516838913956e6f86347b305fe29506e2b491Jiho Chang * <b>Revision History: </b>
2620c516838913956e6f86347b305fe29506e2b491Jiho Chang * - 2011/12/31 : thun.hwang(thun.hwang@samsung.com) \n
2720c516838913956e6f86347b305fe29506e2b491Jiho Chang *   Initial version
2820c516838913956e6f86347b305fe29506e2b491Jiho Chang *
2920c516838913956e6f86347b305fe29506e2b491Jiho Chang * - 2012/01/18 : Sangwoo, Park(sw5771.park@samsung.com) \n
3020c516838913956e6f86347b305fe29506e2b491Jiho Chang *   Adjust Doxygen Document
3120c516838913956e6f86347b305fe29506e2b491Jiho Chang *
3220c516838913956e6f86347b305fe29506e2b491Jiho Chang * - 2012/02/01 : Sangwoo, Park(sw5771.park@samsung.com) \n
3320c516838913956e6f86347b305fe29506e2b491Jiho Chang *   Adjust libv4l2
3420c516838913956e6f86347b305fe29506e2b491Jiho Chang *   Adjust struct ExynosCameraInfo
3520c516838913956e6f86347b305fe29506e2b491Jiho Chang *   External ISP feature
3620c516838913956e6f86347b305fe29506e2b491Jiho Chang *
3720c516838913956e6f86347b305fe29506e2b491Jiho Chang * - 2012/03/14 : sangwoo.park(sw5771.park@samsung.com) \n
3820c516838913956e6f86347b305fe29506e2b491Jiho Chang *   Change file, class name to ExynosXXX.
3920c516838913956e6f86347b305fe29506e2b491Jiho Chang */
4020c516838913956e6f86347b305fe29506e2b491Jiho Chang
4120c516838913956e6f86347b305fe29506e2b491Jiho Chang#ifndef EXYNOS_CAMERA_H__
4220c516838913956e6f86347b305fe29506e2b491Jiho Chang#define EXYNOS_CAMERA_H__
4320c516838913956e6f86347b305fe29506e2b491Jiho Chang
4420c516838913956e6f86347b305fe29506e2b491Jiho Chang#include <stdio.h>
4520c516838913956e6f86347b305fe29506e2b491Jiho Chang#include <string.h>
4620c516838913956e6f86347b305fe29506e2b491Jiho Chang#include <stdlib.h>
4720c516838913956e6f86347b305fe29506e2b491Jiho Chang
4820c516838913956e6f86347b305fe29506e2b491Jiho Chang#include <fcntl.h>
4920c516838913956e6f86347b305fe29506e2b491Jiho Chang#include <unistd.h>
5020c516838913956e6f86347b305fe29506e2b491Jiho Chang#include <errno.h>
5120c516838913956e6f86347b305fe29506e2b491Jiho Chang#include <signal.h>
5220c516838913956e6f86347b305fe29506e2b491Jiho Chang#include <sys/mman.h>
5320c516838913956e6f86347b305fe29506e2b491Jiho Chang#include <sys/time.h>
5420c516838913956e6f86347b305fe29506e2b491Jiho Chang#include <sys/ioctl.h>
5520c516838913956e6f86347b305fe29506e2b491Jiho Chang#include <sys/poll.h>
5620c516838913956e6f86347b305fe29506e2b491Jiho Chang#include <sys/stat.h>
5720c516838913956e6f86347b305fe29506e2b491Jiho Chang#include <sys/types.h>
5820c516838913956e6f86347b305fe29506e2b491Jiho Chang
5920c516838913956e6f86347b305fe29506e2b491Jiho Chang#include <videodev2.h>
6020c516838913956e6f86347b305fe29506e2b491Jiho Chang#include <videodev2_samsung.h>
6120c516838913956e6f86347b305fe29506e2b491Jiho Chang#include <linux/vt.h>
6220c516838913956e6f86347b305fe29506e2b491Jiho Chang
6320c516838913956e6f86347b305fe29506e2b491Jiho Chang#include <utils/RefBase.h>
6420c516838913956e6f86347b305fe29506e2b491Jiho Chang#include <utils/String8.h>
6520c516838913956e6f86347b305fe29506e2b491Jiho Chang#include "cutils/properties.h"
6620c516838913956e6f86347b305fe29506e2b491Jiho Chang
6720c516838913956e6f86347b305fe29506e2b491Jiho Chang#include "exynos_format.h"
6820c516838913956e6f86347b305fe29506e2b491Jiho Chang#include "ExynosBuffer.h"
6920c516838913956e6f86347b305fe29506e2b491Jiho Chang#include "ExynosRect.h"
7020c516838913956e6f86347b305fe29506e2b491Jiho Chang#include "ExynosJpegEncoderForCamera.h"
7120c516838913956e6f86347b305fe29506e2b491Jiho Chang#include "ExynosExif.h"
7220c516838913956e6f86347b305fe29506e2b491Jiho Chang#include "exynos_v4l2.h"
7320c516838913956e6f86347b305fe29506e2b491Jiho Chang
7420c516838913956e6f86347b305fe29506e2b491Jiho Changusing namespace android;
7520c516838913956e6f86347b305fe29506e2b491Jiho Chang
7620c516838913956e6f86347b305fe29506e2b491Jiho Chang#define GAIA_FW_BETA                        1
7720c516838913956e6f86347b305fe29506e2b491Jiho Chang
7820c516838913956e6f86347b305fe29506e2b491Jiho Chang//! struct for Camera sensor information
7920c516838913956e6f86347b305fe29506e2b491Jiho Chang/*!
8020c516838913956e6f86347b305fe29506e2b491Jiho Chang * \ingroup Exynos
8120c516838913956e6f86347b305fe29506e2b491Jiho Chang */
8220c516838913956e6f86347b305fe29506e2b491Jiho Changstruct ExynosCameraInfo
8320c516838913956e6f86347b305fe29506e2b491Jiho Chang{
8420c516838913956e6f86347b305fe29506e2b491Jiho Changpublic:
8520c516838913956e6f86347b305fe29506e2b491Jiho Chang    // Google Official API : Camera.Parameters
8620c516838913956e6f86347b305fe29506e2b491Jiho Chang    // http://developer.android.com/reference/android/hardware/Camera.Parameters.html
8720c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  previewW;
8820c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  previewH;
8920c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  previewColorFormat;
9020c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  videoW;
9120c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  videoH;
9220c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  videoColorFormat;
9320c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  pictureW;
9420c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  pictureH;
9520c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  pictureColorFormat;
9620c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  thumbnailW;
9720c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  thumbnailH;
9820c516838913956e6f86347b305fe29506e2b491Jiho Chang
9920c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  antiBandingList;
10020c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  antiBanding;
10120c516838913956e6f86347b305fe29506e2b491Jiho Chang
10220c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  effectList;
10320c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  effect;
10420c516838913956e6f86347b305fe29506e2b491Jiho Chang
10520c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  flashModeList;
10620c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  flashMode;
10720c516838913956e6f86347b305fe29506e2b491Jiho Chang
10820c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  focusModeList;
10920c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  focusMode;
11020c516838913956e6f86347b305fe29506e2b491Jiho Chang
11120c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  sceneModeList;
11220c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  sceneMode;
11320c516838913956e6f86347b305fe29506e2b491Jiho Chang
11420c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  whiteBalanceList;
11520c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  whiteBalance;
11620c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool autoWhiteBalanceLockSupported;
11720c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool autoWhiteBalanceLock;
11820c516838913956e6f86347b305fe29506e2b491Jiho Chang
11920c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  rotation;
12020c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  minExposure;
12120c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  maxExposure;
12220c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  exposure;
12320c516838913956e6f86347b305fe29506e2b491Jiho Chang
12420c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool autoExposureLockSupported;
12520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool autoExposureLock;
12620c516838913956e6f86347b305fe29506e2b491Jiho Chang
12720c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  fps;
12820c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  focalLengthNum;
12920c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  focalLengthDen;
13020c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool videoStabilization;
13120c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  maxNumMeteringAreas;
13220c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  maxNumDetectedFaces;
13320c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  maxNumFocusAreas;
13420c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  maxZoom;
13520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool hwZoomSupported;
13620c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  zoom;
13720c516838913956e6f86347b305fe29506e2b491Jiho Chang
13820c516838913956e6f86347b305fe29506e2b491Jiho Chang    long gpsLatitude;
13920c516838913956e6f86347b305fe29506e2b491Jiho Chang    long gpsLongitude;
14020c516838913956e6f86347b305fe29506e2b491Jiho Chang    long gpsAltitude;
14120c516838913956e6f86347b305fe29506e2b491Jiho Chang    long gpsTimestamp;
14220c516838913956e6f86347b305fe29506e2b491Jiho Chang
14320c516838913956e6f86347b305fe29506e2b491Jiho Chang    // Additional API.
14420c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  angle;
14520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool antiShake;
14620c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool beautyShot;
14720c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  brightness;
14820c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  contrast;
14920c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool gamma;
15020c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool odc;
15120c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  hue;
15220c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  iso;
15320c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  metering;
15420c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool objectTracking;
15520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool objectTrackingStart;
15620c516838913956e6f86347b305fe29506e2b491Jiho Chang
15720c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  saturation;
15820c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  sharpness;
15920c516838913956e6f86347b305fe29506e2b491Jiho Chang    int  shotMode;
16020c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool slowAE;
16120c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool smartAuto;
16220c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool touchAfStart;
16320c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool wdr;
16420c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool tdnr;
16520c516838913956e6f86347b305fe29506e2b491Jiho Chang
16620c516838913956e6f86347b305fe29506e2b491Jiho Changpublic:
16720c516838913956e6f86347b305fe29506e2b491Jiho Chang    ExynosCameraInfo();
16820c516838913956e6f86347b305fe29506e2b491Jiho Chang};
16920c516838913956e6f86347b305fe29506e2b491Jiho Chang
17020c516838913956e6f86347b305fe29506e2b491Jiho Changstruct ExynosCameraInfoM5M0 : public ExynosCameraInfo
17120c516838913956e6f86347b305fe29506e2b491Jiho Chang{
17220c516838913956e6f86347b305fe29506e2b491Jiho Changpublic:
17320c516838913956e6f86347b305fe29506e2b491Jiho Chang    ExynosCameraInfoM5M0();
17420c516838913956e6f86347b305fe29506e2b491Jiho Chang};
17520c516838913956e6f86347b305fe29506e2b491Jiho Chang
17620c516838913956e6f86347b305fe29506e2b491Jiho Changstruct ExynosCameraInfoS5K6A3 : public ExynosCameraInfo
17720c516838913956e6f86347b305fe29506e2b491Jiho Chang{
17820c516838913956e6f86347b305fe29506e2b491Jiho Changpublic:
17920c516838913956e6f86347b305fe29506e2b491Jiho Chang    ExynosCameraInfoS5K6A3();
18020c516838913956e6f86347b305fe29506e2b491Jiho Chang};
18120c516838913956e6f86347b305fe29506e2b491Jiho Chang
18220c516838913956e6f86347b305fe29506e2b491Jiho Changstruct ExynosCameraInfoS5K4E5 : public ExynosCameraInfo
18320c516838913956e6f86347b305fe29506e2b491Jiho Chang{
18420c516838913956e6f86347b305fe29506e2b491Jiho Changpublic:
18520c516838913956e6f86347b305fe29506e2b491Jiho Chang    ExynosCameraInfoS5K4E5();
18620c516838913956e6f86347b305fe29506e2b491Jiho Chang};
18720c516838913956e6f86347b305fe29506e2b491Jiho Chang
18820c516838913956e6f86347b305fe29506e2b491Jiho Chang//! ExynosCamera
18920c516838913956e6f86347b305fe29506e2b491Jiho Chang/*!
19020c516838913956e6f86347b305fe29506e2b491Jiho Chang * \ingroup Exynos
19120c516838913956e6f86347b305fe29506e2b491Jiho Chang */
19220c516838913956e6f86347b305fe29506e2b491Jiho Changclass ExynosCamera : public virtual RefBase {
19320c516838913956e6f86347b305fe29506e2b491Jiho Chang
19420c516838913956e6f86347b305fe29506e2b491Jiho Chang///////////////////////////////////////////////////
19520c516838913956e6f86347b305fe29506e2b491Jiho Chang// Google Official API : Camera.Parameters
19620c516838913956e6f86347b305fe29506e2b491Jiho Chang// http://developer.android.com/reference/android/hardware/Camera.Parameters.html
19720c516838913956e6f86347b305fe29506e2b491Jiho Chang///////////////////////////////////////////////////
19820c516838913956e6f86347b305fe29506e2b491Jiho Changpublic:
19920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Camera ID
20020c516838913956e6f86347b305fe29506e2b491Jiho Chang    enum CAMERA_ID {
20120c516838913956e6f86347b305fe29506e2b491Jiho Chang        CAMERA_ID_BACK  = 0,   //!<
20220c516838913956e6f86347b305fe29506e2b491Jiho Chang        CAMERA_ID_FRONT = 1,   //!<
20320c516838913956e6f86347b305fe29506e2b491Jiho Chang    };
20420c516838913956e6f86347b305fe29506e2b491Jiho Chang
20520c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Anti banding
20620c516838913956e6f86347b305fe29506e2b491Jiho Chang    enum {
20720c516838913956e6f86347b305fe29506e2b491Jiho Chang        ANTIBANDING_AUTO = (1 << 0), //!< \n
20820c516838913956e6f86347b305fe29506e2b491Jiho Chang        ANTIBANDING_50HZ = (1 << 1), //!< \n
20920c516838913956e6f86347b305fe29506e2b491Jiho Chang        ANTIBANDING_60HZ = (1 << 2), //!< \n
21020c516838913956e6f86347b305fe29506e2b491Jiho Chang        ANTIBANDING_OFF  = (1 << 3), //!< \n
21120c516838913956e6f86347b305fe29506e2b491Jiho Chang    };
21220c516838913956e6f86347b305fe29506e2b491Jiho Chang
21320c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Effect
21420c516838913956e6f86347b305fe29506e2b491Jiho Chang    enum {
21520c516838913956e6f86347b305fe29506e2b491Jiho Chang        EFFECT_NONE       = (1 << 0), //!< \n
21620c516838913956e6f86347b305fe29506e2b491Jiho Chang        EFFECT_MONO       = (1 << 1), //!< \n
21720c516838913956e6f86347b305fe29506e2b491Jiho Chang        EFFECT_NEGATIVE   = (1 << 2), //!< \n
21820c516838913956e6f86347b305fe29506e2b491Jiho Chang        EFFECT_SOLARIZE   = (1 << 3), //!< \n
21920c516838913956e6f86347b305fe29506e2b491Jiho Chang        EFFECT_SEPIA      = (1 << 4), //!< \n
22020c516838913956e6f86347b305fe29506e2b491Jiho Chang        EFFECT_POSTERIZE  = (1 << 5), //!< \n
22120c516838913956e6f86347b305fe29506e2b491Jiho Chang        EFFECT_WHITEBOARD = (1 << 6), //!< \n
22220c516838913956e6f86347b305fe29506e2b491Jiho Chang        EFFECT_BLACKBOARD = (1 << 7), //!< \n
22320c516838913956e6f86347b305fe29506e2b491Jiho Chang        EFFECT_AQUA       = (1 << 8), //!< \n
22420c516838913956e6f86347b305fe29506e2b491Jiho Chang    };
22520c516838913956e6f86347b305fe29506e2b491Jiho Chang
22620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Flash mode
22720c516838913956e6f86347b305fe29506e2b491Jiho Chang    enum {
22820c516838913956e6f86347b305fe29506e2b491Jiho Chang        FLASH_MODE_OFF     = (1 << 0), //!< \n
22920c516838913956e6f86347b305fe29506e2b491Jiho Chang        FLASH_MODE_AUTO    = (1 << 1), //!< \n
23020c516838913956e6f86347b305fe29506e2b491Jiho Chang        FLASH_MODE_ON      = (1 << 2), //!< \n
23120c516838913956e6f86347b305fe29506e2b491Jiho Chang        FLASH_MODE_RED_EYE = (1 << 3), //!< \n
23220c516838913956e6f86347b305fe29506e2b491Jiho Chang        FLASH_MODE_TORCH   = (1 << 4), //!< \n
23320c516838913956e6f86347b305fe29506e2b491Jiho Chang    };
23420c516838913956e6f86347b305fe29506e2b491Jiho Chang
23520c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Flash mode
23620c516838913956e6f86347b305fe29506e2b491Jiho Chang    enum {
23720c516838913956e6f86347b305fe29506e2b491Jiho Chang        FOCUS_MODE_AUTO               = (1 << 0), //!< \n
23820c516838913956e6f86347b305fe29506e2b491Jiho Chang        FOCUS_MODE_INFINITY           = (1 << 1), //!< \n
23920c516838913956e6f86347b305fe29506e2b491Jiho Chang        FOCUS_MODE_MACRO              = (1 << 2), //!< \n
24020c516838913956e6f86347b305fe29506e2b491Jiho Chang        FOCUS_MODE_FIXED              = (1 << 3), //!< \n
24120c516838913956e6f86347b305fe29506e2b491Jiho Chang        FOCUS_MODE_EDOF               = (1 << 4), //!< \n
24220c516838913956e6f86347b305fe29506e2b491Jiho Chang        FOCUS_MODE_CONTINUOUS_VIDEO   = (1 << 5), //!< \n
24320c516838913956e6f86347b305fe29506e2b491Jiho Chang        FOCUS_MODE_CONTINUOUS_PICTURE = (1 << 6), //!< \n
24420c516838913956e6f86347b305fe29506e2b491Jiho Chang    };
24520c516838913956e6f86347b305fe29506e2b491Jiho Chang
24620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Scene mode
24720c516838913956e6f86347b305fe29506e2b491Jiho Chang    enum {
24820c516838913956e6f86347b305fe29506e2b491Jiho Chang        SCENE_MODE_AUTO           = (1 << 0), //!< \n
24920c516838913956e6f86347b305fe29506e2b491Jiho Chang        SCENE_MODE_ACTION         = (1 << 1), //!< \n
25020c516838913956e6f86347b305fe29506e2b491Jiho Chang        SCENE_MODE_PORTRAIT       = (1 << 2), //!< \n
25120c516838913956e6f86347b305fe29506e2b491Jiho Chang        SCENE_MODE_LANDSCAPE      = (1 << 3), //!< \n
25220c516838913956e6f86347b305fe29506e2b491Jiho Chang        SCENE_MODE_NIGHT          = (1 << 4), //!< \n
25320c516838913956e6f86347b305fe29506e2b491Jiho Chang        SCENE_MODE_NIGHT_PORTRAIT = (1 << 5), //!< \n
25420c516838913956e6f86347b305fe29506e2b491Jiho Chang        SCENE_MODE_THEATRE        = (1 << 6), //!< \n
25520c516838913956e6f86347b305fe29506e2b491Jiho Chang        SCENE_MODE_BEACH          = (1 << 7), //!< \n
25620c516838913956e6f86347b305fe29506e2b491Jiho Chang        SCENE_MODE_SNOW           = (1 << 8), //!< \n
25720c516838913956e6f86347b305fe29506e2b491Jiho Chang        SCENE_MODE_SUNSET         = (1 << 9), //!< \n
25820c516838913956e6f86347b305fe29506e2b491Jiho Chang        SCENE_MODE_STEADYPHOTO    = (1 << 10), //!< \n
25920c516838913956e6f86347b305fe29506e2b491Jiho Chang        SCENE_MODE_FIREWORKS      = (1 << 11), //!< \n
26020c516838913956e6f86347b305fe29506e2b491Jiho Chang        SCENE_MODE_SPORTS         = (1 << 12), //!< \n
26120c516838913956e6f86347b305fe29506e2b491Jiho Chang        SCENE_MODE_PARTY          = (1 << 13), //!< \n
26220c516838913956e6f86347b305fe29506e2b491Jiho Chang        SCENE_MODE_CANDLELIGHT    = (1 << 14), //!< \n
26320c516838913956e6f86347b305fe29506e2b491Jiho Chang    };
26420c516838913956e6f86347b305fe29506e2b491Jiho Chang
26520c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! White balance
26620c516838913956e6f86347b305fe29506e2b491Jiho Chang    enum {
26720c516838913956e6f86347b305fe29506e2b491Jiho Chang        WHITE_BALANCE_AUTO             = (1 << 0), //!< \n
26820c516838913956e6f86347b305fe29506e2b491Jiho Chang        WHITE_BALANCE_INCANDESCENT     = (1 << 1), //!< \n
26920c516838913956e6f86347b305fe29506e2b491Jiho Chang        WHITE_BALANCE_FLUORESCENT      = (1 << 2), //!< \n
27020c516838913956e6f86347b305fe29506e2b491Jiho Chang        WHITE_BALANCE_WARM_FLUORESCENT = (1 << 3), //!< \n
27120c516838913956e6f86347b305fe29506e2b491Jiho Chang        WHITE_BALANCE_DAYLIGHT         = (1 << 4), //!< \n
27220c516838913956e6f86347b305fe29506e2b491Jiho Chang        WHITE_BALANCE_CLOUDY_DAYLIGHT  = (1 << 5), //!< \n
27320c516838913956e6f86347b305fe29506e2b491Jiho Chang        WHITE_BALANCE_TWILIGHT         = (1 << 6), //!< \n
27420c516838913956e6f86347b305fe29506e2b491Jiho Chang        WHITE_BALANCE_SHADE            = (1 << 7), //!< \n
27520c516838913956e6f86347b305fe29506e2b491Jiho Chang    };
27620c516838913956e6f86347b305fe29506e2b491Jiho Chang
27720c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Jpeg Qualtiy
27820c516838913956e6f86347b305fe29506e2b491Jiho Chang    enum JPEG_QUALITY {
27920c516838913956e6f86347b305fe29506e2b491Jiho Chang        JPEG_QUALITY_MIN        = 0,    //!<
28020c516838913956e6f86347b305fe29506e2b491Jiho Chang        JPEG_QUALITY_ECONOMY    = 70,   //!<
28120c516838913956e6f86347b305fe29506e2b491Jiho Chang        JPEG_QUALITY_NORMAL     = 80,   //!<
28220c516838913956e6f86347b305fe29506e2b491Jiho Chang        JPEG_QUALITY_SUPERFINE  = 90,   //!<
28320c516838913956e6f86347b305fe29506e2b491Jiho Chang        JPEG_QUALITY_MAX        = 100,  //!<
28420c516838913956e6f86347b305fe29506e2b491Jiho Chang    };
28520c516838913956e6f86347b305fe29506e2b491Jiho Chang
28620c516838913956e6f86347b305fe29506e2b491Jiho Changprivate:
28720c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Constructor
28820c516838913956e6f86347b305fe29506e2b491Jiho Chang    ExynosCamera();
28920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Destructor
29020c516838913956e6f86347b305fe29506e2b491Jiho Chang    virtual ~ExynosCamera();
29120c516838913956e6f86347b305fe29506e2b491Jiho Chang
29220c516838913956e6f86347b305fe29506e2b491Jiho Changpublic:
29320c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the Camera instance
29420c516838913956e6f86347b305fe29506e2b491Jiho Chang    static ExynosCamera* createInstance(void)
29520c516838913956e6f86347b305fe29506e2b491Jiho Chang    {
29620c516838913956e6f86347b305fe29506e2b491Jiho Chang        static ExynosCamera singleton;
29720c516838913956e6f86347b305fe29506e2b491Jiho Chang        return &singleton;
29820c516838913956e6f86347b305fe29506e2b491Jiho Chang    }
29920c516838913956e6f86347b305fe29506e2b491Jiho Chang
30020c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Create the instance
30120c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            create(int cameraId);
30220c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Destroy the instance
30320c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            destroy(void);
30420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Check if the instance was created
30520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            flagCreate(void);
30620c516838913956e6f86347b305fe29506e2b491Jiho Chang
30720c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets current camera_id
30820c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getCameraId(void);
30920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets camera sensor name
31020c516838913956e6f86347b305fe29506e2b491Jiho Chang    char           *getCameraName(void);
31120c516838913956e6f86347b305fe29506e2b491Jiho Chang
31220c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets file descriptor by gotten open() for preview
31320c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getPreviewFd(void);
31420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets file descriptor by gotten open() for recording
31520c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getVideoFd(void);
31620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets file descriptor by gotten open() for snapshot
31720c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getPictureFd(void);
31820c516838913956e6f86347b305fe29506e2b491Jiho Chang
31920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Starts capturing and drawing preview frames to the screen.
32020c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            startPreview(void);
32120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Stop preview
32220c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            stopPreview(void);
32320c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Check preview start
32420c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            flagStartPreview(void);
32520c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets preview's max buffer
32620c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getPreviewMaxBuf(void);
32720c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets preview's buffer
32820c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setPreviewBuf(ExynosBuffer *buf);
32920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets preview's buffer
33020c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getPreviewBuf(ExynosBuffer *buf);
33120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Put(dq) preview's buffer
33220c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            putPreviewBuf(ExynosBuffer *buf);
33320c516838913956e6f86347b305fe29506e2b491Jiho Chang
33420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets video's width, height
33520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setVideoSize(int w, int h);
33620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets video's width, height
33720c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getVideoSize(int *w, int *h);
33820c516838913956e6f86347b305fe29506e2b491Jiho Chang
33920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets video's color format
34020c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setVideoFormat(int colorFormat);
34120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets video's color format
34220c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getVideoFormat(void);
34320c516838913956e6f86347b305fe29506e2b491Jiho Chang
34420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Start video
34520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            startVideo(void);
34620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Stop video
34720c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            stopVideo(void);
34820c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Check video start
34920c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            flagStartVideo(void);
35020c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets video's buffer
35120c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getVideoMaxBuf(void);
35220c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets video's buffer
35320c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setVideoBuf(ExynosBuffer *buf);
35420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets video's buffer
35520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getVideoBuf(ExynosBuffer *buf);
35620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Put(dq) video's buffer
35720c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            putVideoBuf(ExynosBuffer *buf);
35820c516838913956e6f86347b305fe29506e2b491Jiho Chang
35920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Start snapshot
36020c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            startPicture(void);
36120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Stop snapshot
36220c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            stopPicture(void);
36320c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Check snapshot start
36420c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            flagStartPicture(void);
36520c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets snapshot's buffer
36620c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getPictureMaxBuf(void);
36720c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets snapshot's buffer
36820c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setPictureBuf(ExynosBuffer *buf);
36920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets snapshot's buffer
37020c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getPictureBuf(ExynosBuffer *buf);
37120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Put(dq) snapshot's buffer
37220c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            putPictureBuf(ExynosBuffer *buf);
37320c516838913956e6f86347b305fe29506e2b491Jiho Chang
37420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Encode JPEG from YUV
37520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            yuv2Jpeg(ExynosBuffer *yuvBuf, ExynosBuffer *jpegBuf);
37620c516838913956e6f86347b305fe29506e2b491Jiho Chang
37720c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Starts camera auto-focus and registers a callback function to run when the camera is focused.
37820c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            autoFocus(void);
37920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Cancel auto-focus operation
38020c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            cancelAutoFocus(void);
38120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets auto-focus result whether success or not
38220c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getFucusModeResult(void);
38320c516838913956e6f86347b305fe29506e2b491Jiho Chang
38420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Starts the face detection.
38520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            startFaceDetection(void);
38620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Stop face detection
38720c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            stopFaceDetection(void);
38820c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the face detection started
38920c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            flagStartFaceDetection(void);
39020c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Lock or unlock face detection operation
39120c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setFaceDetectLock(bool toggle);
39220c516838913956e6f86347b305fe29506e2b491Jiho Chang
39320c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Zooms to the requested value smoothly.
39420c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            startSmoothZoom(int value);
39520c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Stop the face detection.
39620c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            stopSmoothZoom(void);
39720c516838913956e6f86347b305fe29506e2b491Jiho Chang
39820c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the current antibanding setting.
39920c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getAntibanding(void);
40020c516838913956e6f86347b305fe29506e2b491Jiho Chang
40120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the state of the auto-exposure lock.
40220c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getAutoExposureLock(void);
40320c516838913956e6f86347b305fe29506e2b491Jiho Chang
40420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the state of the auto-white balance lock.
40520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getAutoWhiteBalanceLock(void);
40620c516838913956e6f86347b305fe29506e2b491Jiho Chang
40720c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the current color effect setting.
40820c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getColorEffect(void);
40920c516838913956e6f86347b305fe29506e2b491Jiho Chang
41020c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the detected faces areas.
41120c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getDetectedFacesAreas(int num, int *id, int *score, ExynosRect *face, ExynosRect *leftEye, ExynosRect *rightEye, ExynosRect *mouth);
41220c516838913956e6f86347b305fe29506e2b491Jiho Chang
41320c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the detected faces areas. (Using ExynosRect2)
41420c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getDetectedFacesAreas(int num, int *id, int *score, ExynosRect2 *face, ExynosRect2 *leftEye, ExynosRect2 *rightEye, ExynosRect2 *mouth);
41520c516838913956e6f86347b305fe29506e2b491Jiho Chang
41620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the current exposure compensation index.
41720c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getExposureCompensation(void);
41820c516838913956e6f86347b305fe29506e2b491Jiho Chang
41920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the exposure compensation step.
42020c516838913956e6f86347b305fe29506e2b491Jiho Chang    float           getExposureCompensationStep(void);
42120c516838913956e6f86347b305fe29506e2b491Jiho Chang
42220c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the current flash mode setting.
42320c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getFlashMode(void);
42420c516838913956e6f86347b305fe29506e2b491Jiho Chang
42520c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the focal length (in millimeter) of the camera.
42620c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getFocalLength(int *num, int *den);
42720c516838913956e6f86347b305fe29506e2b491Jiho Chang
42820c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the current focus areas.
42920c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getFocusAreas(ExynosRect *rects);
43020c516838913956e6f86347b305fe29506e2b491Jiho Chang
43120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the distances from the camera to where an object appears to be in focus.
43220c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getFocusDistances(float *output);
43320c516838913956e6f86347b305fe29506e2b491Jiho Chang
43420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the current focus mode setting.
43520c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getFocusMode(void);
43620c516838913956e6f86347b305fe29506e2b491Jiho Chang
43720c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the horizontal angle of view in degrees.
43820c516838913956e6f86347b305fe29506e2b491Jiho Chang    float           getHorizontalViewAngle(void);
43920c516838913956e6f86347b305fe29506e2b491Jiho Chang
44020c516838913956e6f86347b305fe29506e2b491Jiho Chang    //int             getInt(String key);
44120c516838913956e6f86347b305fe29506e2b491Jiho Chang
44220c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Returns the quality setting for the JPEG picture.
44320c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getJpegQuality(void);
44420c516838913956e6f86347b305fe29506e2b491Jiho Chang
44520c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Returns the quality setting for the EXIF thumbnail in Jpeg picture.
44620c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getJpegThumbnailQuality(void);
44720c516838913956e6f86347b305fe29506e2b491Jiho Chang
44820c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Returns the dimensions for EXIF thumbnail in Jpeg picture.
44920c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getJpegThumbnailSize(int *w, int *h);
45020c516838913956e6f86347b305fe29506e2b491Jiho Chang
45120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the maximum exposure compensation index.
45220c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getMaxExposureCompensation(void);
45320c516838913956e6f86347b305fe29506e2b491Jiho Chang
45420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the maximum number of detected faces supported.
45520c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getMaxNumDetectedFaces(void);
45620c516838913956e6f86347b305fe29506e2b491Jiho Chang
45720c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the maximum number of focus areas supported.
45820c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getMaxNumFocusAreas(void);
45920c516838913956e6f86347b305fe29506e2b491Jiho Chang
46020c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the maximum number of metering areas supported.
46120c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getMaxNumMeteringAreas(void);
46220c516838913956e6f86347b305fe29506e2b491Jiho Chang
46320c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the maximum zoom value allowed for snapshot.
46420c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getMaxZoom(void);
46520c516838913956e6f86347b305fe29506e2b491Jiho Chang
46620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the current metering areas.
46720c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getMeteringAreas(ExynosRect *rects);
46820c516838913956e6f86347b305fe29506e2b491Jiho Chang
46920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the minimum exposure compensation index.
47020c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getMinExposureCompensation(void);
47120c516838913956e6f86347b305fe29506e2b491Jiho Chang
47220c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Returns the image format for pictures.
47320c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getPictureFormat(void);
47420c516838913956e6f86347b305fe29506e2b491Jiho Chang
47520c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Returns the dimension setting for pictures.
47620c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getPictureSize(int *w, int *h);
47720c516838913956e6f86347b305fe29506e2b491Jiho Chang
47820c516838913956e6f86347b305fe29506e2b491Jiho Chang    //Camera.Size     getPreferredPreviewSizeForVideo();
47920c516838913956e6f86347b305fe29506e2b491Jiho Chang
48020c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Returns the image format for preview frames got from Camera.PreviewCallback.
48120c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getPreviewFormat(void);
48220c516838913956e6f86347b305fe29506e2b491Jiho Chang
48320c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Returns the current minimum and maximum preview fps.
48420c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getPreviewFpsRange(int *min, int *max);
48520c516838913956e6f86347b305fe29506e2b491Jiho Chang
48620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! This method is deprecated. replaced by getPreviewFpsRange(int[])
48720c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getPreviewFrameRate(void);
48820c516838913956e6f86347b305fe29506e2b491Jiho Chang
48920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Returns the dimensions setting for preview pictures.
49020c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getPreviewSize(int *w, int *h);
49120c516838913956e6f86347b305fe29506e2b491Jiho Chang
49220c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets scene mode
49320c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getSceneMode(void);
49420c516838913956e6f86347b305fe29506e2b491Jiho Chang
49520c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the supported antibanding values.
49620c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getSupportedAntibanding(void);
49720c516838913956e6f86347b305fe29506e2b491Jiho Chang
49820c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the supported color effects.
49920c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getSupportedColorEffects(void);
50020c516838913956e6f86347b305fe29506e2b491Jiho Chang
50120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Check whether the target support Flash
50220c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getSupportedFlashModes(void);
50320c516838913956e6f86347b305fe29506e2b491Jiho Chang
50420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the supported focus modes.
50520c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getSupportedFocusModes(void);
50620c516838913956e6f86347b305fe29506e2b491Jiho Chang
50720c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the supported jpeg thumbnail sizes.
50820c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getSupportedJpegThumbnailSizes(int *w, int *h);
50920c516838913956e6f86347b305fe29506e2b491Jiho Chang
51020c516838913956e6f86347b305fe29506e2b491Jiho Chang    // List<Integer>  getSupportedPictureFormats()
51120c516838913956e6f86347b305fe29506e2b491Jiho Chang
51220c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the supported picture sizes.
51320c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getSupportedPictureSizes(int *w, int *h);
51420c516838913956e6f86347b305fe29506e2b491Jiho Chang
51520c516838913956e6f86347b305fe29506e2b491Jiho Chang    //List<Integer>   getSupportedPreviewFormats()
51620c516838913956e6f86347b305fe29506e2b491Jiho Chang
51720c516838913956e6f86347b305fe29506e2b491Jiho Chang    //List<int[]>     getSupportedPreviewFpsRange()
51820c516838913956e6f86347b305fe29506e2b491Jiho Chang
51920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //List<Integer>   getSupportedPreviewFrameRates()
52020c516838913956e6f86347b305fe29506e2b491Jiho Chang
52120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the supported preview sizes.
52220c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getSupportedPreviewSizes(int *w, int *h);
52320c516838913956e6f86347b305fe29506e2b491Jiho Chang
52420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the supported scene modes.
52520c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getSupportedSceneModes(void);
52620c516838913956e6f86347b305fe29506e2b491Jiho Chang
52720c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the supported video frame sizes that can be used by MediaRecorder.
52820c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getSupportedVideoSizes(int *w, int *h);
52920c516838913956e6f86347b305fe29506e2b491Jiho Chang
53020c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the supported white balance.
53120c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getSupportedWhiteBalance(void);
53220c516838913956e6f86347b305fe29506e2b491Jiho Chang
53320c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the vertical angle of view in degrees.
53420c516838913956e6f86347b305fe29506e2b491Jiho Chang    float           getVerticalViewAngle(void);
53520c516838913956e6f86347b305fe29506e2b491Jiho Chang
53620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the current state of video stabilization.
53720c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getVideoStabilization(void);
53820c516838913956e6f86347b305fe29506e2b491Jiho Chang
53920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the current white balance setting.
54020c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getWhiteBalance(void);
54120c516838913956e6f86347b305fe29506e2b491Jiho Chang
54220c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets current zoom value.
54320c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getZoom(void);
54420c516838913956e6f86347b305fe29506e2b491Jiho Chang
54520c516838913956e6f86347b305fe29506e2b491Jiho Chang    //List<Integer>   getZoomRatios()
54620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets max zoom ratio
54720c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getMaxZoomRatio(void);
54820c516838913956e6f86347b305fe29506e2b491Jiho Chang
54920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Returns true if auto-exposure locking is supported.
55020c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            isAutoExposureLockSupported(void);
55120c516838913956e6f86347b305fe29506e2b491Jiho Chang
55220c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Returns true if auto-white balance locking is supported.
55320c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            isAutoWhiteBalanceLockSupported(void);
55420c516838913956e6f86347b305fe29506e2b491Jiho Chang
55520c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Returns true if smooth zoom is supported.
55620c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            isSmoothZoomSupported(void);
55720c516838913956e6f86347b305fe29506e2b491Jiho Chang
55820c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Returns true if video snapshot is supported.
55920c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            isVideoSnapshotSupported(void);
56020c516838913956e6f86347b305fe29506e2b491Jiho Chang
56120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Returns true if video stabilization is supported.
56220c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            isVideoStabilizationSupported(void);
56320c516838913956e6f86347b305fe29506e2b491Jiho Chang
56420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Returns true if zoom is supported.
56520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            isZoomSupported(void);
56620c516838913956e6f86347b305fe29506e2b491Jiho Chang
56720c516838913956e6f86347b305fe29506e2b491Jiho Chang    //void            remove(String key)
56820c516838913956e6f86347b305fe29506e2b491Jiho Chang
56920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //void            removeGpsData()
57020c516838913956e6f86347b305fe29506e2b491Jiho Chang
57120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //void            set(String key, String value)
57220c516838913956e6f86347b305fe29506e2b491Jiho Chang
57320c516838913956e6f86347b305fe29506e2b491Jiho Chang    //void            set(String key, int value)
57420c516838913956e6f86347b305fe29506e2b491Jiho Chang
57520c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets the antibanding.
57620c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setAntibanding(int value);
57720c516838913956e6f86347b305fe29506e2b491Jiho Chang
57820c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets the auto-exposure lock state.
57920c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setAutoExposureLock(bool toggle);
58020c516838913956e6f86347b305fe29506e2b491Jiho Chang
58120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets the auto-white balance lock state.
58220c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setAutoWhiteBalanceLock(bool toggle);
58320c516838913956e6f86347b305fe29506e2b491Jiho Chang
58420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets the current color effect setting.
58520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setColorEffect(int value);
58620c516838913956e6f86347b305fe29506e2b491Jiho Chang
58720c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets the exposure compensation index.
58820c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setExposureCompensation(int value);
58920c516838913956e6f86347b305fe29506e2b491Jiho Chang
59020c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets the flash mode.
59120c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setFlashMode(int value);
59220c516838913956e6f86347b305fe29506e2b491Jiho Chang
59320c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets focus z.
59420c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setFocusAreas(int num, ExynosRect* rects, int *weights);
59520c516838913956e6f86347b305fe29506e2b491Jiho Chang
59620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets focus areas. (Using ExynosRect2)
59720c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setFocusAreas(int num, ExynosRect2* rect2s, int *weights);
59820c516838913956e6f86347b305fe29506e2b491Jiho Chang
59920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets the focus mode.
60020c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setFocusMode(int value);
60120c516838913956e6f86347b305fe29506e2b491Jiho Chang
60220c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets GPS altitude.
60320c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setGpsAltitude(const char *gpsAltitude);
60420c516838913956e6f86347b305fe29506e2b491Jiho Chang
60520c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets GPS latitude coordinate.
60620c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setGpsLatitude(const char *gpsLatitude);
60720c516838913956e6f86347b305fe29506e2b491Jiho Chang
60820c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets GPS longitude coordinate.
60920c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setGpsLongitude(const char *gpsLongitude);
61020c516838913956e6f86347b305fe29506e2b491Jiho Chang
61120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets GPS processing method.
61220c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setGpsProcessingMethod(const char *gpsProcessingMethod);
61320c516838913956e6f86347b305fe29506e2b491Jiho Chang
61420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets GPS timestamp.
61520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setGpsTimeStamp(const char *gpsTimestamp);
61620c516838913956e6f86347b305fe29506e2b491Jiho Chang
61720c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets Jpeg quality of captured picture.
61820c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setJpegQuality(int quality);
61920c516838913956e6f86347b305fe29506e2b491Jiho Chang
62020c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets the quality of the EXIF thumbnail in Jpeg picture.
62120c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setJpegThumbnailQuality(int quality);
62220c516838913956e6f86347b305fe29506e2b491Jiho Chang
62320c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets the dimensions for EXIF thumbnail in Jpeg picture.
62420c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setJpegThumbnailSize(int w, int h);
62520c516838913956e6f86347b305fe29506e2b491Jiho Chang
62620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets metering areas.
62720c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setMeteringAreas(int num, ExynosRect  *rects, int *weights);
62820c516838913956e6f86347b305fe29506e2b491Jiho Chang
62920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets metering areas.(Using ExynosRect2)
63020c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setMeteringAreas(int num, ExynosRect2 *rect2s, int *weights);
63120c516838913956e6f86347b305fe29506e2b491Jiho Chang
63220c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets the image format for pictures.
63320c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setPictureFormat(int colorFormat);
63420c516838913956e6f86347b305fe29506e2b491Jiho Chang
63520c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets the dimensions for pictures.
63620c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setPictureSize(int w, int h);
63720c516838913956e6f86347b305fe29506e2b491Jiho Chang
63820c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets the image format for preview pictures.
63920c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setPreviewFormat(int colorFormat);
64020c516838913956e6f86347b305fe29506e2b491Jiho Chang
64120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //void            setPreviewFpsRange(int min, int max)
64220c516838913956e6f86347b305fe29506e2b491Jiho Chang
64320c516838913956e6f86347b305fe29506e2b491Jiho Chang    // ! This method is deprecated. replaced by setPreviewFpsRange(int, int)
64420c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setPreviewFrameRate(int fps);
64520c516838913956e6f86347b305fe29506e2b491Jiho Chang
64620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets the dimensions for preview pictures.
64720c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setPreviewSize(int w, int h);
64820c516838913956e6f86347b305fe29506e2b491Jiho Chang
64920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets recording mode hint.
65020c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setRecordingHint(bool hint);
65120c516838913956e6f86347b305fe29506e2b491Jiho Chang
65220c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets the rotation angle in degrees relative to the orientation of the camera.
65320c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setRotation(int rotation);
65420c516838913956e6f86347b305fe29506e2b491Jiho Chang
65520c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the rotation angle in degrees relative to the orientation of the camera.
65620c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getRotation(void);
65720c516838913956e6f86347b305fe29506e2b491Jiho Chang
65820c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets the scene mode.
65920c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setSceneMode(int value);
66020c516838913956e6f86347b305fe29506e2b491Jiho Chang
66120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Enables and disables video stabilization.
66220c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setVideoStabilization(bool toggle);
66320c516838913956e6f86347b305fe29506e2b491Jiho Chang
66420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets the white balance.
66520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setWhiteBalance(int value);
66620c516838913956e6f86347b305fe29506e2b491Jiho Chang
66720c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets current zoom value.
66820c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setZoom(int value);
66920c516838913956e6f86347b305fe29506e2b491Jiho Chang
67020c516838913956e6f86347b305fe29506e2b491Jiho Chang    //void            unflatten(String flattened)
67120c516838913956e6f86347b305fe29506e2b491Jiho Chang
67220c516838913956e6f86347b305fe29506e2b491Jiho Changprivate:
67320c516838913956e6f86347b305fe29506e2b491Jiho Chang    enum MODE
67420c516838913956e6f86347b305fe29506e2b491Jiho Chang    {
67520c516838913956e6f86347b305fe29506e2b491Jiho Chang        PREVIEW_MODE  = 0,
67620c516838913956e6f86347b305fe29506e2b491Jiho Chang        VIDEO_MODE,
67720c516838913956e6f86347b305fe29506e2b491Jiho Chang        PICTURE_MODE,
67820c516838913956e6f86347b305fe29506e2b491Jiho Chang    };
67920c516838913956e6f86347b305fe29506e2b491Jiho Chang
68020c516838913956e6f86347b305fe29506e2b491Jiho Chang    struct devInfo {
68120c516838913956e6f86347b305fe29506e2b491Jiho Chang        int    fd;
68220c516838913956e6f86347b305fe29506e2b491Jiho Chang        pollfd events;
68320c516838913956e6f86347b305fe29506e2b491Jiho Chang        bool   flagStart;
68420c516838913956e6f86347b305fe29506e2b491Jiho Chang    };
68520c516838913956e6f86347b305fe29506e2b491Jiho Chang
68620c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            m_flagCreate;
68720c516838913956e6f86347b305fe29506e2b491Jiho Chang
68820c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             m_cameraId;
68920c516838913956e6f86347b305fe29506e2b491Jiho Chang
69020c516838913956e6f86347b305fe29506e2b491Jiho Chang    ExynosCameraInfo  *m_defaultCameraInfo;
69120c516838913956e6f86347b305fe29506e2b491Jiho Chang    ExynosCameraInfo  *m_curCameraInfo;
69220c516838913956e6f86347b305fe29506e2b491Jiho Chang
69320c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             m_jpegQuality;
69420c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             m_jpegThumbnailQuality;
69520c516838913956e6f86347b305fe29506e2b491Jiho Chang
69620c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             m_currentZoom;
69720c516838913956e6f86347b305fe29506e2b491Jiho Chang
69820c516838913956e6f86347b305fe29506e2b491Jiho Chang    // v4l2 sub-dev file description
69920c516838913956e6f86347b305fe29506e2b491Jiho Chang    devInfo         m_sensorDev;
70020c516838913956e6f86347b305fe29506e2b491Jiho Chang    devInfo         m_mipiDev;
70120c516838913956e6f86347b305fe29506e2b491Jiho Chang    devInfo         m_fliteDev;
70220c516838913956e6f86347b305fe29506e2b491Jiho Chang    devInfo         m_gscPreviewDev;
70320c516838913956e6f86347b305fe29506e2b491Jiho Chang    devInfo         m_gscVideoDev;
70420c516838913956e6f86347b305fe29506e2b491Jiho Chang    devInfo         m_gscPictureDev;
70520c516838913956e6f86347b305fe29506e2b491Jiho Chang
70620c516838913956e6f86347b305fe29506e2b491Jiho Chang    devInfo        *m_previewDev;
70720c516838913956e6f86347b305fe29506e2b491Jiho Chang    devInfo        *m_videoDev;
70820c516838913956e6f86347b305fe29506e2b491Jiho Chang    devInfo        *m_pictureDev;
70920c516838913956e6f86347b305fe29506e2b491Jiho Chang
71020c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            m_tryPreviewStop;
71120c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            m_tryVideoStop;
71220c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            m_tryPictureStop;
71320c516838913956e6f86347b305fe29506e2b491Jiho Chang
71420c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            m_flagStartFaceDetection;
71520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            m_flagAutoFocusRunning;
71620c516838913956e6f86347b305fe29506e2b491Jiho Chang
71720c516838913956e6f86347b305fe29506e2b491Jiho Chang    char            m_cameraName[32];
71820c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            m_internalISP;
71920c516838913956e6f86347b305fe29506e2b491Jiho Chang
72020c516838913956e6f86347b305fe29506e2b491Jiho Chang    // media controller variable
72120c516838913956e6f86347b305fe29506e2b491Jiho Chang    struct media_device *m_media;
72220c516838913956e6f86347b305fe29506e2b491Jiho Chang    struct media_entity *m_sensorEntity;
72320c516838913956e6f86347b305fe29506e2b491Jiho Chang    struct media_entity *m_mipiEntity;
72420c516838913956e6f86347b305fe29506e2b491Jiho Chang    struct media_entity *m_fliteSdEntity;
72520c516838913956e6f86347b305fe29506e2b491Jiho Chang    struct media_entity *m_fliteVdEntity;
72620c516838913956e6f86347b305fe29506e2b491Jiho Chang    struct media_entity *m_gscSdEntity;
72720c516838913956e6f86347b305fe29506e2b491Jiho Chang    struct media_entity *m_gscVdEntity;
72820c516838913956e6f86347b305fe29506e2b491Jiho Chang    struct media_entity *m_ispSensorEntity;
72920c516838913956e6f86347b305fe29506e2b491Jiho Chang    struct media_entity *m_ispFrontEntity;
73020c516838913956e6f86347b305fe29506e2b491Jiho Chang    struct media_entity *m_ispBackEntity;
73120c516838913956e6f86347b305fe29506e2b491Jiho Chang    struct media_entity *m_ispScalercEntity;
73220c516838913956e6f86347b305fe29506e2b491Jiho Chang    struct media_entity *m_ispScalerpEntity;
73320c516838913956e6f86347b305fe29506e2b491Jiho Chang    struct media_entity *m_isp3dnrEntity;
73420c516838913956e6f86347b305fe29506e2b491Jiho Chang
73520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool   m_validPreviewBuf[VIDEO_MAX_FRAME];
73620c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool   m_validVideoBuf[VIDEO_MAX_FRAME];
73720c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool   m_validPictureBuf[VIDEO_MAX_FRAME];
73820c516838913956e6f86347b305fe29506e2b491Jiho Chang
73920c516838913956e6f86347b305fe29506e2b491Jiho Chang    struct ExynosBuffer m_previewBuf[VIDEO_MAX_FRAME];
74020c516838913956e6f86347b305fe29506e2b491Jiho Chang    struct ExynosBuffer m_videoBuf[VIDEO_MAX_FRAME];
74120c516838913956e6f86347b305fe29506e2b491Jiho Chang    struct ExynosBuffer m_pictureBuf[VIDEO_MAX_FRAME];
74220c516838913956e6f86347b305fe29506e2b491Jiho Chang
74320c516838913956e6f86347b305fe29506e2b491Jiho Chang    exif_attribute_t mExifInfo;
74420c516838913956e6f86347b305fe29506e2b491Jiho Chang
74520c516838913956e6f86347b305fe29506e2b491Jiho Changprivate:
74620c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            m_setWidthHeight(int mode,
74720c516838913956e6f86347b305fe29506e2b491Jiho Chang                                     int fd,
74820c516838913956e6f86347b305fe29506e2b491Jiho Chang                                     struct pollfd *event,
74920c516838913956e6f86347b305fe29506e2b491Jiho Chang                                     int w,
75020c516838913956e6f86347b305fe29506e2b491Jiho Chang                                     int h,
75120c516838913956e6f86347b305fe29506e2b491Jiho Chang                                     int colorFormat,
75220c516838913956e6f86347b305fe29506e2b491Jiho Chang                                     struct ExynosBuffer *buf,
75320c516838913956e6f86347b305fe29506e2b491Jiho Chang                                     bool *validBuf);
75420c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            m_setZoom(int fd, int zoom, int w, int h);
75520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            m_setCrop(int fd, int w, int h, int zoom);
75620c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            m_getCropRect(unsigned int  src_w,  unsigned int   src_h,
75720c516838913956e6f86347b305fe29506e2b491Jiho Chang                              unsigned int  dst_w,  unsigned int   dst_h,
75820c516838913956e6f86347b305fe29506e2b491Jiho Chang                              unsigned int *crop_x, unsigned int *crop_y,
75920c516838913956e6f86347b305fe29506e2b491Jiho Chang                              unsigned int *crop_w, unsigned int *crop_h,
76020c516838913956e6f86347b305fe29506e2b491Jiho Chang                              int           zoom);
76120c516838913956e6f86347b305fe29506e2b491Jiho Chang
76220c516838913956e6f86347b305fe29506e2b491Jiho Chang    void            m_setExifFixedAttribute(void);
76320c516838913956e6f86347b305fe29506e2b491Jiho Chang    void            m_setExifChangedAttribute(void);
76420c516838913956e6f86347b305fe29506e2b491Jiho Chang    void            m_secRect2SecRect2(ExynosRect *rect, ExynosRect2 *rect2);
76520c516838913956e6f86347b305fe29506e2b491Jiho Chang    void            m_secRect22SecRect(ExynosRect2 *rect2, ExynosRect *rect);
76620c516838913956e6f86347b305fe29506e2b491Jiho Chang    void            m_printFormat(int colorFormat, const char *arg);
76720c516838913956e6f86347b305fe29506e2b491Jiho Chang
76820c516838913956e6f86347b305fe29506e2b491Jiho Chang///////////////////////////////////////////////////
76920c516838913956e6f86347b305fe29506e2b491Jiho Chang// Additional API.
77020c516838913956e6f86347b305fe29506e2b491Jiho Chang///////////////////////////////////////////////////
77120c516838913956e6f86347b305fe29506e2b491Jiho Changpublic:
77220c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Metering
77320c516838913956e6f86347b305fe29506e2b491Jiho Chang    enum {
77420c516838913956e6f86347b305fe29506e2b491Jiho Chang        METERING_MODE_AVERAGE = (1 << 0), //!< \n
77520c516838913956e6f86347b305fe29506e2b491Jiho Chang        METERING_MODE_CENTER  = (1 << 1), //!< \n
77620c516838913956e6f86347b305fe29506e2b491Jiho Chang        METERING_MODE_MATRIX  = (1 << 2), //!< \n
77720c516838913956e6f86347b305fe29506e2b491Jiho Chang        METERING_MODE_SPOT    = (1 << 3), //!< \n
77820c516838913956e6f86347b305fe29506e2b491Jiho Chang    };
77920c516838913956e6f86347b305fe29506e2b491Jiho Chang
78020c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Contrast
78120c516838913956e6f86347b305fe29506e2b491Jiho Chang    enum {
78220c516838913956e6f86347b305fe29506e2b491Jiho Chang        CONTRAST_AUTO    = (1 << 0), //!< \n
78320c516838913956e6f86347b305fe29506e2b491Jiho Chang        CONTRAST_MINUS_2 = (1 << 1), //!< \n
78420c516838913956e6f86347b305fe29506e2b491Jiho Chang        CONTRAST_MINUS_1 = (1 << 2), //!< \n
78520c516838913956e6f86347b305fe29506e2b491Jiho Chang        CONTRAST_DEFAULT = (1 << 3), //!< \n
78620c516838913956e6f86347b305fe29506e2b491Jiho Chang        CONTRAST_PLUS_1  = (1 << 4), //!< \n
78720c516838913956e6f86347b305fe29506e2b491Jiho Chang        CONTRAST_PLUS_2  = (1 << 5), //!< \n
78820c516838913956e6f86347b305fe29506e2b491Jiho Chang    };
78920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Camera Shot mode
79020c516838913956e6f86347b305fe29506e2b491Jiho Chang    enum SHOT_MODE {
79120c516838913956e6f86347b305fe29506e2b491Jiho Chang        SHOT_MODE_SINGLE        = 0, //!<
79220c516838913956e6f86347b305fe29506e2b491Jiho Chang        SHOT_MODE_CONTINUOUS    = 1, //!<
79320c516838913956e6f86347b305fe29506e2b491Jiho Chang        SHOT_MODE_PANORAMA      = 2, //!<
79420c516838913956e6f86347b305fe29506e2b491Jiho Chang        SHOT_MODE_SMILE         = 3, //!<
79520c516838913956e6f86347b305fe29506e2b491Jiho Chang        SHOT_MODE_SELF          = 6, //!<
79620c516838913956e6f86347b305fe29506e2b491Jiho Chang    };
79720c516838913956e6f86347b305fe29506e2b491Jiho Chang
79820c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets camera angle
79920c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setAngle(int angle);
80020c516838913956e6f86347b305fe29506e2b491Jiho Chang
80120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets camera angle
80220c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getAngle(void);
80320c516838913956e6f86347b305fe29506e2b491Jiho Chang
80420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets metering areas.
80520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setMeteringMode(int value);
80620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets metering
80720c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getMeteringMode(void);
80820c516838913956e6f86347b305fe29506e2b491Jiho Chang
80920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets Top-down mirror
81020c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setTopDownMirror(void);
81120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets Left-right mirror
81220c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setLRMirror(void);
81320c516838913956e6f86347b305fe29506e2b491Jiho Chang
81420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets brightness
81520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setBrightness(int brightness);
81620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets brightness
81720c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getBrightness(void);
81820c516838913956e6f86347b305fe29506e2b491Jiho Chang
81920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets ISO
82020c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setISO(int iso);
82120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets ISO
82220c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getISO(void);
82320c516838913956e6f86347b305fe29506e2b491Jiho Chang
82420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets Contrast
82520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setContrast(int value);
82620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets Contrast
82720c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getContrast(void);
82820c516838913956e6f86347b305fe29506e2b491Jiho Chang
82920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets Saturation
83020c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setSaturation(int saturation);
83120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets Saturation
83220c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getSaturation(void);
83320c516838913956e6f86347b305fe29506e2b491Jiho Chang
83420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets Sharpness
83520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setSharpness(int sharpness);
83620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets Sharpness
83720c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getSharpness(void);
83820c516838913956e6f86347b305fe29506e2b491Jiho Chang
83920c516838913956e6f86347b305fe29506e2b491Jiho Chang    // ! Sets Hue
84020c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setHue(int hue);
84120c516838913956e6f86347b305fe29506e2b491Jiho Chang    // ! Gets Hue
84220c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getHue(void);
84320c516838913956e6f86347b305fe29506e2b491Jiho Chang
84420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets WDR
84520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setWDR(bool toggle);
84620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets WDR
84720c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getWDR(void);
84820c516838913956e6f86347b305fe29506e2b491Jiho Chang
84920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets anti shake
85020c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setAntiShake(bool toggle);
85120c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets anti shake
85220c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getAntiShake(void);
85320c516838913956e6f86347b305fe29506e2b491Jiho Chang
85420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets object tracking
85520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setObjectTracking(bool toggle);
85620c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets object tracking
85720c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getObjectTracking(void);
85820c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Start or stop object tracking operation
85920c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setObjectTrackingStart(bool toggle);
86020c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets status of object tracking operation
86120c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getObjectTrackingStatus(void);
86220c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets x, y position for object tracking operation
86320c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setObjectPosition(int x, int y);
86420c516838913956e6f86347b305fe29506e2b491Jiho Chang
86520c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets smart auto
86620c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setSmartAuto(bool toggle);
86720c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets smart auto
86820c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getSmartAuto(void);
86920c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets the status of smart auto operation
87020c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getSmartAutoStatus(void);
87120c516838913956e6f86347b305fe29506e2b491Jiho Chang
87220c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets beauty shot
87320c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setBeautyShot(bool toggle);
87420c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets beauty shot
87520c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getBeautyShot(void);
87620c516838913956e6f86347b305fe29506e2b491Jiho Chang
87720c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Start or stop the touch auto focus operation
87820c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setTouchAFStart(bool toggle);
87920c516838913956e6f86347b305fe29506e2b491Jiho Chang
88020c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets gamma
88120c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setGamma(bool toggle);
88220c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets gamma
88320c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getGamma(void);
88420c516838913956e6f86347b305fe29506e2b491Jiho Chang
88520c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets ODC
88620c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setODC(bool toggle);
88720c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets ODC
88820c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getODC(void);
88920c516838913956e6f86347b305fe29506e2b491Jiho Chang
89020c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets Slow AE
89120c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setSlowAE(bool toggle);
89220c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets Slow AE
89320c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            getSlowAE(void);
89420c516838913956e6f86347b305fe29506e2b491Jiho Chang
89520c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets Shot mode
89620c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            setShotMode(int shotMode);
89720c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets Shot mode
89820c516838913956e6f86347b305fe29506e2b491Jiho Chang    int             getShotMode(void);
89920c516838913956e6f86347b305fe29506e2b491Jiho Chang
90020c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Sets 3DNR
90120c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            set3DNR(bool toggle);
90220c516838913956e6f86347b305fe29506e2b491Jiho Chang    //! Gets 3DNR
90320c516838913956e6f86347b305fe29506e2b491Jiho Chang    bool            get3DNR(void);
90420c516838913956e6f86347b305fe29506e2b491Jiho Chang};
90520c516838913956e6f86347b305fe29506e2b491Jiho Chang
90620c516838913956e6f86347b305fe29506e2b491Jiho Chang#endif // EXYNOS_CAMERA_H__