Exemplo n.º 1
0
bool
MtkAtvCam1Device::
onUninit()
{
    MY_LOGD("+");
    //
    //--------------------------------------------------------------------------
    //  (1) Uninitialize Camera Adapter.
    if  ( mpCamAdapter != 0 )
    {
        mpCamAdapter->cancelPicture();
        mpCamAdapter->uninit();
        mpCamAdapter.clear();
    }
    //
    //--------------------------------------------------------------------------
    //  (2) Uninit Base
    Cam1DeviceBase::onUninit();
    //--------------------------------------------------------------------------
    //  (3) Cloase 3A
#if '1'==MTKCAM_HAVE_3A_HAL
    if  ( mp3AHal )
    {
        mp3AHal->destroyInstance();
        mp3AHal = NULL;
    }
#endif  //MTKCAM_HAVE_3A_HAL
    //--------------------------------------------------------------------------
    //  (4) Close Sensor
#if '1'==MTKCAM_HAVE_SENSOR_HAL
    if  ( mpSensorHal )
    {
        mpSensorHal->uninit();
        mpSensorHal->destroyInstance();
        mpSensorHal = NULL;
        MY_LOGD("SensorHal::destroyInstance()");
    }
#endif  //MTKCAM_HAVE_SENSOR_HAL
    //--------------------------------------------------------------------------

    IResManager* pResManager = IResManager::getInstance();
    //
    if  ( pResManager != NULL )
    {
        if(!(pResManager->close("MtkAtvCam1Device")))
        {
            MY_LOGE("pResManager->close fail");
        }
    }

    //
    MY_LOGD("-");
    return  true;
}
Exemplo n.º 2
0
bool
StereoCam1Device::
onUninit()
{
    MY_LOGD("+");
    AutoCPTLog cptlog(Event_Hal_DefaultCamDevice_uninit);
    Utils::CamProfile  profile(__FUNCTION__, "StereoCam1Device");
    //
    if( !waitThreadInitDone() )
    {
        MY_LOGE("init in thread failed");
    }
    //--------------------------------------------------------------------------
    //  (1) Uninit Base
    {
        CAM_TRACE_NAME("uninit(base)");
        Cam1DeviceBase::onUninit();
        profile.print("Cam1DeviceBase::onUninit() -");
    }
    //--------------------------------------------------------------------------
    //  (2) Close 3A
#if '1'==MTKCAM_HAVE_3A_HAL
    {
        CAM_TRACE_NAME("uninit(3A)");
        CPTLogStr(Event_Hal_DefaultCamDevice_init, CPTFlagSeparator, "3A Hal +");
#ifdef MTK_NATIVE_3D_SUPPORT
        if  ( mpSync3AMgr )
        {
            mpSync3AMgr->uninit();
            mpSync3AMgr = NULL;
        }
#endif
        if  ( mpHal3a_Main )
        {
            mpHal3a_Main->destroyInstance(LOG_TAG);
            mpHal3a_Main = NULL;
        }
        if  ( mpHal3a_Main2 )
        {
            mpHal3a_Main2->destroyInstance(LOG_TAG);
            mpHal3a_Main2 = NULL;
        }
        profile.print("3A Hal -");
        CPTLogStr(Event_Hal_DefaultCamDevice_init, CPTFlagSeparator, "3A Hal -");
    }
#endif  //MTKCAM_HAVE_3A_HAL
    //--------------------------------------------------------------------------
    //  (4) Close Sensor
#if '1'==MTKCAM_HAVE_SENSOR_HAL
    {
        CAM_TRACE_NAME("uninit(sensor)");
        CPTLogStr(Event_Hal_DefaultCamDevice_init, CPTFlagSeparator, "Sensor Hal +");
        //
        if(mpHalSensor)
        {
            MUINT pIndex[2] = { (MUINT)getOpenId_Main(), (MUINT)getOpenId_Main2() };
            mpHalSensor->powerOff(USER_NAME, 2, pIndex);
            mpHalSensor->destroyInstance(USER_NAME);
            mpHalSensor = NULL;
        }
        MY_LOGD("SensorHal::destroyInstance()");
        profile.print("Sensor Hal -");
        CPTLogStr(Event_Hal_DefaultCamDevice_init, CPTFlagSeparator, "Sensor Hal -");
    }
#endif  //MTKCAM_HAVE_SENSOR_HAL
    //--------------------------------------------------------------------------
#if '1'==MTKCAM_HAVE_CAMDRV
    {
        CAM_TRACE_NAME("uninit(resource)");
        CPTLogStr(Event_Hal_DefaultCamDevice_init, CPTFlagSeparator, "Resource +");
    IResManager* pResManager = IResManager::getInstance();
    //
    if  ( pResManager != NULL )
    {
            if(!(pResManager->close(USER_NAME)))
        {
            MY_LOGE("pResManager->close fail");
        }
    }
        profile.print("Resource -");
        CPTLogStr(Event_Hal_DefaultCamDevice_init, CPTFlagSeparator, "Resource -");
    }
#endif  //MTKCAM_HAVE_CAMDRV
    //--------------------------------------------------------------------------
    //
    profile.print("");
    MY_LOGD("-");
    return  true;
}
Exemplo n.º 3
0
bool
MtkAtvCam1Device::
onInit()
{
    MY_LOGD("+");
    //
    initCameraProfile();
    bool    ret = false;
    int     err = 0;
    //
    IResManager* pResManager = IResManager::getInstance();
    //
    if  ( pResManager != NULL )
    {
        if(!(pResManager->open("MtkAtvCam1Device")))
        {
            MY_LOGE("pResManager->open fail");
            goto lbExit;
        }
    }
    //
    //--------------------------------------------------------------------------
    //  (1) Open Sensor
#if '1'==MTKCAM_HAVE_SENSOR_HAL
    MY_LOGD("SensorHal::createInstance()");
    mpSensorHal = SensorHal::createInstance();
    if  ( ! mpSensorHal ) {
        MY_LOGE("SensorHal::createInstance() fail");
        goto lbExit;
    }
    //
    err = mpSensorHal->sendCommand(SENSOR_DEV_ATV, SENSOR_CMD_SET_SENSOR_DEV);
    if  ( err ) {
        mpSensorHal->destroyInstance();
        mpSensorHal = NULL;
        goto lbExit;
    }
    err = mpSensorHal->init();
    if  ( err ) {
        mpSensorHal->destroyInstance();
        mpSensorHal = NULL;
        MY_LOGE("SensorHal::init() fail");
        goto lbExit;
    }
#endif  //MTKCAM_HAVE_SENSOR_HAL
    //--------------------------------------------------------------------------
    //  (2) Open 3A
#if '1'==MTKCAM_HAVE_3A_HAL
    mp3AHal = NS3A::Hal3ABase::createInstance(SENSOR_DEV_ATV);
    if  ( ! mp3AHal ) {
        MY_LOGE("Hal3ABase::createInstance() fail");
        goto lbExit;
    }
#endif  //MTKCAM_HAVE_3A_HAL
    //--------------------------------------------------------------------------
    //  (3) Init Base.
    if  ( ! Cam1DeviceBase::onInit() )
    {
        MY_LOGE("Cam1DeviceBase::onInit() fail");
        goto lbExit;
    }
    //
    //--------------------------------------------------------------------------
    //  (4) Initialize Camera Adapter.
    if  ( ! initCameraAdapter() )
    {
        MY_LOGE("NULL Camera Adapter");
        goto lbExit;
    }
    //--------------------------------------------------------------------------
    //
    ret = true;
lbExit:
    MY_LOGD("- ret(%d)", ret);
    return  ret;
}
Exemplo n.º 4
0
bool
StereoCam1Device::
onInit()
{
    MY_LOGD("+");
    {
        CAM_TRACE_NAME("init(profile)");
        initPlatformProfile(); 
    }
    AutoCPTLog cptlog(Event_Hal_DefaultCamDevice_init);
    Utils::CamProfile  profile(__FUNCTION__, "StereoCam1Device");
    //
    bool    ret = false;
    int     err = 0, i4DeviceNum = 0;
    //
    String8 const s8MainIdKey("MTK_SENSOR_DEV_MAIN");
    String8 const s8Main2IdKey("MTK_SENSOR_DEV_MAIN_2");
    Utils::Property::tryGet(s8MainIdKey, mSensorId_Main);
    Utils::Property::tryGet(s8Main2IdKey, mSensorId_Main2);
    if  ( -1 == getOpenId_Main() || -1 == getOpenId_Main2() ) {
        MY_LOGE("no dual main sensor");
        goto lbExit;
    }
    //
    //--------------------------------------------------------------------------
#if '1'==MTKCAM_HAVE_CAMDRV
    {
        CAM_TRACE_NAME("init(resource)");
        CPTLogStr(Event_Hal_DefaultCamDevice_init, CPTFlagSeparator, "Resource +");
        IResManager* pResManager = IResManager::getInstance();
        //
        if  ( pResManager != NULL )
        {
            if(!(pResManager->open(USER_NAME)))
            {
                MY_LOGE("pResManager->open fail");
                goto lbExit;
            }
        }
        //
        profile.print("Resource -");
        CPTLogStr(Event_Hal_DefaultCamDevice_init, CPTFlagSeparator, "Resource -");
    }
#endif  //MTKCAM_HAVE_CAMDRV
    //--------------------------------------------------------------------------
    {
        CAM_TRACE_NAME("init(sensor)");
        //  (0) power on sensor
        if( pthread_create(&mThreadHandle, NULL, doThreadInit, this) != 0 )
        {
            MY_LOGE("pthread create failed");
            goto lbExit;
        }
        mbThreadRunning = MTRUE;
        //
        // workaround: yuv sensor, 3A depends on sensor power-on
        if( NSCam::IHalSensorList::get()->queryType( getOpenId_Main() ) == NSCam::NSSensorType::eYUV ||
            NSCam::IHalSensorList::get()->queryType( getOpenId_Main2() ) == NSCam::NSSensorType::eYUV )
        {
            if( !waitThreadInitDone() )
            {
                MY_LOGE("init in thread failed");
                goto lbExit;
            }
        }
    }
    //--------------------------------------------------------------------------
        //  (1) Open 3A
#if '1'==MTKCAM_HAVE_3A_HAL
    {
        CAM_TRACE_NAME("init(3A)");
        CPTLogStr(Event_Hal_DefaultCamDevice_init, CPTFlagSeparator, "3A Hal +");

#ifdef MTK_NATIVE_3D_SUPPORT
        mpSync3AMgr = NS3A::ISync3AMgr::getInstance();
        if  ( ! mpSync3AMgr ) {
            MY_LOGE("ISync3AMgr::getInstance() fail");
            goto lbExit;
        }
        if  ( ! mpSync3AMgr->init(0, getOpenId_Main(), getOpenId_Main2()) ) {
            MY_LOGE("mpSync3AMgr->init fail");
            goto lbExit;
        }
#endif
        
        mpHal3a_Main = NS3A::IHal3A::createInstance(
                NS3A::IHal3A::E_Camera_1,
                getOpenId_Main(),
                LOG_TAG);
        if  ( ! mpHal3a_Main ) {
            MY_LOGE("IHal3A::createInstance() fail");
            goto lbExit;
        }
        mpHal3a_Main2 = NS3A::IHal3A::createInstance(
                NS3A::IHal3A::E_Camera_1,
                getOpenId_Main2(),
                LOG_TAG);
        if  ( ! mpHal3a_Main2 ) {
            MY_LOGE("IHal3A::createInstance() fail: main2");
            goto lbExit;
        }
        profile.print("3A Hal -");
        CPTLogStr(Event_Hal_DefaultCamDevice_init, CPTFlagSeparator, "3A Hal -");
    }
#endif  //MTKCAM_HAVE_3A_HAL
    //--------------------------------------------------------------------------
    {
        CAM_TRACE_NAME("init(base)");
        //  (2) Init Base.
        if  ( ! Cam1DeviceBase::onInit() )
        {
            goto lbExit;
        }
    }
    //
    //--------------------------------------------------------------------------
    //
    ret = true;
lbExit:
    profile.print("");
    MY_LOGD("- ret(%d) sensorId(%d,%d)", ret, getOpenId_Main(), getOpenId_Main2());
    return  ret;
}