12896d129511c499aef15b8162df05fa299860f59Thierry Strudel/* Copyright (c) 2015-2017, The Linux Foundation. All rights reserved.
23d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel *
33d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel * Redistribution and use in source and binary forms, with or without
43d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel * modification, are permitted provided that the following conditions are
53d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel * met:
63d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel *     * Redistributions of source code must retain the above copyright
73d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel *       notice, this list of conditions and the following disclaimer.
83d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel *     * Redistributions in binary form must reproduce the above
93d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel *       copyright notice, this list of conditions and the following
103d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel *       disclaimer in the documentation and/or other materials provided
113d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel *       with the distribution.
123d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel *     * Neither the name of The Linux Foundation nor the names of its
133d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel *       contributors may be used to endorse or promote products derived
143d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel *       from this software without specific prior written permission.
153d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel *
163d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
173d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
183d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
193d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
203d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
213d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
223d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
233d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
243d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
253d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
263d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
273d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel *
283d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel */
293d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
303d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel#ifndef ANDROID_HARDWARE_QCAMERA_PARAMETERS_INTF_H
313d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel#define ANDROID_HARDWARE_QCAMERA_PARAMETERS_INTF_H
323d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
333d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel#include <utils/String8.h>
343d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel#include <utils/Mutex.h>
353d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel#include "cam_intf.h"
363d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel#include "cam_types.h"
373d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel#include "QCameraThermalAdapter.h"
38c2ee3304e16253ceab19f9be91c5da84233940f3Thierry Strudel#include "QCameraFOVControl.h"
393d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
403d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudelextern "C" {
413d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel#include <mm_camera_interface.h>
423d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel#include <mm_jpeg_interface.h>
433d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel}
443d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
453d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudelusing namespace android;
463d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
473d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudelnamespace qcamera {
483d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
493d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudeltypedef cam_manual_capture_type QCameraManualCaptureModes;
503d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
513d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudelclass QCameraAdjustFPS
523d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel{
533d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudelpublic:
543d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    virtual int recalcFPSRange(int &minFPS, int &maxFPS,
553d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel            const float &minVideoFPS, const float &maxVideoFPs,
56c2ee3304e16253ceab19f9be91c5da84233940f3Thierry Strudel            cam_fps_range_t &adjustedRange, bool bRecordingHint) = 0;
573d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    virtual ~QCameraAdjustFPS() {}
583d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel};
593d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
603d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudelclass QCameraParameters;
613d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
623d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudelclass QCameraParametersIntf
633d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel{
643d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudelpublic:
653d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
663d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    // member variables
673d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    QCameraParametersIntf();
683d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    ~QCameraParametersIntf();
693d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
70cca4d9c3be40fe18502f3237f7993b41175ef3a7Thierry Strudel    int32_t allocate(uint8_t bufCount = 1);
713d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t init(cam_capability_t *capabilities,
723d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel                 mm_camera_vtbl_t *mmOps,
73c2ee3304e16253ceab19f9be91c5da84233940f3Thierry Strudel                 QCameraAdjustFPS *adjustFPS,
74c2ee3304e16253ceab19f9be91c5da84233940f3Thierry Strudel                 QCameraFOVControl *fovControl);
753d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
763d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    void deinit();
773d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t updateParameters(const String8& params, bool &needRestart);
783d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t commitParameters();
793d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
803d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    char* getParameters();
813d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    void getPreviewFpsRange(int *min_fps, int *max_fps) const;
823d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel#ifdef TARGET_TS_MAKEUP
833d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool getTsMakeupInfo(int &whiteLevel, int &cleanLevel) const;
843d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel#endif
853d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
863d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int getPreviewHalPixelFormat();
873d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t getStreamRotation(cam_stream_type_t streamType,
883d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel            cam_pp_feature_config_t &featureConfig,
893d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel            cam_dimension_t &dim);
903d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t getStreamFormat(cam_stream_type_t streamType,
913d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel            cam_format_t &format);
929e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel
939e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel    int32_t getStreamSubFormat(
949e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel      cam_stream_type_t streamType, cam_sub_format_type_t &sub_format);
959e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel
969e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel
973d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t getStreamDimension(cam_stream_type_t streamType,
982896d129511c499aef15b8162df05fa299860f59Thierry Strudel            cam_dimension_t &dim, uint32_t cam_type = MM_CAMERA_TYPE_MAIN);
993d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
1003d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    void getThumbnailSize(int *width, int *height) const;
1013d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint8_t getZSLBurstInterval();
1023d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint8_t getZSLQueueDepth();
1033d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint8_t getZSLBackLookCount();
1043d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint8_t getMaxUnmatchedFramesInQueue();
1053d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isZSLMode();
1063d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isRdiMode();
1073d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isSecureMode();
1089ec39c64004dda78086849a21087cb217d0bf6acThierry Strudel    cam_stream_type_t getSecureStreamType();
1093d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isNoDisplayMode();
1103d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isWNREnabled();
1113d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isTNRSnapshotEnabled();
1123d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t getCDSMode();
1133d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isLTMForSeeMoreEnabled();
1143d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isHfrMode();
1153d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    void getHfrFps(cam_fps_range_t &pFpsRange);
1163d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint8_t getNumOfSnapshots();
1173d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint8_t getNumOfRetroSnapshots();
1183d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint8_t getNumOfExtraHDRInBufsIfNeeded();
1193d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint8_t getNumOfExtraHDROutBufsIfNeeded();
1203d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
1213d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool getRecordingHintValue();
1223d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint32_t getJpegQuality();
1233d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint32_t getRotation();
1243d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint32_t getDeviceRotation();
1253d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint32_t getJpegExifRotation();
1263d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool useJpegExifRotation();
1273d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t getEffectValue();
1283d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isInstantAECEnabled();
1293d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isInstantCaptureEnabled();
1303d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint8_t getAecFrameBoundValue();
1313d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint8_t getAecSkipDisplayFrameBound();
1323d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
1333d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t getExifDateTime(String8 &dateTime, String8 &subsecTime);
1343d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t getExifFocalLength(rat_t *focalLenght);
1353d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint16_t getExifIsoSpeed();
1363d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t getExifGpsProcessingMethod(char *gpsProcessingMethod,
1373d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel            uint32_t &count);
1383d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t getExifLatitude(rat_t *latitude, char *latRef);
1393d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t getExifLongitude(rat_t *longitude, char *lonRef);
1403d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t getExifAltitude(rat_t *altitude, char *altRef);
1413d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t getExifGpsDateTimeStamp(char *gpsDateStamp,
1423d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel            uint32_t bufLen, rat_t *gpsTimeStamp);
1433d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isVideoBuffersCached();
1443d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t updateFocusDistances(cam_focus_distances_info_t *focusDistances);
1453d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
1463d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isAEBracketEnabled();
1473d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t setAEBracketing();
1483d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isFpsDebugEnabled();
1493d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isHistogramEnabled();
1503d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isSceneSelectionEnabled();
1519ec39c64004dda78086849a21087cb217d0bf6acThierry Strudel    bool isSmallJpegSizeEnabled();
1523d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t setSelectedScene(cam_scene_mode_type scene);
1533d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    cam_scene_mode_type getSelectedScene();
1543d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isFaceDetectionEnabled();
1553d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t setFaceDetectionOption(bool enabled);
1563d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t setHistogram(bool enabled);
1573d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t setFaceDetection(bool enabled, bool initCommit);
1583d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t setFrameSkip(enum msm_vfe_frame_skip_pattern pattern);
1593d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    qcamera_thermal_mode getThermalMode();
1603d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t updateRecordingHintValue(int32_t value);
1613d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t setHDRAEBracket(cam_exp_bracketing_t hdrBracket);
1623d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isHDREnabled();
1633d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isAutoHDREnabled();
1643d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t stopAEBracket();
1653d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t updateRAW(cam_dimension_t max_dim);
1663d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isDISEnabled();
167cca4d9c3be40fe18502f3237f7993b41175ef3a7Thierry Strudel    bool isAVTimerEnabled();
1689e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel    int32_t setISType();
1699e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel    cam_is_type_t getVideoISType();
1703d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    cam_is_type_t getPreviewISType();
1713d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint8_t getMobicatMask();
1723d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
1733d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    cam_focus_mode_type getFocusMode() const;
1743d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t setNumOfSnapshot();
1753d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t adjustPreviewFpsRange(cam_fps_range_t *fpsRange);
1763d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isJpegPictureFormat();
1773d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isNV16PictureFormat();
1783d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isNV21PictureFormat();
1793d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    cam_denoise_process_type_t getDenoiseProcessPlate(cam_intf_parm_type_t type);
1803d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t getMaxPicSize(cam_dimension_t &dim);
1813d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int getFlipMode(cam_stream_type_t streamType);
1823d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isSnapshotFDNeeded();
1833d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
1843d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isHDR1xFrameEnabled();
1853d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isYUVFrameInfoNeeded();
1863d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    const char*getFrameFmtString(cam_format_t fmt);
1873d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isHDR1xExtraBufferNeeded();
1883d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isHDROutputCropEnabled();
1893d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
1903d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isPreviewFlipChanged();
1913d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isVideoFlipChanged();
1923d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isSnapshotFlipChanged();
19354dc9783295b20e33ec11e132d98a1b8efbf254cThierry Strudel    bool isZoomChanged();
1943d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    void setHDRSceneEnable(bool bflag);
1953d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t updateAWBParams(cam_awb_params_t &awb_params);
1963d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
1973d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    const char *getASDStateString(cam_auto_scene_t scene);
1983d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isHDRThumbnailProcessNeeded();
1993d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    void setMinPpMask(cam_feature_mask_t min_pp_mask);
2003d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool setStreamConfigure(bool isCapture,
2013d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel            bool previewAsPostview, bool resetConfig);
2023d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t addOnlineRotation(uint32_t rotation, uint32_t streamId,
2033d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel            int32_t device_rotation);
2043d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint8_t getNumOfExtraBuffersForImageProc();
2053d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint8_t getNumOfExtraBuffersForVideo();
2063d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint8_t getNumOfExtraBuffersForPreview();
2073d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint32_t getExifBufIndex(uint32_t captureIndex);
2083d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool needThumbnailReprocess(cam_feature_mask_t *pFeatureMask);
2093d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isUbiFocusEnabled();
2103d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isChromaFlashEnabled();
2113d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isHighQualityNoiseReductionMode();
2123d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isTruePortraitEnabled();
2133d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    size_t getTPMaxMetaSize();
2143d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isSeeMoreEnabled();
2153d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isStillMoreEnabled();
2163d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isOptiZoomEnabled();
2173d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
2183d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t commitAFBracket(cam_af_bracketing_t afBracket);
2193d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t set3ALock(bool lock3A);
2203d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t setAndCommitZoom(int zoom_level);
2213d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint8_t getBurstCountForAdvancedCapture();
2223d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint32_t getNumberInBufsForSingleShot();
2233d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint32_t getNumberOutBufsForSingleShot();
2243d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t setLongshotEnable(bool enable);
2253d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    String8 dump();
2263d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isUbiRefocus();
2273d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint32_t getRefocusMaxMetaSize();
2283d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint8_t getRefocusOutputCount();
2293d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool generateThumbFromMain();
2303d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    void updateCurrentFocusPosition(cam_focus_pos_info_t &cur_pos_info);
2313d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    void updateAEInfo(cam_3a_params_t &ae_params);
2323d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isDisplayFrameNeeded();
2333d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isAdvCamFeaturesEnabled();
2343d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t setAecLock(const char *aecStr);
2353d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t updateDebugLevel();
2363d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool is4k2kVideoResolution();
2373d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isUBWCEnabled();
2383d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
2393d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int getBrightness();
2403d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t updateOisValue(bool oisValue);
2413d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t setIntEvent(cam_int_evt_params_t params);
2423d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool getofflineRAW();
2439e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel    bool getQuadraCfa();
2443d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t updatePpFeatureMask(cam_stream_type_t stream_type);
2453d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t getStreamPpMask(cam_stream_type_t stream_type, cam_feature_mask_t &pp_mask);
2463d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t getSharpness();
2473d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t getEffect();
2483d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t updateFlashMode(cam_flash_mode_t flash_mode);
2493d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t configureAEBracketing(cam_capture_frame_config_t &frame_config);
2503d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t configureHDRBracketing(cam_capture_frame_config_t &frame_config);
2513d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t configFrameCapture(bool commitSettings);
25204e026fe14f98a83811cd3a2c04b60b3b501b80cThierry Strudel    int32_t resetFrameCapture(bool commitSettings, bool lowLightEnabled);
2533d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    cam_still_more_t getStillMoreSettings();
2543d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    void setStillMoreSettings(cam_still_more_t stillmore_config);
2553d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    cam_still_more_t getStillMoreCapability();
2563d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    cam_dyn_img_data_t getDynamicImgData();
2573d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    void setDynamicImgData(cam_dyn_img_data_t d);
2583d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
2593d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t getParmZoomLevel();
2603d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int8_t getReprocCount();
2613d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int8_t getCurPPCount();
2623d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    void setReprocCount();
2633d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isPostProcScaling();
2643d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isLLNoiseEnabled();
2653d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    void setCurPPCount(int8_t count);
26604e026fe14f98a83811cd3a2c04b60b3b501b80cThierry Strudel    int32_t setQuadraCfaMode(uint32_t value, bool initCommit);
2673d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t setToneMapMode(uint32_t value, bool initCommit);
2683d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    void setTintless(bool enable);
2693d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint8_t getLongshotStages();
2703d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int8_t getBufBatchCount();
2713d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int8_t getVideoBatchSize();
2723d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
2733d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t setManualCaptureMode(
2743d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel            QCameraManualCaptureModes value = CAM_MANUAL_CAPTURE_TYPE_OFF);
2753d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    QCameraManualCaptureModes getManualCaptureMode();
2763d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int64_t getExposureTime();
2773d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
2783d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    cam_capture_frame_config_t getCaptureFrameConfig();
2793d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    void setJpegRotation(int rotation);
2803d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint32_t getJpegRotation();
2813d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
2823d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    void setLowLightLevel(cam_low_light_mode_t value);
2833d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    cam_low_light_mode_t getLowLightLevel();
2843d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool getLowLightCapture();
2852896d129511c499aef15b8162df05fa299860f59Thierry Strudel    bool isLinkPreviewForLiveShot();
2863d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
2873d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    /* Dual camera specific */
2883d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool getDcrf();
2893d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t setRelatedCamSyncInfo(
2903d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel            cam_sync_related_sensors_event_info_t* info);
2913d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    const cam_sync_related_sensors_event_info_t*
2923d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel            getRelatedCamSyncInfo(void);
2933d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t setFrameSyncEnabled(bool enable);
2943d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isFrameSyncEnabled(void);
2953d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t getRelatedCamCalibration(
2963d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel            cam_related_system_calibration_data_t* calib);
297295a0ca3b68291081f46052e545d5b0dec308710Thierry Strudel    int32_t bundleRelatedCameras(bool sync);
2983d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    uint8_t fdModeInVideo();
2993d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isOEMFeatEnabled();
3009ec39c64004dda78086849a21087cb217d0bf6acThierry Strudel    uint8_t isOEMFeatFrameSkipEnabled();
3013d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
3023d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t setZslMode(bool value);
3033d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t updateZSLModeValue(bool value);
3043d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
3053d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isReprocScaleEnabled();
3063d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    bool isUnderReprocScaling();
3073d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t getPicSizeFromAPK(int &width, int &height);
3083d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
3093d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t checkFeatureConcurrency();
3103d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t setInstantAEC(uint8_t enable, bool initCommit);
3113d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
3123d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    int32_t getAnalysisInfo(
3133d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel        bool fdVideoEnabled,
3143d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel        cam_feature_mask_t featureMask,
3153d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel        cam_analysis_info_t *pAnalysisInfo);
3169e74aae7331f3227542b3e646a0dd658d3467a31Thierry Strudel    int32_t updateDtVc(int32_t *dt, int32_t *vc);
317cca4d9c3be40fe18502f3237f7993b41175ef3a7Thierry Strudel    int32_t SetDualCamera(bool value);
318295a0ca3b68291081f46052e545d5b0dec308710Thierry Strudel    int32_t setCameraControls(int32_t controls);
3192896d129511c499aef15b8162df05fa299860f59Thierry Strudel    int32_t setSwitchCamera(uint32_t camMaster);
3209ec39c64004dda78086849a21087cb217d0bf6acThierry Strudel    int32_t setDeferCamera(cam_dual_camera_defer_cmd_t type);
32154dc9783295b20e33ec11e132d98a1b8efbf254cThierry Strudel    void setBundledSnapshot(bool value);
3229ec39c64004dda78086849a21087cb217d0bf6acThierry Strudel    int32_t getDualLedCalibration();
3232896d129511c499aef15b8162df05fa299860f59Thierry Strudel    bool isDCmAsymmetricSnapMode();
3243d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudelprivate:
3253d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    QCameraParameters *mImpl;
3263d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel    mutable Mutex mLock;
3273d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel};
3283d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
3293d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel}; // namespace qcamera
3303d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel
3313d63919a23d7e7954e160c48c36713267106c3c2Thierry Strudel#endif
332