chenke
2017-07-25 ce8dd708c484c63a64b94273d3e962188cdcfede
VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp
@@ -15,10 +15,12 @@
#include <face_daemon_proto.h>
#include <stdlib.h>
#include <endian.h>
#include "DebugNetwork.h"
#include "TeleWrapper.h"
#include "TeleWrapper.h"
#include "cpu_sched_test.h"
//#include <mediastreamer2/include/mediastreamer2/msjava.h>
@@ -31,9 +33,9 @@
CameraWrapper g_CameraWrappers[CAMERA_COUNT];
TeleWrapper g_TeleWrapper;
CaptureCamera g_CaptureCamera;
TeleWrapper g_TeleWrapper;
extern "C"
{
@@ -41,6 +43,8 @@
void Java_cn_com_basic_face_util_RtspFaceNative_init(JNIEnv *env, jclass clazz)
{
    g_logger.set_level(INFO);
    cpu_sched();
#ifdef USE_ST_SDK
    PipeLine::register_global_elem_creator("PL_SensetimeFaceTrack", create_PL_SensetimeFaceTrack);
@@ -55,6 +59,7 @@
        g_CameraWrappers[i].pipeLineRender = new PipeLine;
        //PipeLine& pipeLine(*(g_CameraWrappers[i].pipeLineDecoderDetector));
    }
    g_TeleWrapper.start();
}
@@ -188,16 +193,14 @@
static void *getSurfaceHolderGetSurface(JNIEnv *env, jobject jobjSurfaceHolder)
{
    jclass jcSurfaceHolder = env->FindClass("android/view/SurfaceHolder");
    jmethodID jmSurfaceHolder_getSurface = env->GetMethodID(jcSurfaceHolder, "getSurface",
                                                            "()Landroid/view/Surface;");
    jmethodID jmSurfaceHolder_getSurface = env->GetMethodID(jcSurfaceHolder, "getSurface", "()Landroid/view/Surface;");
    jobject surface = env->CallObjectMethod(jobjSurfaceHolder, jmSurfaceHolder_getSurface);
    return surface;
}
// set the surface
void
Java_cn_com_basic_face_util_RtspFaceNative_setSurface(JNIEnv *env, jclass clazz, jint cameraIdx,
                                                      jobject surfaceRender)
void Java_cn_com_basic_face_util_RtspFaceNative_setSurface(JNIEnv *env, jclass clazz, jint cameraIdx,
                                                           jobject surfaceRender)
{
    LOG_DEBUG << "@@@ Java_cn_com_basic_face_util_RtspFaceNative_setSurface" << LOG_ENDL;
    assert(cameraIdx > 0 && cameraIdx <= CAMERA_COUNT);
@@ -223,6 +226,22 @@
    cameraWrapper.windowRender = ANativeWindow_fromSurface(env, surfaceRender);
    cameraWrapper.asvrConfig.windowSurface = cameraWrapper.windowRender; // support reset
    //cameraWrapper.windowRender = ANativeWindow_fromSurface(env, (jobject)getSurfaceHolderGetSurface(env, surfaceRender));
    {
        ANativeWindow* window = (ANativeWindow*)(cameraWrapper.windowRender);
        ANativeWindow_Buffer buffer;
        if(cameraWrapper.windowRender != nullptr && ANativeWindow_lock(window, &buffer, NULL) == 0)
        {
            cameraWrapper.plScaleCfg.toHeight=buffer.height;
            cameraWrapper.plScaleCfg.toWidth=buffer.stride;
            ANativeWindow_unlockAndPost(window);
        }
        else
        {
            cameraWrapper.plScaleCfg.toHeight=480;
            cameraWrapper.plScaleCfg.toWidth=640;
        }
    }
    LOGP(DEBUG, "@@@ setsurface %p,%p", cameraWrapper.windowDecode, cameraWrapper.windowRender);
}
@@ -302,7 +321,8 @@
        cameraWrapper.asvrConfig.outputOriginFrame = true;
        cameraWrapper.asvrConfig.outputRenderFrame = true;
        cameraWrapper.asvrConfig.scaleToWidth = 0;
        cameraWrapper.asvrConfig.scaleToHeight = 0;
      cameraWrapper.asvrConfig.scaleToHeight = 0;
      cameraWrapper.asvrConfig.directlyDisplay = true;
    }
    {
@@ -321,7 +341,9 @@
        cameraWrapper.sftConfig.score_min = 0.2f;
    }
    bool ret = cameraWrapper.initPl();
   cameraWrapper.fontPath = "/data/msyh.ttc";
   bool ret = cameraWrapper.initPl();
    if (ret)
        return (cameraWrapper.start() ? JNI_TRUE : JNI_FALSE);
    else
@@ -336,7 +358,7 @@
    assert(cameraIdx > 0 && cameraIdx <= CAMERA_COUNT);
    cameraIdx -= 1;
    CameraWrapper &cameraWrapper(g_CameraWrappers[cameraIdx]);
    CameraWrapper& cameraWrapper(g_CameraWrappers[cameraIdx]);
    cameraWrapper.stop();
}
@@ -480,9 +502,7 @@
    evpHeader->size = sizeof(EVPHeader) + sizeof(FDP_FaceDetectPB) + buffSize;
    buffSize = evpHeader->size;
    FDP_FaceDetectPB *fdpFaceDetectPB = new(buffer + sizeof(EVPHeader)) FDP_FaceDetectPB(dbId,
                                                                                         cameraIdx +
                                                                                         1);
    FDP_FaceDetectPB *fdpFaceDetectPB = new(buffer + sizeof(EVPHeader)) FDP_FaceDetectPB(dbId, cameraIdx + 1);
    evpHeader->hton();
    fdpFaceDetectPB->hton();
@@ -735,54 +755,54 @@
}
bool Java_cn_com_basic_face_util_RtspFaceNative_telCall(JNIEnv *env, jclass clazz, jstring phone)
bool Java_cn_com_basic_face_util_RtspFaceNative_teleCall(JNIEnv *env, jclass clazz, jstring phone)
{
    std::string _phone;
    {
        const char *utfFunc = env->GetStringUTFChars(phone, NULL);
        _phone = utfFunc;
        env->ReleaseStringUTFChars(phone, utfFunc);
    }
   std::string _phone;
   {
      const char *utfFunc = env->GetStringUTFChars(phone, NULL);
      _phone = utfFunc;
      env->ReleaseStringUTFChars(phone, utfFunc);
   }
    const char *phoneNum = _phone.c_str();
      TeleTask  task;
      task.command= TeleTask::CALL;
      task.param = phoneNum;
      g_TeleWrapper.push(task);
   const char *phoneNum = _phone.c_str();
   TeleTask  task;
   task.command= TeleTask::CALL;
   task.param = phoneNum;
   LOG_INFO << "Java_cn_com_basic_face_util_RtspFaceNative_telCall::jni" << LOG_ENDL;
   //
   g_TeleWrapper.pushTask(task);
}
void Java_cn_com_basic_face_util_RtspFaceNative_Hang(JNIEnv *env, jclass clazz)
void Java_cn_com_basic_face_util_RtspFaceNative_teleHang(JNIEnv *env, jclass clazz)
{
     TeleTask  task;
    task.command =TeleTask::HANGUP;
    g_TeleWrapper.push(task);
   TeleTask  task;
   task.command =TeleTask::HANGUP;
   //
   g_TeleWrapper.pushTask(task);
}
void Java_cn_com_basic_face_util_RtspFaceNative_TelShutdown(JNIEnv *env, jclass clazz)
void Java_cn_com_basic_face_util_RtspFaceNative_teleShutdown(JNIEnv *env, jclass clazz)
{
   LOG_DEBUG << "@@@ Java_cn_com_basic_face_util_RtspFaceNative_telShutdown" << LOG_ENDL;
   g_TeleWrapper.stop();
   LOG_DEBUG << "@@@ Java_cn_com_basic_face_util_RtspFaceNative_telShutdown" << LOG_ENDL;
   g_TeleWrapper.stop();
}
void Java_cn_com_basic_face_util_RtspFaceNative_setFaceLabel(JNIEnv *env, jclass clazz, jint cameraIdx, jint stTrackId, jstring phoneNumber)
void Java_cn_com_basic_face_util_RtspFaceNative_setFaceLabel(JNIEnv *env, jclass clazz, jint cameraIdx, jint stTrackId, jstring label)
{
    LOG_DEBUG << "@@@ Java_cn_com_basic_face_util_RtspFaceNative_setFaceLabel" << LOG_ENDL;
    assert(cameraIdx > 0 && cameraIdx <= CAMERA_COUNT);
    cameraIdx -= 1;
    CameraWrapper &cameraWrapper(g_CameraWrappers[cameraIdx]);
    const jchar* jchars = env->GetStringChars(label, nullptr);
    std::wstring wstr;
    int lenth = env->GetStringLength(label);
    std::string _phoneNumber;
    {
        const char *utfFunc = env->GetStringUTFChars(phoneNumber, NULL);
        _phoneNumber = utfFunc;
        env->ReleaseStringUTFChars(phoneNumber, utfFunc);
    for (int i = 0; i < lenth; ++i) {
        jchar jc = *(jchars + i);
        wchar_t wt = (wchar_t)jc;
        wstr.push_back(wt);
    }
    cameraWrapper.setFaceLabel(stTrackId, _phoneNumber);
    env->ReleaseStringChars(label,jchars);
    cameraWrapper.setFaceLabel(stTrackId, wstr);
}
} // extern C