203 lines
6.1 KiB
C++
203 lines
6.1 KiB
C++
|
/* 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
|