ICamDevice*
ICamDevice::
createInstance(
    int32_t const           i4DevOpenId, 
    CamDevInfo const&       rDevInfo, 
    hw_device_t const&      hwdevice, 
    hw_module_t const*const hwmodule
)
{
    MY_LOGI("+ tid(%d) i4DevOpenID(%d), eDevID(%d)", gettid(), i4DevOpenId, rDevInfo.eDevID);
    //
    ICamDevice* pdev = NULL;
    //
    switch  ( rDevInfo.eDevID )
    {
    case eDevId_AtvSensor:
        {
            String8 const name("AtvSensor");
            pdev = new CamDevice(
                name, i4DevOpenId, rDevInfo, 
                ICamAdapter::createInstance(name, i4DevOpenId, rDevInfo)
                );
        }
        break;
    case eDevId_ImgSensor:
    default:
        {
            String8 const name("ImgSensor");
            pdev = new CamDevice(
                name, i4DevOpenId, rDevInfo, 
                ICamAdapter::createInstance(name, i4DevOpenId, rDevInfo)
            );
        }
        break;
    }
    //
    if  ( pdev != 0 )
    {
        pdev->incStrong(pdev);
        //
        hw_device_t* hwdev = pdev->get_hw_device();
        *hwdev = hwdevice;
        hwdev->module = const_cast<hw_module_t*>(hwmodule);
        //
        if  ( ! pdev->init() )
        {
            MY_LOGE("fail to initialize a newly-created instance");
            pdev->uninit();
            pdev = NULL;
        }
    }
    //
    MY_LOGI("- created instance=%p", &(*pdev));
    return  pdev;
}
MBOOL
Mhal_facebeauty::
onCmd_capture()
{
    MBOOL   ret = MFALSE;

    sem_init(&semFBthread, 0, 0);
    pthread_create(&threadFB, NULL, FBCapture, NULL);

    sem_wait(&semFBthread);

    ret = createFBJpegImg(mpSource,mu4W_yuv,mu4H_yuv,0);
    if  ( ! ret )
    {
        goto lbExit;
    }

    //------------------ Sava test ----------------//
    #ifdef BanchMark
    char szFileName[100];
    MUINT32 FDInfo[100]={0};
    MUINT32* htable=(MUINT32*)msFaceBeautyResultInfo.PCAHTable;
    int i=0;
    for(i=0;i<FBmetadata.number_of_faces;i++)
    {
       FDInfo[i*4]   = FBmetadata.faces[i].rect[0];
       FDInfo[i*4+1] = FBmetadata.faces[i].rect[1];
       FDInfo[i*4+2] = FBmetadata.faces[i].rect[2]-FBmetadata.faces[i].rect[0];
       FDInfo[i*4+3] = MTKPoseInfo[i].rip_dir;
       MY_LOGI("[FACEINFO] x %d y %d w %d",FBmetadata.faces[i].rect[0],FBmetadata.faces[i].rect[1],FBmetadata.faces[i].rect[2]);
    }
    ::sprintf(szFileName, "/sdcard/DCIM/Camera/%s_H_%d_%d.txt", "FDinfo", *htable,capturecount);
    saveBufToFile(szFileName, (MUINT8*)&FDInfo, 100 * 4);
    MY_LOGI("[FACEINFO] Save File done");
    #endif
    //------------------ Sava test ----------------//

    //  Force to handle done even if there is any error before.
    //to do handleCaptureDone();
 
    ret = MTRUE;
lbExit:
    releaseBufs();
    pthread_join(threadFB, NULL);
    CPTLog(Event_FcaeBeautyShot, CPTFlagEnd);
    CPTLog(Event_FBShot_Utility, CPTFlagEnd);
#if (FB_PROFILE_CAPTURE)
    DbgTmr.print("FBProfiling:: Done");
#endif
    return  ret;
}
Exemple #3
0
void SfDelegate::OnReceivedRedirect(
            net::URLRequest *request, const GURL &new_url, bool *defer_redirect) {

#ifndef ANDROID_DEFAULT_CODE
     const char *uri =NULL;   
      uri = new_url.spec().c_str();
      MY_LOGI(StringPrintf("OnReceivedRedirect,original_url=%s ",request->original_url().spec().c_str()).c_str());
      MY_LOGI(StringPrintf("OnReceivedRedirect, new_url=%s", new_url.spec().c_str()).c_str());
      MY_LOGI(StringPrintf("OnReceivedRedirect,defer_redirect=%d",*defer_redirect).c_str());
    
      mOwner->OnReceivedRedirect( uri);
#else
    MY_LOGV("OnReceivedRedirect");
#endif
}
void SfDelegate::OnResponseStarted(net::URLRequest *request) {
    if (request->status().status() != net::URLRequestStatus::SUCCESS) {
        MY_LOGI(StringPrintf(
                    "Request failed with status %d and os_error %d",
                    request->status().status(),
                    request->status().os_error()).c_str());

        delete mURLRequest;
        mURLRequest = NULL;

        mOwner->onConnectionFailed(ERROR_IO);
        return;
    } else if (mRangeRequested && request->GetResponseCode() != 206) {
        MY_LOGI(StringPrintf(
                    "We requested a content range, but server didn't "
                    "support that. (responded with %d)",
                    request->GetResponseCode()).c_str());

        delete mURLRequest;
        mURLRequest = NULL;

        mOwner->onConnectionFailed(-EPIPE);
        return;
    } else if ((request->GetResponseCode() / 100) != 2) {
        MY_LOGI(StringPrintf(
                    "Server responded with http status %d",
                    request->GetResponseCode()).c_str());

        delete mURLRequest;
        mURLRequest = NULL;

        mOwner->onConnectionFailed(ERROR_IO);
        return;
    }

    MY_LOGV("OnResponseStarted");

    std::string headers;
    request->GetAllResponseHeaders(&headers);

    MY_LOGV(StringPrintf("response headers: %s", headers.c_str()).c_str());

    std::string contentType;
    request->GetResponseHeaderByName("Content-Type", &contentType);

    mOwner->onConnectionEstablished(
            request->GetExpectedContentSize(), contentType.c_str());
}
MBOOL
Mhal_facebeauty::
doCapture()
{
    MBOOL ret = MFALSE;
    CPTLog(Event_FBShot_Utility, CPTFlagStart);    
    //MINT8 TargetColor = NSCamCustom::get_FB_ColorTarget();
    //MINT8 BlurLevel = NSCamCustom::get_FB_BlurLevel();
    MINT8 TargetColor =0;
    MINT8 BlurLevel =4;

    ret =
        //  ()  Request Buffers.
        requestBufs()
        &&  InitialAlgorithm(mu4W_yuv, mu4H_yuv, BlurLevel, TargetColor)
        &&  createFullFrame(mpSource)
        &&  STEP1(mpSource, mu4W_yuv, mu4H_yuv, mpBlurImg, mpAmap, (void*) &msFaceBeautyResultInfo)
        &&  STEP2(mpSource, mu4W_yuv, mu4H_yuv,mpAmap, &FBmetadata,(void*) &msFaceBeautyResultInfo)
        &&  STEP3(mpAmap,(void*) &msFaceBeautyResultInfo)
        &&  STEP4(mpSource, mu4W_yuv, mu4H_yuv, mpBlurImg, mpAmap, (void*) &msFaceBeautyResultInfo)
        &&  STEP5(mpSource, mu4W_yuv, mu4H_yuv, mpAmap, (void*) &msFaceBeautyResultInfo)
        &&  STEP6(mpSource, mu4W_yuv, mu4H_yuv, mpBlurImg, (void*) &msFaceBeautyResultInfo)
        ;
    if  ( ! ret )
    {
        MY_LOGI("[FBCapture] Capture fail \n");
    }
    sem_post(&semFBthread);

    return ret;
}
Exemple #6
0
void SfDelegate::onInitiateConnection(
        const GURL &url,
        const KeyedVector<String8, String8> *extra,
        off64_t offset) {
    CHECK(mURLRequest == NULL);

    mURLRequest = new net::URLRequest(url, this);
    mAtEOS = false;

    mRangeRequested = false;

#ifndef ANDROID_DEFAULT_CODE

    if (offset != 0 || extra != NULL || !gCustomizeHeaders.empty()) {
#else
    if (offset != 0 || extra != NULL) {
#endif
        net::HttpRequestHeaders headers =
            mURLRequest->extra_request_headers();

        if (offset != 0) {
            headers.AddHeaderFromString(
                    StringPrintf("Range: bytes=%lld-", offset).c_str());

            mRangeRequested = true;
        }

        if (extra != NULL) {
            for (size_t i = 0; i < extra->size(); ++i) {
                AString s;
                s.append(extra->keyAt(i).string());
                s.append(": ");
                s.append(extra->valueAt(i).string());

                headers.AddHeaderFromString(s.c_str());
            }
        }
#ifndef ANDROID_DEFAULT_CODE
        if (!gCustomizeHeaders.empty()) {
            MY_LOGI(StringPrintf("Customize headers, %s", gCustomizeHeaders.c_str()).c_str());
            headers.AddHeaderFromString(gCustomizeHeaders.c_str());
        }
#endif

        mURLRequest->SetExtraRequestHeaders(headers);
    }

    mURLRequest->set_context(gReqContext);

    mURLRequest->Start();
}

void SfDelegate::initiateDisconnect() {
    MessageLoop *loop = gNetworkThread->message_loop();
    loop->PostTask(
            FROM_HERE,
            NewRunnableFunction(
                &SfDelegate::OnInitiateDisconnectWrapper, this));
}
Exemple #7
0
uint32_t
ParamsManager::
getVHdr() const
{
    RWLock::AutoRLock _lock(mRWLock);
    char const* p = mParameters.get(MtkCameraParameters::KEY_VIDEO_HDR);
    char const* pMode = mParameters.get(MtkCameraParameters::KEY_VIDEO_HDR_MODE);

    if(!p)
    {
        MY_LOGI("No KEY_VIDEO_HDR");
        return 0;
    }

    if(!pMode)
    {
        MY_LOGI("No KEY_VIDEO_HDR_MODE");
        return 0;
    }

    //> check vhdr mode

    if(::strcmp(p, MtkCameraParameters::OFF) == 0)
    {
        return 0;
    }
    else
    {
        if(::strcmp(pMode, MtkCameraParameters::VIDEO_HDR_MODE_IVHDR) == 0)
        {
            return 1;
        }
        else if(::strcmp(pMode, MtkCameraParameters::VIDEO_HDR_MODE_MVHDR) == 0)
        {
            return 2;
        }
        else
        {
            MY_LOGE("wrong mode(%s)",pMode);
            return 0;
        }
    }    
}
Exemple #8
0
void SfDelegate::setProxy(const char *proxy, int port)
{
       std::string host = proxy;
	 std::string list = "";

	 MY_LOGI(StringPrintf("setProxy:host=%s,port=%d",host.c_str() ,port).c_str());
    
	gProxyConfigService.get()->UpdateProxySettings(host,list);

}
MBOOL
SImager::
setFlip(MUINT32 const u4Flip)
{
    FUNCTION_LOG_START;
    MY_LOGI("u4Flip = 0x%x", u4Flip); 
    mTargetImgInfo.u4Flip = u4Flip; 
    FUNCTION_LOG_END;
    //
    return MTRUE;
}
MBOOL
SImager::
setROI(Rect const rROI)
{
    FUNCTION_LOG_START;
    MY_LOGI("roi (x, y, w, h) = (%d, %d, %d, %d)", rROI.x, rROI.y, rROI.w, rROI.h); 
    mTargetImgInfo.rROI = rROI; 
    FUNCTION_LOG_END;
    //
    return MTRUE;
}
MBOOL
SImager::
setFormat(EImageFormat const eFormat)
{
    FUNCTION_LOG_START;
    MY_LOGI("format = 0x%x", eFormat); 
    mTargetImgInfo.eImgFmt = eFormat;    
        
    FUNCTION_LOG_END;
    //
    return MTRUE;
}
MBOOL
SImager::
setResize(MUINT32 const u4Width, MUINT32 const u4Height)
{
    FUNCTION_LOG_START;
    MY_LOGI("size (w, h) = (%d, %d)", u4Width, u4Height); 
    mTargetImgInfo.u4ImgWidth = u4Width; 
    mTargetImgInfo.u4ImgHeight = u4Height; 
    FUNCTION_LOG_END;
    //
    return MTRUE;
}
MBOOL
SImager::
setRotation(MUINT32 const u4Ratation)
{
    FUNCTION_LOG_START;
    MY_LOGI("rotation = %d", u4Ratation); 
    mTargetImgInfo.u4Rotation = u4Ratation;  

    FUNCTION_LOG_END;
    //
    return MTRUE;
}
MBOOL
SImager::
setEncodeParam(MUINT32 const & u4IsSOI, MUINT32 const & u4Quality)
{
    FUNCTION_LOG_START;
    MY_LOGI("enc param (SOI, Quality) = (%d, %d)", u4IsSOI, u4Quality); 
    mTargetImgInfo.u4IsSOI = u4IsSOI; 
    mTargetImgInfo.u4Quality = u4Quality; 
    FUNCTION_LOG_END;
    //
    return MTRUE;
}
Exemple #15
0
bool ParamsManager::getCShotIndicator() const
{
    RWLock::AutoRLock _lock(mRWLock);
    char const *p = mParameters.get(MtkCameraParameters::KEY_CSHOT_INDICATOR);

    if(!p)
    {
        MY_LOGI("No KEY_CSHOT_INDICATOR");
        return false;
    }

    return (::strcmp(p, CameraParameters::TRUE) != 0 ) ? false : true;
}
MBOOL   
SImager::
setStrideAlign(MUINT32 const u4StrideAlign[3])
{
    FUNCTION_LOG_START;
    MY_LOGI("stride align = (%d, %d, %d)", u4StrideAlign[0], u4StrideAlign[1], u4StrideAlign[2]); 
    mu4StrideAlign[0] = u4StrideAlign[0]; 
    mu4StrideAlign[1] = u4StrideAlign[1]; 
    mu4StrideAlign[2] = u4StrideAlign[2]; 

    return MTRUE; 
    FUNCTION_LOG_END;
}
Exemple #17
0
bool
querySensorInfo(int32_t const i4OpenId, String8& rs8SensorName, uint32_t& ru4SensorType, int32_t& ri4SensorFacing)
{
    if  ( i4OpenId == 0xFF )
    {
        rs8SensorName = DLSYM_MODULE_NAME_COMMON_SENSOR_ATV;
        ru4SensorType = NSSensorType::eSensorType_YUV;
        ri4SensorFacing = 0;
        MY_LOGW("ATV sensor...return true");
        return  true;
    }

#if '1'!=MTKCAM_HAVE_SENSOR_HAL     //++++++++++++++++++++++++++++++++++++++++++
    //
    #warning "[FIXME] querySensorInfo()"
    MY_LOGI("not use MTKCAM_HAVE_SENSOR_HAL");
    rs8SensorName = "No_Sensor_Hal";
    ru4SensorType = NSSensorType::eSensorType_RAW;
    return  true;
    //
#else   //MTKCAM_HAVE_SENSOR_HAL    //..........................................
    //
    bool ret = false;
    NSCam::IHalSensorList *pSensorHalList = NSCam::IHalSensorList::get();
    if  (pSensorHalList == NULL)
    {
        MY_LOGE("pSensorHalList::get fail");
        pSensorHalList = NULL;
        return false;
    }
    //
    ri4SensorFacing = pSensorHalList->queryFacingDirection(i4OpenId);
    rs8SensorName = pSensorHalList->queryDriverName(i4OpenId);
    switch  ( pSensorHalList->queryType(i4OpenId) )
    {
    case NSCam::NSSensorType::eYUV:
        ru4SensorType = NSSensorType::eSensorType_YUV;
        break;
    case NSCam::NSSensorType::eRAW:
    default:
        ru4SensorType = NSSensorType::eSensorType_RAW;
        break;
    }
    MY_LOGD("[OpenId:%d] type:%d <%s>", i4OpenId, ru4SensorType, rs8SensorName.string());
    //
    ret = true;
lbExit:
    return ret;
    //
#endif  //MTKCAM_HAVE_SENSOR_HAL    //------------------------------------------
}
Exemple #18
0
bool 
ParamsManager::
getPDAFSupported() const
{
    RWLock::AutoRLock _lock(mRWLock);
    char const* p = mParameters.get(MtkCameraParameters::KEY_PDAF);
    //
    if ( ! p ) {
        MY_LOGI("No KEY_PDAF");
        return false;
    }
    //
    return ( ::strcmp(p, CameraParameters::TRUE) != 0 ) ? false : true;
}
Exemple #19
0
bool
ParamsManager::
getVideoStabilization() const
{
    RWLock::AutoRLock _lock(mRWLock);
    char const* p = mParameters.get(CameraParameters::KEY_VIDEO_STABILIZATION);
    //
    if ( ! p ) {
        MY_LOGI("No KEY_VIDEO_STABILIZATION");
        return false;
    }
    //
    return ( ::strcmp(p, CameraParameters::TRUE) != 0 ) ? false : true;
}
Exemple #20
0
bool
ParamsManager::
getVideoSnapshotSupport() const
{
    RWLock::AutoRLock _lock(mRWLock);
    char const* p = mParameters.get(CameraParameters::KEY_VIDEO_SNAPSHOT_SUPPORTED);
    //
    if ( ! p ) {
        MY_LOGI("No KEY_VIDEO_SNAPSHOT_SUPPORTED");
        return false;
    }
    //
    return ( ::strcmp(p, CameraParameters::TRUE) != 0 ) ? false : true;
}
Exemple #21
0
bool
ParamsManager::
getRecordingHint() const
{
    RWLock::AutoRLock _lock(mRWLock);
    char const* p = mParameters.get(CameraParameters::KEY_RECORDING_HINT);
    //
    if ( ! p ) {
        MY_LOGI("No KEY_RECORDING_HINT");
        return false;
    }
    //
    return ( ::strcmp(p, CameraParameters::TRUE) != 0 ) ? false : true;
}
void SfDelegate::OnReadCompleted(net::URLRequest *request, int bytes_read) {
    if (bytes_read == -1) {
        MY_LOGI(StringPrintf(
                    "OnReadCompleted, read failed, status %d",
                    request->status().status()).c_str());

        mOwner->onReadCompleted(ERROR_IO);
        return;
    }

    MY_LOGV(StringPrintf("OnReadCompleted, read %d bytes", bytes_read).c_str());

    if (bytes_read < 0) {
        MY_LOGI(StringPrintf(
                    "Read failed w/ status %d\n",
                    request->status().status()).c_str());

        mOwner->onReadCompleted(ERROR_IO);
        return;
    } else if (bytes_read == 0) {
        mAtEOS = true;
        mOwner->onReadCompleted(mNumBytesRead);
        return;
    }

    CHECK_GT(bytes_read, 0);
    CHECK_LE(mNumBytesRead + bytes_read, mNumBytesTotal);

    memcpy((uint8_t *)mDataDestination + mNumBytesRead,
           mReadBuffer->data(),
           bytes_read);

    mNumBytesRead += bytes_read;

    readMore(request);
}
void SfNetLog::AddEntry(
        EventType type,
        const base::TimeTicks &time,
        const Source &source,
        EventPhase phase,
        EventParameters *params) {
#if 0
    MY_LOGI(StringPrintf(
                "AddEntry time=%s type=%s source=%s phase=%s\n",
                TickCountToString(time).c_str(),
                EventTypeToString(type),
                SourceTypeToString(source.type),
                EventPhaseToString(phase)).c_str());
#endif
}
void
BaseCamAdapter::
unsubscribeMsgType(int32_t const msgType, void* cookie)
{
    MY_LOGI(
        "+ tid(%d), (msgType, cookie)=(0x%x, %p) "
        "mvFrameObservers.size(%d)",
        ::gettid(), msgType, cookie,
        mvFrameObservers.size()
    );
    //
    RWLock::AutoWLock _l(mRWLockFrameNotifier);
    //
    //  Now we just support one-shot setting for only one message.
    switch  (msgType)
    {
    case CAMERA_MSG_PREVIEW_FRAME | CAMERA_MSG_POSTVIEW_FRAME:
    case CAMERA_MSG_PREVIEW_FRAME:
    case CAMERA_MSG_POSTVIEW_FRAME:
        mvFrameObservers.removeItem(cookie);
        break;
    case CAMERA_MSG_ALL_MSGS:
        mvFrameObservers.removeItem(cookie);
        break;
    default:
        MY_LOGE("Unsupported type(%x).", msgType);
        break;
    }
    //
    MY_LOGI(
        "- tid(%d), (msgType, cookie)=(0x%x, %p) "
        "mvFrameObservers.size(%d)",
        ::gettid(), msgType, cookie,
        mvFrameObservers.size()
    );
}
void SfDelegate::readMore(net::URLRequest *request) {
    while (mNumBytesRead < mNumBytesTotal) {
        size_t copy = mNumBytesTotal - mNumBytesRead;
        if (copy > mReadBuffer->size()) {
            copy = mReadBuffer->size();
        }

        int n;
        if (request->Read(mReadBuffer, copy, &n)) {
            MY_LOGV(StringPrintf("Read %d bytes directly.", n).c_str());

            CHECK_LE((size_t)n, copy);

            memcpy((uint8_t *)mDataDestination + mNumBytesRead,
                   mReadBuffer->data(),
                   n);

            mNumBytesRead += n;

            if (n == 0) {
                mAtEOS = true;
                break;
            }
        } else {
            MY_LOGV("readMore pending read");

            if (request->status().status() != net::URLRequestStatus::IO_PENDING) {
                MY_LOGI(StringPrintf(
                            "Direct read failed w/ status %d\n",
                            request->status().status()).c_str());

                mOwner->onReadCompleted(ERROR_IO);
                return;
            }

            return;
        }
    }

    mOwner->onReadCompleted(mNumBytesRead);
}
bool
Mhal_facebeauty::
onCreate(MtkCameraFaceMetadata* FaceInfo)
{
    MBOOL   ret = MFALSE;
    MINT32  ec = 0;

    MY_LOGD("[facebeauty init] FBFaceInfo adr 0x%x FBFaceInfo num %d \n",(MUINT32)FaceInfo->faces,FaceInfo->number_of_faces);

    FBmetadata.faces=(MtkCameraFace *)FBFaceInfo;
    FBmetadata.posInfo=(MtkFaceInfo *)MTKPoseInfo;
    FBmetadata.number_of_faces = FaceInfo->number_of_faces;
    for(int i=0;i<FaceInfo->number_of_faces;i++)
    {
        FBmetadata.faces[i].rect[0] = ((FaceInfo->faces[i].rect[0] + 1000) * FBFDWidth) / 2000;
        FBmetadata.faces[i].rect[1] = ((FaceInfo->faces[i].rect[1] + 1000) * FBFDHeight) / 2000;
        FBmetadata.faces[i].rect[2] = ((FaceInfo->faces[i].rect[2] + 1000) * FBFDWidth) / 2000;
        FBmetadata.faces[i].rect[3] = ((FaceInfo->faces[i].rect[3] + 1000) * FBFDHeight) / 2000;
        FBmetadata.posInfo[i].rop_dir = FaceInfo->posInfo[i].rop_dir;
        FBmetadata.posInfo[i].rip_dir = FaceInfo->posInfo[i].rip_dir;
        
        int face_size = FBmetadata.faces[i].rect[2] - FBmetadata.faces[i].rect[0];
        if(face_size >= 30)
        {
        	  int zoom_size;
            zoom_size = face_size/15;
            
            if( (FBmetadata.faces[i].rect[0] - zoom_size >= 0) && 
            	  (FBmetadata.faces[i].rect[1] - zoom_size >= 0) &&
            	  (FBmetadata.faces[i].rect[2] + zoom_size <= FBFDWidth -1) &&
            	  (FBmetadata.faces[i].rect[3] + zoom_size <= FBFDHeight-1))
            {
                 zoom_size = face_size/12;
            		 if( (FBmetadata.faces[i].rect[0] - zoom_size >= 0) && 
            	       (FBmetadata.faces[i].rect[1] - zoom_size >= 0) &&
            	       (FBmetadata.faces[i].rect[2] + zoom_size <= FBFDWidth -1) &&
            	       (FBmetadata.faces[i].rect[3] + zoom_size <= FBFDHeight-1))
            	   {
            	   	    zoom_size = face_size/10;
            		      if( (FBmetadata.faces[i].rect[0] - zoom_size >= 0) && 
            	            (FBmetadata.faces[i].rect[1] - zoom_size >= 0) &&
            	            (FBmetadata.faces[i].rect[2] + zoom_size <= FBFDWidth -1) &&
            	            (FBmetadata.faces[i].rect[3] + zoom_size <= FBFDHeight-1))
            	       {
            	       	    zoom_size = face_size/8;
            	    	      if( (FBmetadata.faces[i].rect[0] - zoom_size >= 0) && 
            	                (FBmetadata.faces[i].rect[1] - zoom_size >= 0) &&
            	                (FBmetadata.faces[i].rect[2] + zoom_size <= FBFDWidth -1) &&
            	                (FBmetadata.faces[i].rect[3] + zoom_size <= FBFDHeight-1))
            	            {
            	    	           zoom_size = face_size/7;
            	    	           if( (FBmetadata.faces[i].rect[0] - zoom_size >= 0) && 
            	                     (FBmetadata.faces[i].rect[1] - zoom_size >= 0) &&
            	                     (FBmetadata.faces[i].rect[2] + zoom_size <= FBFDWidth -1) &&
            	                     (FBmetadata.faces[i].rect[3] + zoom_size <= FBFDHeight-1))
            	                 {
            	    	               ;
            	                 }
            	                 else
            	                 {
            	            		     zoom_size = face_size/8;
            	                 }
            	            }
            	            else
            	            {
            	            		zoom_size = face_size/10;
            	            }
            	       }
            	       else
            	       {
            	       	  zoom_size = face_size/12;
            	       }
            	   }
            	   else
            	   {
            	   	   zoom_size = face_size/15;
            	   }
                 FBmetadata.faces[i].rect[0] -= zoom_size;
                 FBmetadata.faces[i].rect[1] -= zoom_size;
                 FBmetadata.faces[i].rect[2] += zoom_size;
                 FBmetadata.faces[i].rect[3] += zoom_size;
            }
             


        }
        MY_LOGI("[facebeauty init] After FBFaceInfo num %d left %d top %d right %d button %d pose %d \n",i,FBmetadata.faces[i].rect[0],FBmetadata.faces[i].rect[1],FBmetadata.faces[i].rect[2],FBmetadata.faces[i].rect[3],MTKPoseInfo[i].rip_dir);
    }

    mpIMemDrv =  IMemDrv::createInstance();
    if (mpIMemDrv == NULL)
    {
        MY_LOGE("g_pIMemDrv is NULL \n");
        return 0;
    }

    mpFb = halFACEBEAUTIFYBase::createInstance(HAL_FACEBEAUTY_OBJ_SW);

    if  ( ! mpFb )
    {
        MY_LOGE("[init] NULL mpFb \n");
        goto lbExit;
    }
    mpFbObj = this;
    mpFb->CANCEL = MFALSE;
    ret = MTRUE;
lbExit:
    if  ( ! ret )
    {
        onDestroy();
    }
    MY_LOGD("[init] rc(%d) \n", ret);
    return  ret;
}
Exemple #27
0
void SfRequestContext::initStreamingInfo() {   
#ifdef CUSTOM_UASTRING_FROM_PROPERTY
	char value[MAX_VALUE_LEN];
	if (0 < custom_get_string(MODULE_HTTP_STREAMING, USER_AGENT, value, NULL)) {
        mUserAgent = value;
	} else {
	    mUserAgent = "";
	    mUserAgent.append("stagefright/1.2 (Linux;Android ");

    	char prop[PROPERTY_VALUE_MAX];
	    property_get("ro.build.version.release", prop, "Unknown");
	    mUserAgent.append(prop);
	    mUserAgent.append(")");
	}
    mWapProfile = "";
	memset(value, 0, sizeof(value));
	if (0 < custom_get_string(MODULE_HTTP_STREAMING, UAPROF_URL, value, NULL)) {
		mWapProfile = value;
	    gCustomizeHeaders = StringPrintf("x-wap-profile: %s", mWapProfile.c_str());
        MY_LOGI(gCustomizeHeaders.c_str());	
	}
#else //#ifdef CUSTOM_UASTRING_FROM_PROPERTY
#ifdef STR_HTTP_USER_AGENT
    mUserAgent = STR_HTTP_USER_AGENT;
#else
    mUserAgent = "";
    mUserAgent.append("stagefright/1.2 (Linux;Android ");

    char value[PROPERTY_VALUE_MAX];
    property_get("ro.build.version.release", value, "Unknown");
    mUserAgent.append(value);
    mUserAgent.append(")");
#endif

#ifdef STR_HTTP_WAP_PROFILE
    mWapProfile = STR_HTTP_WAP_PROFILE;
    if (mWapProfile != "") {
        gCustomizeHeaders = StringPrintf("x-wap-profile: %s", mWapProfile.c_str());
        MY_LOGI(gCustomizeHeaders.c_str());
    }
#else
    mWapProfile = "";
#endif
#endif  //#ifdef CUSTOM_UASTRING_FROM_PROPERTY

    MY_LOGI(StringPrintf("http user agent: %s", mUserAgent.c_str()).c_str());

    MY_LOGI(StringPrintf("http wap profile: %s", mWapProfile.c_str()).c_str());

#if 0
    //loading from cfg file
    const char filename[] = STREAMING_CFG_PATH;
    FILE *pFile = fopen(filename, "r");
    bool bValidCfg = false;
    if (pFile != NULL) {
        char szString[STREAMING_CFG_MAX_LENGTH];
        char* szName = NULL;
        char* szValue = NULL;

        MY_LOGI(StringPrintf("loading streaming cfg: %s", filename).c_str());
        while (fgets(szString, STREAMING_CFG_MAX_LENGTH, pFile) != NULL) {
            szName = strtok(szString, "=");
            szValue = strtok(NULL, "\r\n");

            MY_LOGI(StringPrintf("\t\t%s = %s", szName, szValue).c_str());

            //load user-agent
            if (!strcmp(szName, "User-Agent")) {
                mUserAgent = szValue;
                bValidCfg = true;
            } else if (!strcmp(szName, "x-wap-profile")) { //load x-wap-profile
                mWapProfile = szValue;
            }
        }
        fclose(pFile);
    } else {
        MY_LOGI(StringPrintf("\t\tstreaming config file %s not found", filename).c_str());
    }
#endif

}
Exemple #28
0
void SfDelegate::OnResponseStarted(net::URLRequest *request) {
    if (request->status().status() != net::URLRequestStatus::SUCCESS) {
        MY_LOGI(StringPrintf(
                    "Request failed with status %d and os_error %d",
                    request->status().status(),
                    request->status().os_error()).c_str());

        delete mURLRequest;
        mURLRequest = NULL;

        mOwner->onConnectionFailed(ERROR_IO);
        return;
#ifndef ANDROID_DEFAULT_CODE//Listen.apk, server return 200 when we request partial content
	} else if (mRangeRequested && request->GetResponseCode() != 206 && request->GetResponseCode() != 200) {
#else
    } else if (mRangeRequested && request->GetResponseCode() != 206) {
#endif
        MY_LOGI(StringPrintf(
                    "We requested a content range, but server didn't "
                    "support that. (responded with %d)",
                    request->GetResponseCode()).c_str());

        delete mURLRequest;
        mURLRequest = NULL;

        mOwner->onConnectionFailed(-EPIPE);
        return;
    } else if ((request->GetResponseCode() / 100) != 2) {
        MY_LOGI(StringPrintf(
                    "Server responded with http status %d",
                    request->GetResponseCode()).c_str());
#ifndef ANDROID_DEFAULT_CODE
        bool bResNotFound = false;
        if ((request->GetResponseCode() == 404) || (request->GetResponseCode() == 410)){
            bResNotFound = true;
        }

#endif


        delete mURLRequest;
        mURLRequest = NULL;

#ifndef ANDROID_DEFAULT_CODE
        //if the ResponseCode is 404, notify that it's our_of_range 
       mOwner->onConnectionFailed(bResNotFound ? ERROR_OUT_OF_RANGE : ERROR_IO);
#else
        mOwner->onConnectionFailed(ERROR_IO);
#endif
        return;
    }

    MY_LOGV("OnResponseStarted");

    std::string headers;
    request->GetAllResponseHeaders(&headers);

    MY_LOGV(StringPrintf("response headers: %s", headers.c_str()).c_str());

    std::string contentType;
    request->GetResponseHeaderByName("Content-Type", &contentType);

#ifndef ANDROID_DEFAULT_CODE
	MY_LOGI(StringPrintf("contentType org=%s", contentType.c_str()).c_str());
	size_t pos = contentType.find(';');
	if (pos != std::string::npos)
		contentType.erase(pos);//Remove parameters from content type
	MY_LOGI(StringPrintf("contentType now=%s", contentType.c_str()).c_str());
#endif

    mOwner->onConnectionEstablished(
            request->GetExpectedContentSize(), contentType.c_str());
}
Exemple #29
0
status_t
ParamsManager::
setParameters(CameraParameters const& params)
{
    IParamsManager::showParameters(params.flatten());
    //
    status_t    status = OK;
    bool        bIsSceneChanged = false;
    Size        oldPrvSize, tmpPrvSize, newPrvSize;
    Size        oldPicSize, newPicSize;
    //
    //  (1) Check to see if new parameters are valid or not.
    if  ( OK != (status = checkParams(params)) )
    {
        MY_LOGE("checkParams() return %d", status);
        return  status;
    }

    //  (2) Check to see if Scene Changes or not.
    MY_LOGD("%d: +", getOpenId());
    RWLock::AutoWLock _lock(mRWLock);
    MY_LOGD("AutoWLock");
    //
    char const*const pOldScene = mParameters.get(CameraParameters::KEY_SCENE_MODE);
    char const*const pNewScene =      params.get(CameraParameters::KEY_SCENE_MODE);
    if  ( 0 != ::strcmp(pOldScene, pNewScene) )
    {
        //  scene mode has changed
        MY_LOGD("Scene change: %s -> %s", pOldScene, pNewScene);
        bIsSceneChanged = true;
    }
    //
    //  (3.1) Check to see if Preview Size Changes or not. Get old preview size
    mParameters.getPreviewSize(&oldPrvSize.width, &oldPrvSize.height);
    params.getPreviewSize(&tmpPrvSize.width, &tmpPrvSize.height);

    //  (3.2) Get old&new picture size  
    mParameters.getPictureSize(&oldPicSize.width, &oldPicSize.height);
    params.getPictureSize(&newPicSize.width, &newPicSize.height);

    //  (4) Update Parameter
    mParameters = params;
    if  ( bIsSceneChanged ) {
        if  ( ! updateSceneAndParams() ) {
            status = BAD_VALUE;
        }
    }

    //  (5) Update Parameter: preview size
    updatePreviewSize();

    // (6) Update FOV according to picture size
    MY_LOGI("picSZ(%d,%d)->(%d,%d)",oldPicSize.width,oldPicSize.height,newPicSize.width,newPicSize.height);
    if(oldPicSize.width != newPicSize.width || oldPicSize.height != newPicSize.height)
    {
        updateFov(newPicSize);
    }      
    
    //  (3.2) Check to see if Preview Size Changes or not. Get new preview size
    mParameters.getPreviewSize(&newPrvSize.width, &newPrvSize.height);
    if  ( oldPrvSize.width != newPrvSize.width || oldPrvSize.height != newPrvSize.height )
    {
        MY_LOGD(
            "Preview Size change: %dx%d/%dx%d -> (%dx%d)",
            oldPrvSize.width, oldPrvSize.height,
            tmpPrvSize.width, tmpPrvSize.height,
            newPrvSize.width, newPrvSize.height
        );
    }
    //
    MY_LOGD("-");
    return status;
}
MBOOL
Mhal_facebeauty::
onCmd_capture()
{
    MBOOL   ret = MFALSE;

    MINT32  g_BufWidth;
    MINT32  g_BufHeight;
    if((mShotParam.mi4PostviewWidth*3) == (mShotParam.mi4PostviewHeight*4))
    {
        g_BufWidth = 320;
        g_BufHeight = 240;
    }
    else if((mShotParam.mi4PostviewWidth*9) == (mShotParam.mi4PostviewHeight*16))
    {
        g_BufWidth = 320;
        g_BufHeight = 180;
    }
    else if((mShotParam.mi4PostviewWidth*3) == (mShotParam.mi4PostviewHeight*5))
    {
        g_BufWidth = 320;
        g_BufHeight = 192;
    }
    else
    {
        g_BufWidth = 320;
        if(mShotParam.mi4PostviewWidth != 0)
          g_BufHeight = 320 * mShotParam.mi4PostviewHeight/mShotParam.mi4PostviewWidth;
        else
          g_BufHeight = 180;
    }

    MY_LOGD("[onCmd_capture] Postview %dx%d -> Buf %dx%d\n",mShotParam.mi4PostviewWidth, mShotParam.mi4PostviewHeight, g_BufWidth, g_BufHeight);

    for(int i=0;i<FBmetadata.number_of_faces;i++)
    {
        FBmetadata.faces[i].rect[0] = ((FBmetadata.faces[i].rect[0] + 1000) * g_BufWidth) / 2000;
        FBmetadata.faces[i].rect[1] = ((FBmetadata.faces[i].rect[1] + 1000) * g_BufHeight) / 2000;
        FBmetadata.faces[i].rect[2] = ((FBmetadata.faces[i].rect[2] + 1000) * g_BufWidth) / 2000;
        FBmetadata.faces[i].rect[3] = ((FBmetadata.faces[i].rect[3] + 1000) * g_BufHeight) / 2000;

        int face_size = FBmetadata.faces[i].rect[2] - FBmetadata.faces[i].rect[0];
        if(face_size >= 30)
        {
        	  int zoom_size;
            zoom_size = face_size/15;

            if( (FBmetadata.faces[i].rect[0] - zoom_size >= 0) &&
            	  (FBmetadata.faces[i].rect[1] - zoom_size >= 0) &&
            	  (FBmetadata.faces[i].rect[2] + zoom_size <= g_BufWidth -1) &&
            	  (FBmetadata.faces[i].rect[3] + zoom_size <= g_BufHeight-1))
            {
                 zoom_size = face_size/12;
            		 if( (FBmetadata.faces[i].rect[0] - zoom_size >= 0) &&
            	       (FBmetadata.faces[i].rect[1] - zoom_size >= 0) &&
            	       (FBmetadata.faces[i].rect[2] + zoom_size <= g_BufWidth -1) &&
            	       (FBmetadata.faces[i].rect[3] + zoom_size <= g_BufHeight-1))
            	   {
            	   	    zoom_size = face_size/10;
            		      if( (FBmetadata.faces[i].rect[0] - zoom_size >= 0) &&
            	            (FBmetadata.faces[i].rect[1] - zoom_size >= 0) &&
            	            (FBmetadata.faces[i].rect[2] + zoom_size <= g_BufWidth -1) &&
            	            (FBmetadata.faces[i].rect[3] + zoom_size <= g_BufHeight-1))
            	       {
            	       	    zoom_size = face_size/8;
            	    	      if( (FBmetadata.faces[i].rect[0] - zoom_size >= 0) &&
            	                (FBmetadata.faces[i].rect[1] - zoom_size >= 0) &&
            	                (FBmetadata.faces[i].rect[2] + zoom_size <= g_BufWidth -1) &&
            	                (FBmetadata.faces[i].rect[3] + zoom_size <= g_BufHeight-1))
            	            {
            	    	           zoom_size = face_size/7;
            	    	           if( (FBmetadata.faces[i].rect[0] - zoom_size >= 0) &&
            	                     (FBmetadata.faces[i].rect[1] - zoom_size >= 0) &&
            	                     (FBmetadata.faces[i].rect[2] + zoom_size <= g_BufWidth -1) &&
            	                     (FBmetadata.faces[i].rect[3] + zoom_size <= g_BufHeight-1))
            	                 {
            	    	               ;
            	                 }
            	                 else
            	                 {
            	            		     zoom_size = face_size/8;
            	                 }
            	            }
            	            else
            	            {
            	            		zoom_size = face_size/10;
            	            }
            	       }
            	       else
            	       {
            	       	  zoom_size = face_size/12;
            	       }
            	   }
            	   else
            	   {
            	   	   zoom_size = face_size/15;
            	   }
                 FBmetadata.faces[i].rect[0] -= zoom_size;
                 FBmetadata.faces[i].rect[1] -= zoom_size;
                 FBmetadata.faces[i].rect[2] += zoom_size;
                 FBmetadata.faces[i].rect[3] += zoom_size;
            }



        }
        MY_LOGI("[onCmd_capture] After FBFaceInfo num %d left %d top %d right %d button %d pose %d \n",i,FBmetadata.faces[i].rect[0],FBmetadata.faces[i].rect[1],FBmetadata.faces[i].rect[2],FBmetadata.faces[i].rect[3],MTKPoseInfo[i].rip_dir);
    }

    sem_init(&semMemoryDone, 0, 0);
    sem_init(&semFBthread, 0, 0);
    pthread_create(&threadFB, NULL, FBCapture, NULL);

    sem_init(&semUtilitythread, 0, 0);
    pthread_create(&threadUtility, NULL, FBUtility, NULL);

    sem_wait(&semFBthread);

    ret = createFBJpegImg(mpSource,mu4W_yuv,mu4H_yuv,0);
    if  ( ! ret )
    {
        goto lbExit;
    }

    //------------------ Sava test ----------------//
    #ifdef BanchMark
    char szFileName[100];
    MUINT32 FDInfo[100]={0};
    MUINT32* htable=(MUINT32*)msFaceBeautyResultInfo.PCAHTable;
    int i=0;
    for(i=0;i<FBmetadata.number_of_faces;i++)
    {
       FDInfo[i*4]   = FBmetadata.faces[i].rect[0];
       FDInfo[i*4+1] = FBmetadata.faces[i].rect[1];
       FDInfo[i*4+2] = FBmetadata.faces[i].rect[2]-FBmetadata.faces[i].rect[0];
       FDInfo[i*4+3] = MTKPoseInfo[i].rip_dir;
       MY_LOGI("[FACEINFO] x %d y %d w %d",FBmetadata.faces[i].rect[0],FBmetadata.faces[i].rect[1],FBmetadata.faces[i].rect[2]);
    }
    ::sprintf(szFileName, "/sdcard/DCIM/Camera/%s_H_%d_%d.txt", "FDinfo", *htable,capturecount);
    saveBufToFile(szFileName, (MUINT8*)&FDInfo, 100 * 4);
    MY_LOGI("[FACEINFO] Save File done");
    #endif
    //------------------ Sava test ----------------//

    //  Force to handle done even if there is any error before.
    //to do handleCaptureDone();

    ret = MTRUE;
lbExit:
    releaseBufs();
    pthread_join(threadFB, NULL);
    UtilityStatus = 0;
    sem_post(&semUtilitythread);
    pthread_join(threadUtility, NULL);
    CPTLog(Event_FcaeBeautyShot, CPTFlagEnd);
    CPTLog(Event_FBShot_Utility, CPTFlagEnd);
#if (FB_PROFILE_CAPTURE)
    DbgTmr.print("FBProfiling:: Done");
#endif
    return  ret;
}