p2a_fm



main_log:01-01 00:24:41.417407   645  4739 D DepthMapPipe/P2A_FMNode: [onThreadLoop][VSDOF_Profile] 300: threadLoop start, reqID=409 eState=1
main_log:01-01 00:24:41.417474   645  4739 D DepthMapPipe/P2A_FMNode: [applyISPTuning]225: +, reqID=409 bIsMain1Path=1
main_log:01-01 00:24:41.419572   645  4739 D DepthMapPipe/P2A_FMNode: [applyISPTuning]263: -, reqID=409
main_log:01-01 00:24:41.419723   645  4739 D DepthMapPipe/P2A_FMNode: [applyISPTuning]225: +, reqID=409 bIsMain1Path=0
main_log:01-01 00:24:41.421904   645  4739 D DepthMapPipe/P2A_FMNode: [applyISPTuning]263: -, reqID=409
main_log:01-01 00:24:41.425171   645  4727 D DepthMapPipe/P2A_FMNode: [onHandleFlowTypeP2Done]435: reqID=408 use queued depth info!
//>>>>>>>>> enque start <<<<<<<<<<
main_log:01-01 00:24:41.426554   645  4739 D DepthMapPipe/P2A_FMNode: [onThreadLoop]331: mpINormalStream enque START!!!! reqID=409
main_log:01-01 00:24:41.427568   645  4727 D DepthMapPipe/P2A_FMNode: [handleP2Done]413: - :reqID=408
main_log:01-01 00:24:41.428005   645  4739 D DepthMapPipe/P2A_FMNode: [onThreadLoop][VSDOF_Profile] 337: mpINormalStream enque END ! reqID=409, exec-time(enque)=1 msec
//>>>>>>>>> enque start <<<<<<<<<<
//after enque done ,callback will be called,we will stop P2afm timer in handleP2Done()
main_log:01-01 00:24:41.438524   645  4727 D DepthMapPipe/P2A_FMNode: [handleP2Done][VSDOF_Profile] 392: + :reqID=409 , p2 exec-time=11 ms// pRequest->mTimer.stopP2AFM();




P2AFMNode::onThreadLoop()
{
// deque a request from the request queue --flm
// mark on-going-request start
// threadLoop start, reqID=
// enque QParams
// enque cookie instance
// apply 3A Isp tuning
    perform3AIspTuning()
   {
    rOutTuningRes.tuningRes_main1 = applyISPTuning(rpRequest, eP2APATH_MAIN1);
    rOutTuningRes.tuningRes_main2 = applyISPTuning(rpRequest, eP2APATH_MAIN2);
   }
// call flow option to build QParams
// after build enqueParams,print them --flm
// set callbacks for the enqueParams ,this callback will be called after enque done--flm
   enqueParams.mpfnCallback = onP2Callback;
// start P2A timer
// enque start
   mpINormalStream->enque(enqueParams);
// stop P2A Enque timer
// enque end! print the time used //reqID=409, exec-time(enque)=1 msec
// when this function is ended ,callback onP2Callback() will be called
}
P2AFMNode::onP2Callback()
{
MBOOL P2AFMNode::handleP2Done()
{
// stop timer if node's status is not in flush
 pRequest->mTimer.stopP2AFM();
//reqID=409 , p2 exec-time=11 ms
// enque request into P2ABayer Node
          handleData(BAYER_ENQUE, pRequest);
// dump buffer first//onData(DataID id, Type3& buffer),so we finally will call onData to dump the data to the buffer
//config a filename,the filename is ended with .raw  
config = DumpConfig(NULL, ".raw", MTRUE);
//perform dump operation. dump a raw file
this->handleDump(TO_DUMP_RAWS, pRequest, &config);
//config a config,not a file 
config = DumpConfig(NULL, NULL, MFALSE);
//perform dump operation. dump data to a buffer
this->handleDump(TO_DUMP_BUFFERS, pRequest, &config);
// handle flow type task
onHandleFlowTypeP2Done(pRequest);
// launch flow option p2 done
mpFlowOption->onP2ProcessDone(this, pRequest)
{
DepthMapFlowOption_VSDOF::onP2ProcessDone()
{
// mark buffer ready and handle data (FD, MV_F , MV_F_CAP)
    if(pRequest->setOutputBufferReady(BID_P2A_OUT_FDIMG))
          pNode->handleDataAndDump(P2A_OUT_FD, pRequest);
       // MV_F
if(pRequest->setOutputBufferReady(BID_P2A_OUT_MV_F))
  pNode->handleDataAndDump(P2A_OUT_MV_F, pRequest);
// MV_F_CAP
if(pRequest->setOutputBufferReady(BID_P2A_OUT_MV_F_CAP))
  pNode->handleDataAndDump(P2A_OUT_MV_F_CAP, pRequest);
// skip depth(return) if skip depth is true
        {pNode->handleData(QUEUED_FLOW_DONE, pRequest);return MTRUE;}
/*-------------------------------------------first we have a seen of the configOutBuffer()------------------------------------------------------------------------------------*/


NodeBufferHandler::configOutBuffer( DepthMapPipeNodeID  srcNodeID,  DepthMapBufferID  bufferID,  DepthMapPipeNodeID  outNodeID )
{
   configInOutBuffer(srcNodeID, bufferID, outNodeID, bufferID)
   {
mpBufferPoolMgr->queryBufferType(srcBufferID, mReqAttr.bufferScenario, bufferType);
if(bufferType == eBUFFER_IMAGE)
{
// read the buffer out
          SmartImageBuffer smBuf;
          BIDToSmartBufferMap queuedBufferMap;


  queuedBufferMap = mEnqueBufferMap.valueFor(srcNodeID);


  bufIndex = queuedBufferMap.indexOfKey(srcBufferID);
  smBuf = queuedBufferMap.valueAt(bufIndex);
          this->addOutputBuffer(outNodeID, outBufferID, smBuf)
  {
//bind bufferID with buffer
bidTuningBufMap.add(bufferID, smTuningBuf);
  }
  return true;
}else if(bufferType == eBUFFER_GRAPHIC)
{
// siminar with the up
  SmartGraphicBuffer smBuf;
          BIDToGraphicBufferMap queuedBufferMap;
// ................
  queuedBufferMap = mEnqueGraphicBufferMap.valueFor(srcNodeID);
// ................
}else if(bufferType == eBUFFER_TUNING)
{
// siminar with the up
  SmartTuningBuffer smBuf;
          BIDToTuningBufferMap queuedBufferMap;
// ................
  queuedBufferMap = mEnqueTuningBufferMap.valueFor(srcNodeID);
// ................
}
   }
}
/*-------------------------------------------------------------------------------------------------------------------------------*/
// config output buffers for N3D input
      // FEO
    pBufferHandler->configOutBuffer(eDPETHMAP_PIPE_NODEID_P2AFM, BID_P2A_OUT_FE1BO, eDPETHMAP_PIPE_NODEID_N3D);
    pBufferHandler->configOutBuffer(eDPETHMAP_PIPE_NODEID_P2AFM, BID_P2A_OUT_FE2BO, eDPETHMAP_PIPE_NODEID_N3D);
    pBufferHandler->configOutBuffer(eDPETHMAP_PIPE_NODEID_P2AFM, BID_P2A_OUT_FE1CO, eDPETHMAP_PIPE_NODEID_N3D);
    pBufferHandler->configOutBuffer(eDPETHMAP_PIPE_NODEID_P2AFM, BID_P2A_OUT_FE2CO, eDPETHMAP_PIPE_NODEID_N3D);
      // FMO
    pBufferHandler->configOutBuffer(eDPETHMAP_PIPE_NODEID_P2AFM, BID_P2A_OUT_FMBO_LR, eDPETHMAP_PIPE_NODEID_N3D);
    pBufferHandler->configOutBuffer(eDPETHMAP_PIPE_NODEID_P2AFM, BID_P2A_OUT_FMBO_RL, eDPETHMAP_PIPE_NODEID_N3D);
    pBufferHandler->configOutBuffer(eDPETHMAP_PIPE_NODEID_P2AFM, BID_P2A_OUT_FMCO_LR, eDPETHMAP_PIPE_NODEID_N3D);
    pBufferHandler->configOutBuffer(eDPETHMAP_PIPE_NODEID_P2AFM, BID_P2A_OUT_FMCO_RL, eDPETHMAP_PIPE_NODEID_N3D);
      // CC_in/Rect_in
    pBufferHandler->configOutBuffer(eDPETHMAP_PIPE_NODEID_P2AFM, BID_P2A_OUT_CC_IN1, eDPETHMAP_PIPE_NODEID_N3D);
           pBufferHandler->configOutBuffer(eDPETHMAP_PIPE_NODEID_P2AFM, BID_P2A_OUT_CC_IN2, eDPETHMAP_PIPE_NODEID_N3D);
    pBufferHandler->configOutBuffer(eDPETHMAP_PIPE_NODEID_P2AFM, BID_P2A_OUT_RECT_IN1, eDPETHMAP_PIPE_NODEID_N3D);
    pBufferHandler->configOutBuffer(eDPETHMAP_PIPE_NODEID_P2AFM, BID_P2A_OUT_RECT_IN2, eDPETHMAP_PIPE_NODEID_N3D);
// P2A pass to N3D
  pNode->handleDataAndDump(P2A_TO_N3D_FEFM_CCin, pRequest);
// P2A output to OCC
  pNode->handleDataAndDump(P2A_TO_OCC_MY_S, pRequest);
//perform handleData and dumpping buffer
handleDataAndDump(DataID id, DepthMapRequestPtr &request)
{
        // dump first and then handle data 
   this->onDump(id, request)
   {
DepthMapPipeNode::onDump(DataID id,DepthMapRequestPtr &request,const char* fileName=NULL,const char* postfix=NULL)
{
   if(pRequest->getRequestAttr().opState == eSTATE_NORMAL)
snprintf(filepath, 1024, "/sdcard/vsdof/pv_vr/%s/%d/%s", dir, iReqIdx, getName());
   else
        snprintf(filepath, 1024, "/sdcard/vsdof/capture/%s/%d/%s", dir, iReqIdx, getName());
   for(size_t i=0;i<vDumpBufferID.size();++i)
       {
// get a IImageBuffer frame
pBufferHandler->getEnqueBuffer(this->getNodeId(), BID, pImgBuf);
// config a filename with a absolutely route writepath/filename.postfix
// for example: /sdcard/vsdof/pv_vr/Rear/1/P2AFM/BID_P2A_OUT_MY_S_240x136.yuv
// saveToFile:
pImgBuf->saveToFile(writepath);
       }
   
}
   }
   DepthMapPipeNode::handleData(id, request)
   {
// handle data for DepthMapNode
//use a template to call DepthMapDataHandler::handleData(),but not found
CamThreadNode<DepthMapDataHandler>::handleData(id, pReq)
{
 
}
   }
}

// if op state is capture
   {
       pRequest->setOutputBufferReady(BID_P2A_OUT_POSTVIEW);
        // notify YUV done
        pNode->handleDataAndDump(P2A_OUT_YUV_DONE, pRequest);
        // pass to FD node
        pBufferHandler->configOutBuffer(eDPETHMAP_PIPE_NODEID_P2AFM, BID_P2A_OUT_FDIMG, eDPETHMAP_PIPE_NODEID_FD);
        pNode->handleDataAndDump(P2A_TO_FD_IMG, pRequest);
       }


}    
}
}

發佈了46 篇原創文章 · 獲贊 11 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章