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