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