From afcb649c8a2785c6095be5762c6077f9e15afd1a Mon Sep 17 00:00:00 2001 From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674> Date: 星期三, 02 八月 2017 10:33:31 +0800 Subject: [PATCH] c++ dupl image --- VisitFace/RtspNativeCodec/app/src/main/cpp/cpu_sched_test.cpp | 18 +++- VisitFace/RtspNativeCodec/app/src/main/cpp/FaceCacheForPLBG.cpp | 48 +++++++++++ VisitFace/RtspNativeCodec/app/src/main/java/com/example/nativecodec/NativeCodec.java | 12 ++ VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp | 5 VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt | 157 +++++++++++++++++++++------------------ 5 files changed, 154 insertions(+), 86 deletions(-) diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt b/VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt index 7c2ed7a..8511bca 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt @@ -6,52 +6,57 @@ #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -std=c++11 -fno-rtti -Wall -UNDEBUG") #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -std=c++11 -DANDROID_PLATFORM=android-22 -DANDROID_TOOLCHAIN=gcc -DANDROID_STL=gnustl_static -Wall -UNDEBUG") +set(WORKSPACE_PATH "D:/workspace/proxy") +set(ARCH "armeabi-v7a") + add_library(rtspface SHARED - RtspNativeCodecJNI.cpp - CameraWrapper.cpp - FaceCache.cpp - FaceCacheForPLBG.cpp - DebugNetwork.cpp - CaptureCamera.cpp - serial.c - cpu_sched_test.cpp - TeleWrapper.cpp + RtspNativeCodecJNI.cpp + CameraWrapper.cpp + FaceCache.cpp + FaceCacheForPLBG.cpp + DebugNetwork.cpp + CaptureCamera.cpp + cpu_sched_test.cpp + serial.c + TeleWrapper.cpp - "D:/Documents/works/RtspFace/PL_Scale.cpp" - "D:/Documents/works/RtspFace/PipeLine.cpp" - "D:/Documents/works/RtspFace/Logger/src/logger.cc" - "D:/Documents/works/RtspFace/MediaHelper.cpp" - "D:/Documents/works/RtspFace/GraphicHelper.cpp" - "D:/Documents/works/RtspFace/PL_RTSPClient.cpp" - "D:/Documents/works/RtspFace/PL_AndroidMediaCodecDecoder_ndk.cpp" - "D:/Documents/works/RtspFace/PL_AndroidSurfaceViewRender.cpp" - "D:/Documents/works/RtspFace/PL_SensetimeFaceTrackMultiTrd.cpp" - "D:/Documents/works/RtspFace/PL_ColorConv.cpp" - "D:/Documents/works/RtspFace/PL_Gainer.cpp" - "D:/Documents/works/RtspFace/PL_Paint.cpp" - "D:/Documents/works/RtspFace/PL_V4L2Source.cpp" - "D:/Documents/works/RtspFace/PL_BlockGrouping.cpp" - "D:/Documents/works/RtspFace/PL_Queue.cpp" + "${WORKSPACE_PATH}/RtspFace/PipeLine.cpp" + "${WORKSPACE_PATH}/RtspFace/Logger/src/logger.cc" + "${WORKSPACE_PATH}/RtspFace/MediaHelper.cpp" + "${WORKSPACE_PATH}/RtspFace/GraphicHelper.cpp" + "${WORKSPACE_PATH}/RtspFace/PL_RTSPClient.cpp" + "${WORKSPACE_PATH}/RtspFace/PL_AndroidMediaCodecDecoder_ndk.cpp" + "${WORKSPACE_PATH}/RtspFace/PL_AndroidSurfaceViewRender.cpp" + "${WORKSPACE_PATH}/RtspFace/PL_SensetimeFaceTrackMultiTrd.cpp" + "${WORKSPACE_PATH}/RtspFace/PL_Gainer.cpp" + "${WORKSPACE_PATH}/RtspFace/PL_Scale.cpp" + "${WORKSPACE_PATH}/RtspFace/PL_ColorConv.cpp" + "${WORKSPACE_PATH}/RtspFace/PL_Paint.cpp" + "${WORKSPACE_PATH}/RtspFace/PL_V4L2Source.cpp" + "${WORKSPACE_PATH}/RtspFace/PL_BlockGrouping.cpp" + #"${WORKSPACE_PATH}/RtspFace/PL_Queue.cpp" + #"${WORKSPACE_PATH}/RtspFace/PL_Fork2.cpp" + "${WORKSPACE_PATH}/RtspFace/PL_AndroidMediaCodecEncoder.cpp" - "D:/Documents/works/FaceServer/proto_hton_ntoh.cpp" - "D:/Documents/works/FaceServer/PbFaceList.pb.cc" + "${WORKSPACE_PATH}/FaceServer/proto_hton_ntoh.cpp" + "${WORKSPACE_PATH}/FaceServer/PbFaceList.pb.cc" - "D:/Documents/works/RtspFace/libv4l2cpp/src/V4l2Capture.cpp" - "D:/Documents/works/RtspFace/libv4l2cpp/src/V4l2Device.cpp" - "D:/Documents/works/RtspFace/libv4l2cpp/src/V4l2MmapDevice.cpp" - "D:/Documents/works/RtspFace/libv4l2cpp/src/V4l2Output.cpp" + "${WORKSPACE_PATH}/RtspFace/libv4l2cpp/src/V4l2Capture.cpp" + "${WORKSPACE_PATH}/RtspFace/libv4l2cpp/src/V4l2Device.cpp" + "${WORKSPACE_PATH}/RtspFace/libv4l2cpp/src/V4l2MmapDevice.cpp" + "${WORKSPACE_PATH}/RtspFace/libv4l2cpp/src/V4l2Output.cpp" - "D:/Documents/works/RtspFace/CvUtil/CvxText.cpp" + "${WORKSPACE_PATH}/RtspFace/CvUtil/CvxText.cpp" - ) + ) # Include libraries needed for native-codec-jni lib target_link_libraries(rtspface - android - log - #ui - mediandk - #OpenMAXAL + android + log + #ui + mediandk + #OpenMAXAL #jnigraphics #EGL #GLESv2 @@ -59,52 +64,58 @@ ) include_directories( - "D:/Documents/works/RtspFace" - "D:/Documents/works/FaceServer" + "${WORKSPACE_PATH}/RtspFace" + "${WORKSPACE_PATH}/FaceServer" - #"D:/workspace/libhardware-android-5.1.1_r38/include" - #"D:/workspace/core-android-5.1.1_r38/include" - #"D:/workspace/native-android-5.1.1_r38/include" - #"D:/workspace/core-android-5.1.1_r38/libsync/include" - #"D:/workspace/native-android-5.1.1_r38/opengl/include" + #"D:/workspace/libhardware-android-5.1.1_r38/include" + #"D:/workspace/core-android-5.1.1_r38/include" + #"D:/workspace/native-android-5.1.1_r38/include" + #"D:/workspace/core-android-5.1.1_r38/libsync/include" + #"D:/workspace/native-android-5.1.1_r38/opengl/include" - "D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/live555/include" - "D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/live555/include/BasicUsageEnvironment" - "D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/live555/include/groupsock" - "D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/live555/include/liveMedia" - "D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/live555/include/UsageEnvironment" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/live555/include" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/live555/include/BasicUsageEnvironment" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/live555/include/groupsock" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/live555/include/liveMedia" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/live555/include/UsageEnvironment" - "D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/libyuv/include" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/libyuv/include" - "D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/opencv/include" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/opencv/include" - "D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/protobuf/include" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/protobuf/include" - "D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/st_face/include" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/st_face/include" + + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/include" - "D:/Documents/works/RtspFace/libv4l2cpp/inc" + "${WORKSPACE_PATH}/RtspFace/libv4l2cpp/inc" + #"${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/libv4l2wrapper/include" - "D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/freetype/include/freetype2" - - #"D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/libv4l2wrapper/include" - ) + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/freetype/include/freetype2" + ) target_link_libraries(rtspface - "D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/live555/lib/arm64-v8a/libliveMedia.a" - "D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/live555/lib/arm64-v8a/libgroupsock.a" - "D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/live555/lib/arm64-v8a/libBasicUsageEnvironment.a" - "D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/live555/lib/arm64-v8a/libUsageEnvironment.a" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/live555/lib/${ARCH}/libliveMedia.a" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/live555/lib/${ARCH}/libgroupsock.a" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/live555/lib/${ARCH}/libBasicUsageEnvironment.a" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/live555/lib/${ARCH}/libUsageEnvironment.a" - "D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/libyuv/lib/arm64-v8a/libyuv_static.a" - "D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/opencv/lib/arm64-v8a/libopencv_java3.so" - "D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/protobuf/lib/arm64-v8a/libprotobuf.so" - "D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/st_face/lib/arm64-v8a/libcvface_api.so" - "D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/freetype/lib/arm64-v8a/libfreetype.so" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/libyuv/lib/${ARCH}/libyuv_static.a" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/opencv/lib/${ARCH}/libopencv_java3.so" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/protobuf/lib/${ARCH}/libprotobuf.so" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/st_face/lib/${ARCH}/libcvface_api.so" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/freetype/lib/${ARCH}/libfreetype.so" - #"D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/libv4l2wrapper/lib/arm64-v8a/libv4l2wrapper.a" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libcapnp-0.6.1.so" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libcapnpc-0.6.1.so" + "${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/capnproto/lib/${ARCH}/libkj-0.6.1.so" - #"D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/android_sys/libgui.so" - #"D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/android_sys/libui.so" - #"D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/android_sys/libEGL.so" - #"D:/Documents/works/VisitFace/RtspNativeCodec/app/libs/android_sys/libGLESv3.so" - ) + + #"${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/libv4l2wrapper/lib/${ARCH}/libv4l2wrapper.a" + + #"${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/android_sys/libgui.so" + #"${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/android_sys/libui.so" + #"${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/android_sys/libEGL.so" + #"${WORKSPACE_PATH}/VisitFace/RtspNativeCodec/app/libs/android_sys/libGLESv3.so" + ) diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/FaceCacheForPLBG.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/FaceCacheForPLBG.cpp index 9c1fc23..7a82720 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/FaceCacheForPLBG.cpp +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/FaceCacheForPLBG.cpp @@ -39,9 +39,13 @@ size_t frameRGBSize; bool frameTruncated; + typedef std::map<int, float> block_score_filter_map_t; + block_score_filter_map_t blockScoreFilter; + FcPmBreackerContextPLBG() : lastOutputs(), lastOutputsRGBBufs(), frameYUV(), frameYUVSize(0), frameRGB(),frameRGBSize(0), - frameTruncated(false) + frameTruncated(false), + blockScoreFilter() {} void reset() @@ -178,8 +182,48 @@ size_t FaceCacheForPLBG::getFaceCount(const PipeMaterial& pm) const { + FcPmBreackerContextPLBG& ctx(*(FcPmBreackerContextPLBG*)_ctx); plbg_output_vec_t* plbgOut = (plbg_output_vec_t*)pm.buffer; - return plbgOut->size(); + + bool hasFiltedBlock = false; + int min_st_track_id = 0; + + for (plbg_output_vec_t::iterator iterBGOut = plbgOut->begin(); iterBGOut != plbgOut->end(); ++iterBGOut) + { + int st_track_id = (int)(int64_t)(iterBGOut->rectInOriginFrame.userData); + float score = iterBGOut->score; + + FcPmBreackerContextPLBG::block_score_filter_map_t::iterator iterFilter = ctx.blockScoreFilter.find(st_track_id); + if (iterFilter == ctx.blockScoreFilter.end()) + { + ctx.blockScoreFilter.insert(std::make_pair(st_track_id, score)); + hasFiltedBlock = true; + } + else + { + if (iterFilter->second < score) + { + iterFilter->second = score; + hasFiltedBlock = true; + } + } + + if (min_st_track_id > st_track_id) + min_st_track_id = st_track_id; + } + + for(FcPmBreackerContextPLBG::block_score_filter_map_t::iterator iterFilter = ctx.blockScoreFilter.begin(); iterFilter != ctx.blockScoreFilter.end(); ) + { + if (iterFilter->first < min_st_track_id) + iterFilter = ctx.blockScoreFilter.erase(iterFilter); + else + ++iterFilter; + } + + if (hasFiltedBlock) + return plbgOut->size(); + else + return 0; } diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp index 540437c..177b924 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp @@ -15,7 +15,6 @@ #include <face_daemon_proto.h> #include <stdlib.h> -#include <endian.h> #include "DebugNetwork.h" #include "TeleWrapper.h" @@ -337,8 +336,8 @@ 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; + cameraWrapper.sftConfig.visionConeAngle = 30.0f; + cameraWrapper.sftConfig.score_min = 0.4f; } cameraWrapper.fontPath = "/data/msyh.ttc"; diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/cpu_sched_test.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/cpu_sched_test.cpp index 5568ac2..47ffe6c 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/cpp/cpu_sched_test.cpp +++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/cpu_sched_test.cpp @@ -32,16 +32,22 @@ //CPU_CLR(0x0004, &mask); //CPU_CLR(0x0005, &mask); + CPU_SET(0x0000, &mask); + CPU_SET(0x0001, &mask); + CPU_SET(0x0002, &mask); + CPU_SET(0x0003, &mask); + CPU_SET(0x0004, &mask); + CPU_SET(0x0005, &mask); + + if (sched_setaffinity(0, sizeof(mask), &mask) == -1) + { + LOG_ERROR << "warning: could not set CPU affinity" << LOG_ENDL; + } + for(int i= 0; i< num; i++) { LOG_ERROR << "cpu " << i <<": " << CPU_ISSET(i, &mask) <<LOG_ENDL; } - - //CPU_SET(id, &mask); - if (sched_setaffinity(0, sizeof(mask), &mask) == -1) - { - LOG_ERROR << "warning: could not set CPU affinity" << LOG_ENDL; - } } void cpu_sched() diff --git a/VisitFace/RtspNativeCodec/app/src/main/java/com/example/nativecodec/NativeCodec.java b/VisitFace/RtspNativeCodec/app/src/main/java/com/example/nativecodec/NativeCodec.java index 400dadc..0801cfe 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/java/com/example/nativecodec/NativeCodec.java +++ b/VisitFace/RtspNativeCodec/app/src/main/java/com/example/nativecodec/NativeCodec.java @@ -46,6 +46,7 @@ import android.widget.TextView; import java.io.BufferedReader; +import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.ByteBuffer; @@ -85,6 +86,13 @@ setContentView(R.layout.main); ThisActivity = this; + try { + Process su = Runtime.getRuntime().exec("su"); + } catch (IOException e) { + e.printStackTrace(); + } + //Runtime.getRuntime().exec(new String[]{"/system/bin/su","-c", cmd}); + RtspFaceNative.init(); for (int i=0 ;i < 32; i+=2){ RtspFaceNative.setFaceLabel(1, i, "涓枃鍚嶅瓧"); @@ -93,7 +101,7 @@ RtspFaceNative.setFaceLabel(2, i+1, "abcd"); } - RtspFaceNative.setLocalIP("192.168.1.75"); + RtspFaceNative.setLocalIP("192.168.1.82"); mGLView1 = (MyGLSurfaceView) findViewById(R.id.glsurfaceview1); @@ -288,7 +296,7 @@ //mCreated = RtspFaceNative.createPlayer(1, "rtsp://admin:admin@192.168.1.188:554/cam/realmonitor?channel=1&subtype=2"); mCreated = RtspFaceNative.createPlayer(1, "rtsp://admin:admin12345@192.168.1.202:554/h264/ch1/main/av_stream"); //mCreated = RtspFaceNative.createPlayer(2, "rtsp://Admin:1234@192.168.1.22/h264"); - mCreated = RtspFaceNative.createPlayer(2, "rtsp://admin:a1234567@192.168.1.201:554/h264/ch1/main/av_stream"); + //mCreated = RtspFaceNative.createPlayer(2, "rtsp://admin:a1234567@192.168.1.201:554/h264/ch1/main/av_stream"); //mCreated = createPlayer(1, "rtsp://192.168.1.56:8554"); //byte[] arr = new byte[5]; -- Gitblit v1.8.0