houxiao
2017-08-17 2b43077d967c28fe99e1ff2b99f19e1433c710d9
VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperClient.cpp
@@ -5,7 +5,6 @@
#include <PL_Gainer.h>
#include <PL_Paint.h>
#include <PL_Scale.h>
#include <PL_V4L2Source.h>
#include <PL_BlockGrouping.h>
#include <PL_ColorConv.h>
#include <PL_AndroidMediaCodecEncoder.h>
@@ -48,7 +47,13 @@
        running = false;
        return false;
    }
    ret = pthread_create(&jni_call_thid, NULL, CameraWrapper::jni_call_thd, this);
    if(ret != 0)
    {
        LOGP(ERROR, "pthread_create jni_call_thid: %s/n", strerror(ret));
        running = false;
        return false;
    }
    return true;
}
@@ -97,7 +102,6 @@
    PipeLine::register_global_elem_creator("PL_Scale", create_PL_Scale);
    PipeLine::register_global_elem_creator("PL_ColorConv", create_PL_ColorConv);
    PipeLine::register_global_elem_creator("PL_Paint", create_PL_Paint);
    PipeLine::register_global_elem_creator("PL_V4L2Source", create_PL_V4L2Source);
    bool ret = initPl_DecoderPl();
    if (!ret)
@@ -204,33 +208,13 @@
        faceLabels.clear();
    faceLabels.insert(std::make_pair(st_track_id, label));
    LOG_ERROR <<"client setFaceLabel : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<< LOG_ENDL;
}
void CameraWrapper::fireFaceCount(int faceCount)
{
    // double check it's all ok
    int getEnvStat = javaVM->GetEnv((void **)&(javaEnv), JNI_VERSION_1_6);
    if (getEnvStat == JNI_EDETACHED)
    {
        //LOG_WARN << "GetEnv: not attached" << std::endl;
        if (javaVM->AttachCurrentThread(&(javaEnv), NULL) != 0)
            LOG_WARN << "Failed to attach" << LOG_ENDL;
        else
            getEnvStat = JNI_OK;
    }
    else if (getEnvStat == JNI_OK){
    }
    else if (getEnvStat == JNI_EVERSION)
        LOG_WARN << "GetEnv: version not supported" << LOG_ENDL;
    else if (getEnvStat == JNI_ERR)
        LOG_WARN << "GetEnv: JNI_ERR" << LOG_ENDL;
    javaEnv->CallStaticVoidMethod(faceCallbackClazz, faceCallbackFunc, cameraIdx, faceCount);
    if (javaEnv->ExceptionCheck())
        javaEnv->ExceptionDescribe();
    javaVM->DetachCurrentThread();
    this->faceCount = faceCount;
    this->faceCountChanged = true;
}
bool cw_pm_breaker_ptr_paint(const PipeMaterial* pm, void* args)
@@ -296,7 +280,7 @@
void test_paint(CameraWrapper& cameraWrapper)
{
   cameraWrapper.plplContext.clear();
   //cameraWrapper.plplContext.clear();
   cameraWrapper.plplContext.cmds.push_back(PLPLC_WTEXT);
    cameraWrapper.plplContext.params.push_back(100);
@@ -380,7 +364,7 @@
    while(cameraWrapper.running)
    {
        sleep(10);
        continue;
        if (time(nullptr) - cameraWrapper.lastAliveTime > 20)
        {
            PL_RTSPClient* rtspClient = (PL_RTSPClient*)cameraWrapper.pipeLineDecoderDetector->at(0);
@@ -390,3 +374,43 @@
        }
    }
}
void *CameraWrapper::jni_call_thd(void *arg) {
    CameraWrapper* cameraWrapper = (CameraWrapper*)arg;
    while(cameraWrapper->running)
    {
        if(cameraWrapper->faceCountChanged){
            // double check it's all ok
            LOG_ERROR <<"client fireFaceCount start!!!!!!!!"<< LOG_ENDL;
            int getEnvStat = cameraWrapper->javaVM->GetEnv((void **)&(cameraWrapper->javaEnv), JNI_VERSION_1_6);
            if (getEnvStat == JNI_EDETACHED)
            {
                //LOG_WARN << "GetEnv: not attached" << std::endl;
                if (cameraWrapper->javaVM->AttachCurrentThread(&(cameraWrapper->javaEnv), NULL) != 0)
                    LOG_WARN << "Failed to attach" << LOG_ENDL;
                else
                    getEnvStat = JNI_OK;
            }
            else if (getEnvStat == JNI_OK){
            }
            else if (getEnvStat == JNI_EVERSION)
                LOG_WARN << "GetEnv: version not supported" << LOG_ENDL;
            else if (getEnvStat == JNI_ERR)
                LOG_WARN << "GetEnv: JNI_ERR" << LOG_ENDL;
            LOG_ERROR <<"client fireFaceCount end!!!!!!!!!!!!"<< LOG_ENDL;
            cameraWrapper->javaEnv->CallStaticVoidMethod(cameraWrapper->faceCallbackClazz,
                                                         cameraWrapper->faceCallbackFunc,
                                                         cameraWrapper->cameraIdx,
                                                         cameraWrapper->faceCount);
            if (cameraWrapper->javaEnv->ExceptionCheck())
                cameraWrapper->javaEnv->ExceptionDescribe();
            cameraWrapper->javaVM->DetachCurrentThread();
            cameraWrapper->faceCountChanged = false;
        }
        usleep(10000);
    }
}