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)
@@ -209,31 +213,8 @@
void CameraWrapper::fireFaceCount(int faceCount)
{
    // double check it's all ok
    LOG_ERROR <<"client fireFaceCount start!!!!!!!!"<< LOG_ENDL;
    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;
    LOG_ERROR <<"client fireFaceCount end!!!!!!!!!!!!"<< 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)
@@ -393,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);
    }
}