qvyuanxin
2017-07-10 2f52ba12c4518a0de2478fca130997e73e514e09
VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapper.cpp
@@ -20,7 +20,7 @@
   LOG_INFO << "CameraWrapper::start" << LOG_ENDL;
   running = true;
   int ret = pthread_create(&live_daemon_thid, NULL, CameraWrapper::live_daemon_thd, this);
   int ret = pthread_create(&decoder_thid, NULL, CameraWrapper::decoder_thd, this);
   if(ret != 0)
   {
      LOGP(ERROR, "pthread_create: %s/n", strerror(ret));
@@ -39,7 +39,7 @@
      return;
   running = false;
   pthread_join(live_daemon_thid, NULL);
   pthread_join(decoder_thid, NULL);
}
static float pl_analizer_plbg_user_score_2_func(const MB_Frame* frame, const PLGH_Rect& rects, uint8_t* croppedData)
@@ -56,6 +56,7 @@
        RectWrapper rw;
        rw.rect = iter->rect;
        rw.user_score_1 = ((90.0f - std::abs(iter->yaw)) + (90.0f - std::abs(iter->pitch)) + (90.0f - std::abs(iter->roll))) / 90.0f / 3 * iter->score;
        rw.userData = (void*)(iter->id);
        rects.push_back(rw);
    }
}
@@ -193,7 +194,8 @@
bool cw_pm_breaker_ptr_paint(const PipeMaterial* pm, void* args)
{
    PLPLContext& plplContext(*(PLPLContext*)args);
    CameraWrapper& cameraWrapper = *(CameraWrapper*)args;
    PLPLContext& plplContext(cameraWrapper.plplContext);
    const st_ff_vect_t& faceFeatures(*(const st_ff_vect_t*)(pm->buffer));
    plplContext.cmds.clear();
@@ -233,6 +235,16 @@
        plplContext.params.push_back(iter->rect.leftTop.Y);
        plplContext.params.push_back(iter->rect.rightBottom.X);
        plplContext.params.push_back(iter->rect.rightBottom.Y);
        std::map<int, std::string>::iterator iterFaceLabel = cameraWrapper.faceLabels.find(iter->id);
        if (iterFaceLabel != cameraWrapper.faceLabels.end())
        {
            plplContext.cmds.push_back(PLPLC_TEXT);
            plplContext.params.push_back(iter->rect.leftTop.X);
            plplContext.params.push_back(iter->rect.leftTop.Y);
            const char* label = iterFaceLabel->second.c_str();
            plplContext.params.push_back(PLPLType(label));
        }
    }
    return false;
@@ -255,9 +267,28 @@
    return false;
}
/*static*/ void* CameraWrapper::live_daemon_thd(void* arg)
void test_paint(CameraWrapper& cameraWrapper)
{
   LOG_INFO << "CameraWrapper::live_daemon_thd start" << LOG_ENDL;
    cameraWrapper.setFaceLabel(0, "vip");
    cameraWrapper.setFaceLabel(1, "abc");
    cameraWrapper.setFaceLabel(2, "wrn");
    cameraWrapper.plplContext.cmds.push_back(PLPLC_COLOR);
    cameraWrapper.plplContext.params.push_back('F');
    cameraWrapper.plplContext.params.push_back(255);
    cameraWrapper.plplContext.params.push_back(0);
    cameraWrapper.plplContext.params.push_back(0);
    cameraWrapper.plplContext.params.push_back(255);
    cameraWrapper.plplContext.cmds.push_back(PLPLC_RECT);
    cameraWrapper.plplContext.params.push_back(20);
    cameraWrapper.plplContext.params.push_back(20);
    cameraWrapper.plplContext.params.push_back(100);
    cameraWrapper.plplContext.params.push_back(100);
}
/*static*/ void* CameraWrapper::decoder_thd(void* arg)
{
   LOG_INFO << "CameraWrapper::decoder_thd start" << LOG_ENDL;
   CameraWrapper& cameraWrapper = *(CameraWrapper*)arg;
@@ -284,25 +315,15 @@
                pmAnalizer.breake(PipeMaterial::PMT_PTR, MB_Frame::MBFT__FIRST, cw_pm_breaker_ptr_face, &(cameraWrapper));
        }
        pm.breake(PipeMaterial::PMT_PTR, MB_Frame::MBFT__FIRST, cw_pm_breaker_ptr_paint, &(cameraWrapper.plplContext));
        pm.breake(PipeMaterial::PMT_PTR, MB_Frame::MBFT__FIRST, cw_pm_breaker_ptr_paint, &(cameraWrapper));
        //#debug
        //cameraWrapper.plplContext.cmds.push_back(PLPLC_COLOR);
        //cameraWrapper.plplContext.params.push_back('F');
        //cameraWrapper.plplContext.params.push_back(255);
        //cameraWrapper.plplContext.params.push_back(0);
        //cameraWrapper.plplContext.params.push_back(0);
        //cameraWrapper.plplContext.params.push_back(255);
        //cameraWrapper.plplContext.cmds.push_back(PLPLC_RECT);
        //cameraWrapper.plplContext.params.push_back(20);
        //cameraWrapper.plplContext.params.push_back(20);
        //cameraWrapper.plplContext.params.push_back(100);
        //cameraWrapper.plplContext.params.push_back(100);
        //test_paint(cameraWrapper);
        cameraWrapper.pipeLineRender->pipe(&pm);
   }
   
   LOG_INFO << "CameraWrapper::live_daemon_thd stop, ret=" << LOG_ENDL;
   LOG_INFO << "CameraWrapper::decoder_thd stop, ret=" << LOG_ENDL;
}
void CameraWrapper::lockFace()
@@ -314,3 +335,11 @@
{
   faceCacheLocked = false;
}
void CameraWrapper::setFaceLabel(int st_track_id, const std::string& label)
{
    if (faceLabels.size() > 32)
        faceLabels.clear();
    faceLabels.insert(std::make_pair(st_track_id, label));
}