From 8eea61c73626671e014d8237413f7d534f69e019 Mon Sep 17 00:00:00 2001
From: xuxiuxi <xuxiuxi@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期五, 23 六月 2017 13:39:40 +0800
Subject: [PATCH]
---
VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp | 106 ++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 77 insertions(+), 29 deletions(-)
diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp
index fa09ee6..2607ae2 100644
--- a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp
+++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp
@@ -24,6 +24,8 @@
//std::fstream logss("/storage/emulated/0/log.log", std::fstream::out);
Logger g_logger(logss);
+static std::string g_stface_license_str;
+
CameraWrapper g_CameraWrappers[CAMERA_COUNT];
extern "C"
@@ -40,9 +42,11 @@
for (size_t i = 0; i < CAMERA_COUNT; i++)
{
g_CameraWrappers[i].cameraIdx = i + 1;
-
- g_CameraWrappers[i].pipeLine = new PipeLine;
- PipeLine& pipeLine(*(g_CameraWrappers[i].pipeLine));
+
+ g_CameraWrappers[i].pipeLineDecoderDetector = new PipeLine;
+ g_CameraWrappers[i].pipeLineAnalyzer = new PipeLine;
+ g_CameraWrappers[i].pipeLineRender = new PipeLine;
+ //PipeLine& pipeLine(*(g_CameraWrappers[i].pipeLineDecoderDetector));
}
}
@@ -60,17 +64,17 @@
env->ReleaseStringUTFChars(ipaddr, utf8);
}
-static jclass _jcOutputSurface = nullptr;
-static jmethodID _jmOutputSurface_ctor = nullptr;
-static jmethodID _jmOutputSurface_getSurface = nullptr;
-static jmethodID _jmOutputSurface_readPixels = nullptr;
-static jmethodID _jmOutputSurface_awaitNewImage = nullptr;
-static jmethodID _jmOutputSurface_drawImage = nullptr;
-static jmethodID _jmOutputSurface_makeCurrent = nullptr;
-
-static jobject _jobjOutputSurface = nullptr;
-static jobject _jobjSurface = nullptr;
-static JNIEnv *_env = nullptr;
+//static jclass _jcOutputSurface = nullptr;
+//static jmethodID _jmOutputSurface_ctor = nullptr;
+//static jmethodID _jmOutputSurface_getSurface = nullptr;
+//static jmethodID _jmOutputSurface_readPixels = nullptr;
+//static jmethodID _jmOutputSurface_awaitNewImage = nullptr;
+//static jmethodID _jmOutputSurface_drawImage = nullptr;
+//static jmethodID _jmOutputSurface_makeCurrent = nullptr;
+//
+//static jobject _jobjOutputSurface = nullptr;
+//static jobject _jobjSurface = nullptr;
+//static JNIEnv *_env = nullptr;
void readPixels(void* surface, uint8_t* buf, size_t& maxSize)
{
@@ -192,14 +196,14 @@
CameraWrapper& cameraWrapper(g_CameraWrappers[cameraIdx]);
// obtain a native windowRender from a Java surface
- //if (cameraWrapper.windowDecode != nullptr)
- //{
- // ANativeWindow_release((ANativeWindow*)(cameraWrapper.windowDecode));
- // cameraWrapper.windowDecode = NULL;
- //}
- //cameraWrapper.windowDecode = ANativeWindow_fromSurface(env, surfaceDecoder);
- //cameraWrapper.windowDecode = getSurfaceHolderGetSurface(env, surfaceDecoder);
- //cameraWrapper.windowDecode = ANativeWindow_fromSurface(env, (jobject)getSurfaceHolderGetSurface(env, surfaceDecoder));
+ if (cameraWrapper.windowDecode != nullptr)
+ {
+ ANativeWindow_release((ANativeWindow*)(cameraWrapper.windowDecode));
+ cameraWrapper.windowDecode = NULL;
+ }
+ cameraWrapper.windowDecode = ANativeWindow_fromSurface(env, surfaceRender);
+ //cameraWrapper.windowDecode = getSurfaceHolderGetSurface(env, surfaceRender);
+ //cameraWrapper.windowDecode = ANativeWindow_fromSurface(env, (jobject)getSurfaceHolderGetSurface(env, surfaceRender));
if (cameraWrapper.windowRender != nullptr)
{
@@ -207,6 +211,7 @@
cameraWrapper.windowRender = NULL;
}
cameraWrapper.windowRender = ANativeWindow_fromSurface(env, surfaceRender);
+ cameraWrapper.asvrConfig.windowSurface = cameraWrapper.windowRender; // support reset
//cameraWrapper.windowRender = ANativeWindow_fromSurface(env, (jobject)getSurfaceHolderGetSurface(env, surfaceRender));
LOGP(DEBUG, "@@@ setsurface %p,%p", cameraWrapper.windowDecode, cameraWrapper.windowRender);
@@ -220,22 +225,49 @@
CameraWrapper& cameraWrapper(g_CameraWrappers[cameraIdx]);
+ int w=0,h=0;//#todo
+
{
const char *utf8Uri = env->GetStringUTFChars(uri, NULL);
cameraWrapper.rtspConfig.rtspURL = utf8Uri;
env->ReleaseStringUTFChars(uri, utf8Uri);
- cameraWrapper.rtspConfig.progName = "RtspNativeCodec";
+ if(cameraWrapper.rtspConfig.rtspURL.find("/main/") != std::string::npos || cameraWrapper.rtspConfig.rtspURL.find("subtype=0") != std::string::npos)//#todo temp use
+ {
+ w=1920;h=1080;
+ }
+ else if (cameraWrapper.rtspConfig.rtspURL.find("/h264/") != std::string::npos && cameraWrapper.rtspConfig.rtspURL.find("/sub/") != std::string::npos)
+ {
+ w=640;h=480;
+ }
+ else if (cameraWrapper.rtspConfig.rtspURL.find("/h264_2") != std::string::npos)
+ {
+ w=640;h=480;
+ }
+ else if (cameraWrapper.rtspConfig.rtspURL.find("/h264") != std::string::npos)
+ {
+ w = 1920;h = 1080;
+ }
+ else if (cameraWrapper.rtspConfig.rtspURL.find("subtype=2") != std::string::npos)
+ {
+ w=1280;h=720;
+ }
+ else
+ {
+ w=640;h=480;
+ }
+
+ cameraWrapper.rtspConfig.progName = "RtspNativeCodec";
cameraWrapper.rtspConfig.aux = true; // ffmpeg need aux, but live555 not
cameraWrapper.rtspConfig.verbosityLevel = 1;
cameraWrapper.rtspConfig.tunnelOverHTTPPortNum = 0;
- cameraWrapper.rtspConfig.args = nullptr;
+ cameraWrapper.rtspConfig.args = nullptr;
}
{
cameraWrapper.amcdConfig.ak_mime = "video/avc";
- cameraWrapper.amcdConfig.ak_width = 1920;
- cameraWrapper.amcdConfig.ak_height = 1080; // nvida yuv420p,1088; Amlogic yuv420p,1080
+ cameraWrapper.amcdConfig.ak_width = w;
+ cameraWrapper.amcdConfig.ak_height = h; // nvida yuv420p,1088; Amlogic yuv420p,1080; RK3288 NV12
//cameraWrapper.amcdConfig.windowSurfaceDecode = cameraWrapper.windowDecode; //cameraWrapper.windowDecode;
//cameraWrapper.amcdConfig.windowSurfaceRender = cameraWrapper.windowRender; //cameraWrapper.windowRender;
cameraWrapper.amcdConfig.releaseOutputBuffIdx = true;
@@ -254,8 +286,8 @@
cameraWrapper.asvrConfig.windowSurface = cameraWrapper.windowRender;
cameraWrapper.asvrConfig.outputOriginFrame = true;
cameraWrapper.asvrConfig.outputRenderFrame = true;
- cameraWrapper.asvrConfig.scaleToWidth = 640;
- cameraWrapper.asvrConfig.scaleToHeight = 480;
+ cameraWrapper.asvrConfig.scaleToWidth = 0;
+ cameraWrapper.asvrConfig.scaleToHeight = 0;
}
{
@@ -264,9 +296,14 @@
cameraWrapper.sftConfig.draw_face_rect = false;
cameraWrapper.sftConfig.draw_face_feature_point = false;
cameraWrapper.sftConfig.generate_face_feature = true;
+ cameraWrapper.sftConfig.generate_face_point = false;
cameraWrapper.sftConfig.explode_feature_rect_x = 30;
cameraWrapper.sftConfig.explode_feature_rect_y = 40;
- cameraWrapper.sftConfig.doTrackPerFrame = 50;
+ cameraWrapper.sftConfig.clamp_feature_rect = true;
+ cameraWrapper.sftConfig.doTrackPerFrame = 1;
+ //cameraWrapper.sftConfig.license_str = g_stface_license_str;
+ cameraWrapper.sftConfig.visionConeAngle = 35.0f;
+ cameraWrapper.sftConfig.score_min = 0.2f;
}
bool ret = cameraWrapper.initPl();
@@ -601,4 +638,15 @@
// dbgReadTexture();
//}
+void Java_cn_com_basic_face_util_RtspFaceNative_dbgSetStfaceLicense(JNIEnv *env, jclass clazz, jstring lic)
+{
+ LOG_WARN << "@@@ Java_cn_com_basic_face_util_RtspFaceNative_dbgSetStfaceLicense" << LOG_ENDL;
+
+ const char *utfLic = env->GetStringUTFChars(lic, NULL);
+ g_stface_license_str = utfLic;
+ env->ReleaseStringUTFChars(lic, utfLic);
+
+ //LOG_ERROR << g_stface_license_str << LOG_ERROR;
+}
+
}
--
Gitblit v1.8.0