/* Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#define LOG_TAG "QCameraParametersIntf"
// System dependencies
#include <utils/Mutex.h>
// Camera dependencies
#include "QCameraParameters.h"
#include "QCameraParametersIntf.h"
#include "QCameraTrace.h"
extern "C" {
#include "mm_camera_dbg.h"
}
namespace qcamera {
#define CHECK_PARAM_INTF(impl) LOG_ALWAYS_FATAL_IF(((impl) == NULL), "impl is NULL!")
QCameraParametersIntf::QCameraParametersIntf() :
mImpl(NULL)
{
}
QCameraParametersIntf::~QCameraParametersIntf()
{
{
Mutex::Autolock lock(mLock);
if (mImpl) {
delete mImpl;
mImpl = NULL;
}
}
}
int32_t QCameraParametersIntf::allocate()
{
Mutex::Autolock lock(mLock);
mImpl = new QCameraParameters();
if (!mImpl) {
LOGE("Out of memory");
return NO_MEMORY;
}
return mImpl->allocate();
}
int32_t QCameraParametersIntf::init(cam_capability_t *capabilities,
mm_camera_vtbl_t *mmOps,
QCameraAdjustFPS *adjustFPS)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->init(capabilities, mmOps, adjustFPS);
}
void QCameraParametersIntf::deinit()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
mImpl->deinit();
}
int32_t QCameraParametersIntf::updateParameters(const String8& params, bool &needRestart)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->updateParameters(params, needRestart);
}
int32_t QCameraParametersIntf::commitParameters()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->commitParameters();
}
char* QCameraParametersIntf::QCameraParametersIntf::getParameters()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getParameters();
}
void QCameraParametersIntf::getPreviewFpsRange(int *min_fps, int *max_fps) const
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
mImpl->getPreviewFpsRange(min_fps, max_fps);
}
#ifdef TARGET_TS_MAKEUP
bool QCameraParametersIntf::getTsMakeupInfo(int &whiteLevel, int &cleanLevel) const
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getTsMakeupInfo(whiteLevel, cleanLevel);
}
#endif
int QCameraParametersIntf::getPreviewHalPixelFormat()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getPreviewHalPixelFormat();
}
int32_t QCameraParametersIntf::getStreamRotation(cam_stream_type_t streamType,
cam_pp_feature_config_t &featureConfig,
cam_dimension_t &dim)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getStreamRotation(streamType, featureConfig, dim);
}
int32_t QCameraParametersIntf::getStreamFormat(cam_stream_type_t streamType,
cam_format_t &format)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getStreamFormat(streamType, format);
}
int32_t QCameraParametersIntf::getStreamDimension(cam_stream_type_t streamType,
cam_dimension_t &dim)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getStreamDimension(streamType, dim);
}
void QCameraParametersIntf::getThumbnailSize(int *width, int *height) const
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
mImpl->getThumbnailSize(width, height);
}
uint8_t QCameraParametersIntf::getZSLBurstInterval()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getZSLBurstInterval();
}
uint8_t QCameraParametersIntf::getZSLQueueDepth()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getZSLQueueDepth();
}
uint8_t QCameraParametersIntf::getZSLBackLookCount()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getZSLBackLookCount();
}
uint8_t QCameraParametersIntf::getMaxUnmatchedFramesInQueue()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getMaxUnmatchedFramesInQueue();
}
bool QCameraParametersIntf::isZSLMode()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isZSLMode();
}
bool QCameraParametersIntf::isRdiMode()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isRdiMode();
}
bool QCameraParametersIntf::isSecureMode()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isSecureMode();
}
bool QCameraParametersIntf::isNoDisplayMode()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isNoDisplayMode();
}
bool QCameraParametersIntf::isWNREnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isWNREnabled();
}
bool QCameraParametersIntf::isTNRSnapshotEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isTNRSnapshotEnabled();
}
int32_t QCameraParametersIntf::getCDSMode()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getCDSMode();
}
bool QCameraParametersIntf::isLTMForSeeMoreEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isLTMForSeeMoreEnabled();
}
bool QCameraParametersIntf::isHfrMode()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isHfrMode();
}
void QCameraParametersIntf::getHfrFps(cam_fps_range_t &pFpsRange)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
mImpl->getHfrFps(pFpsRange);
}
uint8_t QCameraParametersIntf::getNumOfSnapshots()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getNumOfSnapshots();
}
uint8_t QCameraParametersIntf::getNumOfRetroSnapshots()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getNumOfRetroSnapshots();
}
uint8_t QCameraParametersIntf::getNumOfExtraHDRInBufsIfNeeded()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getNumOfExtraHDRInBufsIfNeeded();
}
uint8_t QCameraParametersIntf::getNumOfExtraHDROutBufsIfNeeded()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getNumOfExtraHDROutBufsIfNeeded();
}
bool QCameraParametersIntf::getRecordingHintValue()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getRecordingHintValue();
}
uint32_t QCameraParametersIntf::getJpegQuality()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getJpegQuality();
}
uint32_t QCameraParametersIntf::getRotation()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getRotation();
}
uint32_t QCameraParametersIntf::getDeviceRotation()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getDeviceRotation();
}
uint32_t QCameraParametersIntf::getJpegExifRotation()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getJpegExifRotation();
}
bool QCameraParametersIntf::useJpegExifRotation()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->useJpegExifRotation();
}
int32_t QCameraParametersIntf::getEffectValue()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getEffectValue();
}
bool QCameraParametersIntf::isInstantAECEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isInstantAECEnabled();
}
bool QCameraParametersIntf::isInstantCaptureEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isInstantCaptureEnabled();
}
uint8_t QCameraParametersIntf::getAecFrameBoundValue()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getAecFrameBoundValue();
}
uint8_t QCameraParametersIntf::getAecSkipDisplayFrameBound()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getAecSkipDisplayFrameBound();
}
int32_t QCameraParametersIntf::getExifDateTime(
String8 &dateTime, String8 &subsecTime)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getExifDateTime(dateTime, subsecTime);
}
int32_t QCameraParametersIntf::getExifFocalLength(rat_t *focalLength)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getExifFocalLength(focalLength);
}
uint16_t QCameraParametersIntf::getExifIsoSpeed()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getExifIsoSpeed();
}
int32_t QCameraParametersIntf::getExifGpsProcessingMethod(char *gpsProcessingMethod, uint32_t &count)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getExifGpsProcessingMethod(gpsProcessingMethod, count);
}
int32_t QCameraParametersIntf::getExifLatitude(rat_t *latitude, char *latRef)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getExifLatitude(latitude, latRef);
}
int32_t QCameraParametersIntf::getExifLongitude(rat_t *longitude, char *lonRef)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getExifLongitude(longitude, lonRef);
}
int32_t QCameraParametersIntf::getExifAltitude(rat_t *altitude, char *altRef)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getExifAltitude(altitude, altRef);
}
int32_t QCameraParametersIntf::getExifGpsDateTimeStamp(char *gpsDateStamp, uint32_t bufLen, rat_t *gpsTimeStamp)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getExifGpsDateTimeStamp(gpsDateStamp, bufLen, gpsTimeStamp);
}
bool QCameraParametersIntf::isVideoBuffersCached()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isVideoBuffersCached();
}
int32_t QCameraParametersIntf::updateFocusDistances(cam_focus_distances_info_t *focusDistances)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->updateFocusDistances(focusDistances);
}
bool QCameraParametersIntf::isAEBracketEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isAEBracketEnabled();
}
int32_t QCameraParametersIntf::setAEBracketing()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->setAEBracketing();
}
bool QCameraParametersIntf::isFpsDebugEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isFpsDebugEnabled();
}
bool QCameraParametersIntf::isHistogramEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isHistogramEnabled();
}
bool QCameraParametersIntf::isSceneSelectionEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isSceneSelectionEnabled();
}
int32_t QCameraParametersIntf::setSelectedScene(cam_scene_mode_type scene)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->setSelectedScene(scene);
}
cam_scene_mode_type QCameraParametersIntf::getSelectedScene()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getSelectedScene();
}
bool QCameraParametersIntf::isFaceDetectionEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isFaceDetectionEnabled();
}
int32_t QCameraParametersIntf::setFaceDetectionOption(bool enabled)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->setFaceDetectionOption(enabled);
}
int32_t QCameraParametersIntf::setHistogram(bool enabled)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->setHistogram(enabled);
}
int32_t QCameraParametersIntf::setFaceDetection(bool enabled, bool initCommit)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->setFaceDetection(enabled, initCommit);
}
int32_t QCameraParametersIntf::setFrameSkip(enum msm_vfe_frame_skip_pattern pattern)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->setFrameSkip(pattern);
}
qcamera_thermal_mode QCameraParametersIntf::getThermalMode()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getThermalMode();
}
int32_t QCameraParametersIntf::updateRecordingHintValue(int32_t value)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->updateRecordingHintValue(value);
}
int32_t QCameraParametersIntf::setHDRAEBracket(cam_exp_bracketing_t hdrBracket)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->setHDRAEBracket(hdrBracket);
}
bool QCameraParametersIntf::isHDREnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isHDREnabled();
}
bool QCameraParametersIntf::isAutoHDREnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isAutoHDREnabled();
}
int32_t QCameraParametersIntf::stopAEBracket()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->stopAEBracket();
}
int32_t QCameraParametersIntf::updateRAW(cam_dimension_t max_dim)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->updateRAW(max_dim);
}
bool QCameraParametersIntf::isDISEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isDISEnabled();
}
cam_is_type_t QCameraParametersIntf::getISType()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getISType();
}
uint8_t QCameraParametersIntf::getMobicatMask()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getMobicatMask();
}
cam_focus_mode_type QCameraParametersIntf::getFocusMode() const
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getFocusMode();
}
int32_t QCameraParametersIntf::setNumOfSnapshot()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->setNumOfSnapshot();
}
int32_t QCameraParametersIntf::adjustPreviewFpsRange(cam_fps_range_t *fpsRange)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->adjustPreviewFpsRange(fpsRange);
}
bool QCameraParametersIntf::isJpegPictureFormat()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isJpegPictureFormat();
}
bool QCameraParametersIntf::isNV16PictureFormat()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isNV16PictureFormat();
}
bool QCameraParametersIntf::isNV21PictureFormat()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isNV21PictureFormat();
}
cam_denoise_process_type_t QCameraParametersIntf::getDenoiseProcessPlate(
cam_intf_parm_type_t type)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getDenoiseProcessPlate(type);
}
int32_t QCameraParametersIntf::getMaxPicSize(cam_dimension_t &dim)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getMaxPicSize(dim);
}
int QCameraParametersIntf::getFlipMode(cam_stream_type_t streamType)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getFlipMode(streamType);
}
bool QCameraParametersIntf::isSnapshotFDNeeded()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isSnapshotFDNeeded();
}
bool QCameraParametersIntf::isHDR1xFrameEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isHDR1xFrameEnabled();
}
bool QCameraParametersIntf::isYUVFrameInfoNeeded()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isYUVFrameInfoNeeded();
}
const char* QCameraParametersIntf::getFrameFmtString(cam_format_t fmt)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getFrameFmtString(fmt);
}
bool QCameraParametersIntf::isHDR1xExtraBufferNeeded()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isHDR1xExtraBufferNeeded();
}
bool QCameraParametersIntf::isHDROutputCropEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isHDROutputCropEnabled();
}
bool QCameraParametersIntf::isPreviewFlipChanged()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isPreviewFlipChanged();
}
bool QCameraParametersIntf::isVideoFlipChanged()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isVideoFlipChanged();
}
bool QCameraParametersIntf::isSnapshotFlipChanged()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isSnapshotFlipChanged();
}
void QCameraParametersIntf::setHDRSceneEnable(bool bflag)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
mImpl->setHDRSceneEnable(bflag);
}
int32_t QCameraParametersIntf::updateAWBParams(cam_awb_params_t &awb_params)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->updateAWBParams(awb_params);
}
const char * QCameraParametersIntf::getASDStateString(cam_auto_scene_t scene)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getASDStateString(scene);
}
bool QCameraParametersIntf::isHDRThumbnailProcessNeeded()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isHDRThumbnailProcessNeeded();
}
void QCameraParametersIntf::setMinPpMask(cam_feature_mask_t min_pp_mask)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
mImpl->setMinPpMask(min_pp_mask);
}
bool QCameraParametersIntf::setStreamConfigure(bool isCapture,
bool previewAsPostview, bool resetConfig)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->setStreamConfigure(isCapture,
previewAsPostview, resetConfig);
}
int32_t QCameraParametersIntf::addOnlineRotation(uint32_t rotation,
uint32_t streamId, int32_t device_rotation)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->addOnlineRotation(rotation, streamId, device_rotation);
}
uint8_t QCameraParametersIntf::getNumOfExtraBuffersForImageProc()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getNumOfExtraBuffersForImageProc();
}
uint8_t QCameraParametersIntf::getNumOfExtraBuffersForVideo()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getNumOfExtraBuffersForVideo();
}
uint8_t QCameraParametersIntf::getNumOfExtraBuffersForPreview()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getNumOfExtraBuffersForPreview();
}
uint32_t QCameraParametersIntf::getExifBufIndex(uint32_t captureIndex)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getExifBufIndex(captureIndex);
}
bool QCameraParametersIntf::needThumbnailReprocess(cam_feature_mask_t *pFeatureMask)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->needThumbnailReprocess(pFeatureMask);
}
bool QCameraParametersIntf::isUbiFocusEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isUbiFocusEnabled();
}
bool QCameraParametersIntf::isChromaFlashEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isChromaFlashEnabled();
}
bool QCameraParametersIntf::isHighQualityNoiseReductionMode()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isHighQualityNoiseReductionMode();
}
bool QCameraParametersIntf::isTruePortraitEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isTruePortraitEnabled();
}
size_t QCameraParametersIntf::getTPMaxMetaSize()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getTPMaxMetaSize();
}
bool QCameraParametersIntf::isSeeMoreEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isSeeMoreEnabled();
}
bool QCameraParametersIntf::isStillMoreEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isStillMoreEnabled();
}
bool QCameraParametersIntf::isOptiZoomEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isOptiZoomEnabled();
}
int32_t QCameraParametersIntf::commitAFBracket(cam_af_bracketing_t afBracket)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->commitAFBracket(afBracket);
}
int32_t QCameraParametersIntf::set3ALock(bool lock3A)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->set3ALock(lock3A);
}
int32_t QCameraParametersIntf::setAndCommitZoom(int zoom_level)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->setAndCommitZoom(zoom_level);
}
uint8_t QCameraParametersIntf::getBurstCountForAdvancedCapture()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getBurstCountForAdvancedCapture();
}
uint32_t QCameraParametersIntf::getNumberInBufsForSingleShot()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getNumberInBufsForSingleShot();
}
uint32_t QCameraParametersIntf::getNumberOutBufsForSingleShot()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getNumberOutBufsForSingleShot();
}
int32_t QCameraParametersIntf::setLongshotEnable(bool enable)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->setLongshotEnable(enable);
}
String8 QCameraParametersIntf::dump()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->dump();
}
bool QCameraParametersIntf::isUbiRefocus()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isUbiRefocus();
}
uint32_t QCameraParametersIntf::getRefocusMaxMetaSize()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getRefocusMaxMetaSize();
}
uint8_t QCameraParametersIntf::getRefocusOutputCount()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getRefocusOutputCount();
}
bool QCameraParametersIntf::generateThumbFromMain()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->generateThumbFromMain();
}
void QCameraParametersIntf::updateCurrentFocusPosition(cam_focus_pos_info_t &cur_pos_info)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
mImpl->updateCurrentFocusPosition(cur_pos_info);
}
void QCameraParametersIntf::updateAEInfo(cam_3a_params_t &ae_params)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
mImpl->updateAEInfo(ae_params);
}
bool QCameraParametersIntf::isAdvCamFeaturesEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isAdvCamFeaturesEnabled();
}
int32_t QCameraParametersIntf::setAecLock(const char *aecStr)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->setAecLock(aecStr);
}
int32_t QCameraParametersIntf::updateDebugLevel()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->updateDebugLevel();
}
bool QCameraParametersIntf::is4k2kVideoResolution()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->is4k2kVideoResolution();
}
bool QCameraParametersIntf::isUBWCEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isUBWCEnabled();
}
int QCameraParametersIntf::getBrightness()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getBrightness();
}
int32_t QCameraParametersIntf::updateOisValue(bool oisValue)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->updateOisValue(oisValue);
}
int32_t QCameraParametersIntf::setIntEvent(cam_int_evt_params_t params)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->setIntEvent(params);
}
bool QCameraParametersIntf::getofflineRAW()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getofflineRAW();
}
int32_t QCameraParametersIntf::updatePpFeatureMask(cam_stream_type_t stream_type)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->updatePpFeatureMask(stream_type);
}
int32_t QCameraParametersIntf::getStreamPpMask(cam_stream_type_t stream_type,
cam_feature_mask_t &pp_mask)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getStreamPpMask(stream_type, pp_mask);
}
int32_t QCameraParametersIntf::getSharpness()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getSharpness();
}
int32_t QCameraParametersIntf::getEffect()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getEffect();
}
int32_t QCameraParametersIntf::updateFlashMode(cam_flash_mode_t flash_mode)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->updateFlashMode(flash_mode);
}
int32_t QCameraParametersIntf::configureAEBracketing(cam_capture_frame_config_t &frame_config)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->configureAEBracketing(frame_config);
}
int32_t QCameraParametersIntf::configureHDRBracketing(cam_capture_frame_config_t &frame_config)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->configureHDRBracketing(frame_config);
}
int32_t QCameraParametersIntf::configFrameCapture(bool commitSettings)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->configFrameCapture(commitSettings);
}
int32_t QCameraParametersIntf::resetFrameCapture(bool commitSettings)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->resetFrameCapture(commitSettings);
}
cam_still_more_t QCameraParametersIntf::getStillMoreSettings()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getStillMoreSettings();
}
void QCameraParametersIntf::setStillMoreSettings(cam_still_more_t stillmore_config)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
mImpl->setStillMoreSettings(stillmore_config);
}
cam_still_more_t QCameraParametersIntf::getStillMoreCapability()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getStillMoreCapability();
}
cam_dyn_img_data_t QCameraParametersIntf::getDynamicImgData()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getDynamicImgData();
}
void QCameraParametersIntf::setDynamicImgData(cam_dyn_img_data_t d)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
mImpl->setDynamicImgData(d);
}
int32_t QCameraParametersIntf::getParmZoomLevel()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getParmZoomLevel();
}
int8_t QCameraParametersIntf::getReprocCount()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getReprocCount();
}
int8_t QCameraParametersIntf::getCurPPCount()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getCurPPCount();
}
void QCameraParametersIntf::setReprocCount()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
mImpl->setReprocCount();
}
bool QCameraParametersIntf::isPostProcScaling()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isPostProcScaling();
}
bool QCameraParametersIntf::isLLNoiseEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isLLNoiseEnabled();
}
void QCameraParametersIntf::setCurPPCount(int8_t count)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
mImpl->setCurPPCount(count);
}
int32_t QCameraParametersIntf::setToneMapMode(uint32_t value, bool initCommit)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->setToneMapMode(value, initCommit);
}
void QCameraParametersIntf::setTintless(bool enable)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
mImpl->setTintless(enable);
}
uint8_t QCameraParametersIntf::getLongshotStages()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getLongshotStages();
}
int8_t QCameraParametersIntf::getBufBatchCount()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getBufBatchCount();
}
int8_t QCameraParametersIntf::getVideoBatchSize()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getVideoBatchSize();
}
int32_t QCameraParametersIntf::setManualCaptureMode(
QCameraManualCaptureModes value)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->setManualCaptureMode(value);
}
QCameraManualCaptureModes QCameraParametersIntf::getManualCaptureMode()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getManualCaptureMode();
}
int64_t QCameraParametersIntf::getExposureTime()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getExposureTime();
}
cam_capture_frame_config_t QCameraParametersIntf::getCaptureFrameConfig()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getCaptureFrameConfig();
}
void QCameraParametersIntf::setJpegRotation(int rotation)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
mImpl->setJpegRotation(rotation);
}
uint32_t QCameraParametersIntf::getJpegRotation()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getJpegRotation();
}
void QCameraParametersIntf::setLowLightLevel(cam_low_light_mode_t value)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
mImpl->setLowLightLevel(value);
}
cam_low_light_mode_t QCameraParametersIntf::getLowLightLevel()
{
CHECK_PARAM_INTF(mImpl);
return mImpl->getLowLightLevel();
}
bool QCameraParametersIntf::getLowLightCapture()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getLowLightCapture();
}
bool QCameraParametersIntf::getDcrf()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getDcrf();
}
int32_t QCameraParametersIntf::setRelatedCamSyncInfo(
cam_sync_related_sensors_event_info_t* info)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->setRelatedCamSyncInfo(info);
}
const cam_sync_related_sensors_event_info_t*
QCameraParametersIntf::getRelatedCamSyncInfo(void)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getRelatedCamSyncInfo();
}
int32_t QCameraParametersIntf::setFrameSyncEnabled(
bool enable)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->setFrameSyncEnabled(enable);
}
bool QCameraParametersIntf::isFrameSyncEnabled(void)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isFrameSyncEnabled();
}
int32_t QCameraParametersIntf::getRelatedCamCalibration(
cam_related_system_calibration_data_t* calib)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getRelatedCamCalibration(calib);
}
int32_t QCameraParametersIntf::bundleRelatedCameras(bool sync, uint32_t sessionid)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->bundleRelatedCameras(sync, sessionid);
}
uint8_t QCameraParametersIntf::fdModeInVideo()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->fdModeInVideo();
}
bool QCameraParametersIntf::isOEMFeatEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isOEMFeatEnabled();
}
int32_t QCameraParametersIntf::setZslMode(bool value)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->setZslMode(value);
}
int32_t QCameraParametersIntf::updateZSLModeValue(bool value)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->updateZSLModeValue(value);
}
bool QCameraParametersIntf::isReprocScaleEnabled()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isReprocScaleEnabled();
}
bool QCameraParametersIntf::isUnderReprocScaling()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->isUnderReprocScaling();
}
int32_t QCameraParametersIntf::getPicSizeFromAPK(int &width, int &height)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getPicSizeFromAPK(width, height);
}
int32_t QCameraParametersIntf::checkFeatureConcurrency()
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->checkFeatureConcurrency();
}
int32_t QCameraParametersIntf::setInstantAEC(uint8_t enable, bool initCommit)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->setInstantAEC(enable, initCommit);
}
int32_t QCameraParametersIntf::getAnalysisInfo(
bool fdVideoEnabled,
bool hal3,
uint32_t featureMask,
cam_analysis_info_t *pAnalysisInfo)
{
Mutex::Autolock lock(mLock);
CHECK_PARAM_INTF(mImpl);
return mImpl->getAnalysisInfo(fdVideoEnabled, hal3, featureMask, pAnalysisInfo);
}
}; // namespace qcamera