android_device_xiaomi_clover/camera/QCamera2/util/QCameraExtZoomTranslator.cpp

203 lines
6.1 KiB
C++
Raw Permalink Normal View History

/* Copyright (c) 2017, 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 "QCameraExtZoomTranslator"
#include <stdlib.h>
#include <utils/Errors.h>
#include "QCameraExtZoomTranslator.h"
#include <dlfcn.h>
extern "C" {
#include "mm_camera_dbg.h"
}
namespace qcamera {
/*===========================================================================
* FUNCTION : QCameraExtZoomTranslator constructor
*
* DESCRIPTION: class constructor
*
* PARAMETERS : none
*
* RETURN : void
*
*==========================================================================*/
QCameraExtZoomTranslator::QCameraExtZoomTranslator()
{
mLibHandle = NULL;
mInitSuccess = false;
memset(&mInitData, 0, sizeof(zoom_trans_init_data));
}
/*===========================================================================
* FUNCTION : QCameraExtZoomTranslator destructor
*
* DESCRIPTION: class destructor
*
* PARAMETERS : none
*
* RETURN : void
*
*==========================================================================*/
QCameraExtZoomTranslator::~QCameraExtZoomTranslator()
{
// dlclose the lib here and not in deinit
}
/*===========================================================================
* FUNCTION : create
*
* DESCRIPTION: This is a static method to create QCameraExtZoomTranslator object.
* It calls the private constructor of the class and only returns a
* valid object if the library loading succeeds.
*
* PARAMETERS : None
*
* RETURN : Valid object pointer if succeeds
* NULL if fails
*
*==========================================================================*/
QCameraExtZoomTranslator* QCameraExtZoomTranslator::create()
{
QCameraExtZoomTranslator *pZoomTranslator = NULL;
// dlopen and dlsym here and if successful, create zoom translator object
// if (success) {
// pZoomTranslator = new QCameraExtZoomTranslator();
// }
return pZoomTranslator;
}
/*===========================================================================
* FUNCTION : init
*
* DESCRIPTION: This function passes the initialization data to the zoom
* translation library.
*
*
* PARAMETERS :
*@initData : Initialization data
*
* RETURN :
* NO_ERROR : Success
* INVALID_OPERATION : Failure
*
*==========================================================================*/
int32_t QCameraExtZoomTranslator::init(
__unused zoom_trans_init_data initData)
{
int32_t rc = INVALID_OPERATION;
// Pass the initData to the zoom translation lib and if the operation succeeds,
// set rc to NO_ERROR. Set member variable mInitSuccess to true.
return rc;
}
/*===========================================================================
* FUNCTION : getZoomValues
*
* DESCRIPTION: This function passes the user zoom to the zoom translation lib and
* gets back wide and tele zoom values corresponding to that user zoom.
*
*
* PARAMETERS :
*@userZoom : User zoom (zoom index into the zoom table)
*@zoomData : Zoom for wide and tele cameras (zoom index into the zoom table)
*
* RETURN :
* NO_ERROR : Success
* INVALID_OPERATION : Failure
*
*==========================================================================*/
int32_t QCameraExtZoomTranslator::getZoomValues(
__unused uint32_t userZoom,
__unused zoom_data *zoomData)
{
int32_t rc = INVALID_OPERATION;
// Pass the userzoom to the zoom translation lib to return wideZoom and teleZoom values.
// If the operation succeeds, set rc to NO_ERROR.
return rc;
}
/*===========================================================================
* FUNCTION : deInit
*
* DESCRIPTION: This function de-initializes zoom translation lib.
*
*
* PARAMETERS : None
*
* RETURN :
* NO_ERROR : Success
* INVALID_OPERATION : Failure
*
*==========================================================================*/
int32_t QCameraExtZoomTranslator::deInit()
{
int32_t rc = INVALID_OPERATION;
if (mInitSuccess) {
// Deinit the zoom translation lib and if successful, set rc to NO_ERROR.
// Do not dlclose here. dlclose in the destructor
}
return rc;
}
/*===========================================================================
* FUNCTION : isInitialized
*
* DESCRIPTION: Check if the zoom translator is initialized successfully
*
*
* PARAMETERS : None
*
* RETURN :
* true : Initialized successfully
* false : Not initialized
*
*==========================================================================*/
bool QCameraExtZoomTranslator::isInitialized()
{
return mInitSuccess;
}
}; // namespace qcamera