From c2a6b7ea3ce20037aaaccd132f8cb0a8d667dd2a Mon Sep 17 00:00:00 2001
From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期四, 03 八月 2017 09:48:01 +0800
Subject: [PATCH] split client server

---
 VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp           |   95 +++++++++++++++++--------------
 VisitFace/RtspNativeCodec/app/build.gradle                                   |    2 
 VisitFace/RtspNativeCodec/app/src/main/assets/ac-83-f3-9e-00-7a-20170802.lic |   56 ++++++++++++++++++
 VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt                    |    8 ++
 4 files changed, 116 insertions(+), 45 deletions(-)

diff --git a/VisitFace/RtspNativeCodec/app/build.gradle b/VisitFace/RtspNativeCodec/app/build.gradle
index 051d8cd..887c796 100644
--- a/VisitFace/RtspNativeCodec/app/build.gradle
+++ b/VisitFace/RtspNativeCodec/app/build.gradle
@@ -9,7 +9,7 @@
         targetSdkVersion 23
         ndk {
             //abiFilters 'armeabi-v7a', 'x86' , 'x86_64', 'armeabi' , 'arm64-v8a'
-            abiFilters 'armeabi-v7a'
+            abiFilters 'arm64-v8a'
         }
         externalNativeBuild {
             cmake {
diff --git a/VisitFace/RtspNativeCodec/app/src/main/assets/ac-83-f3-9e-00-7a-20170802.lic b/VisitFace/RtspNativeCodec/app/src/main/assets/ac-83-f3-9e-00-7a-20170802.lic
new file mode 100644
index 0000000..925ec8f
--- /dev/null
+++ b/VisitFace/RtspNativeCodec/app/src/main/assets/ac-83-f3-9e-00-7a-20170802.lic
@@ -0,0 +1,56 @@
+############################################################
+# SenseTime License
+# License Product: FaceSdk
+# Expiration: 20170731~20171001
+# License SN: e70fbbb8-3108-4e9d-9eea-2ae23febcec4
+############################################################
+sGfdd5sxA8NCweDGA+vU2qzOgOjTn64wtsOftvbVw+MzmQXlL9gGE+JsM0nU
+lOHN/Ai/mjyyPqGW4W5FxJgLnqgzp2g09JkRdjXGle8IEY8ag4wXH8LUT+XY
+OXBBvilrGRazpr4ni1SVkpgxTHoX3GdBY09aLCaJ9uCj1p7uErIgjhC2AQAA
+AAEAAAABJioS4yQz2pTIieigSTrt4ANVz5LRRa52XLWQvB2azvNdASaqkN2B
+qMLx/Hy1Bq6TLqWxL0paF9Xj5t/xptpwmax0BxY+Dn4rsdJj4PnChey1B2Hx
+OLlVDQUj+oZ3lgpzi1wdFp8RLKEDJVa5WRuiV8Po3o+JrDz5DvX+FJIKyrgF
+5piZ69rc/zi0ohoz3VqCCr1OEUv4XSpDkK/g+1NkBHvco/EZe8wLoh0R7nQR
+7yHAzGQRZMEBTaduWIATW1PeBQJxUjKGCv57aCB5jeGk0wg/60/4702f2Dth
+RpZOeMvfbYedzag4SKaHN5rQ9jE+L0dCqREJvkfUVMYJ8wyvAQABAAAAAAAD
+AAAAAAAAAAAAAAAdFrdcj38Pba/zw3OZ/zBgEZR1PVWeUBie2oiKNyH5oui3
+TgKfJH5wsLTGRPVm9S7pvOYfkLzS36uvuwvzZDyuWR2Z4LhnnZuPmaVqjKCs
+8vqKNKoYMjqRuKlLc/y+lAk4U/2HGWDkWruVyV2pwqQhUEreQjDI3kFfwPtR
+Ku7yaU4WpTKlQnuqI0Obs6/RqzM+XXs3TfxMOQAiBu+kWzaZTC19BtXMPFrN
+fAjbMnQde9bo7miN0Suho+Y+NJZgyHmTyQ==
+------------------------------------------------------------
+sGfdd7PDtMmWgChyb3iwc4yZ+5BCYGx2EXGQ6F1UdK81ZgekOHb2G3koylH2
+mvqFCYy5VZG7ptB7PYXR50MlM1Lj7gZvwNmZ+HwSU+RHJ2pDqtCXynT+siWj
+Vnr9ckFcxSDJhFrJgdDJtLgVO69prG1n2mXRV1eEmXQisiN8uir957lSAQAA
+AAEAAABSY7D2PA4tStCS4Vy8knSq2TkH79DUnEPOhCfEnjFWlD6JHrQ3ZqPH
+Kk9ZRH3lZfrokpOuf+H4JFmN9ieRNKrBoHmd0dUb/so/O0l3uqQdgmcWy2Zu
+Ev5rlq9J1n+2k6eH30ZvuDiHvEDlXslriTXu2zr3UTapsmQ2C8KXEAMgEJpP
+n/ADn3aGNOC5WIef/02niO4Ogq1A5ExT8jYryrt3Qbz967OiTbzIu4QF8i5O
+VL6Z52jh8yQUNfCEj/EFNxaeOkzVvdzI/UyKoQz0A/HiaVPaeFPqfGT0W9Fm
+doJCNRT8EUBLNIOArGWS9z4IVt1eUmiSlZdL1UOOhLaTQQk5AQABAAAAAAAD
+AAAAAAAAAAAAAAA5CnBbsitOieiw9TiSddeEoQA33PF9QnEwHYCT3hH9bGrv
+EkdoIK0RfFBvWoNGdCum0IFcPC8FSJVOvzVZ3aYX6HTbY/TDNHUaPdSkxTnP
+rJKSGK44tbNitScYTEx9llrHroB82SO/8jMtdyh5fjn3ml3MUT9w5w1e7UR9
+ra60yXSYoXfNM2C9d2BrvZfnimoo+3UT7Z8/Syu3mMcA+IFT1IRl9JIeJJJ2
++NSjXsIypI6Qot99EodntcKHEv/uhRgNo52fnFJoiKLgjONj0Ei/H0PUGy7t
+Oe5WM6f7be7IRFVfrHcuAjpZITURHNfcY8LLTkQqYkZxQi2G/4CPmgB1y/HK
+clN3H6rTC8QEm2o2elt+MKvp7tILV58=
+------------------------------------------------------------
+sGfdd2b8Ah8BAHE8sFaCje8dykovSMlwZoZ2pG3LuJCrVP+QRq9WeOqXjn2i
+SNk3UdwC5A+XVloTBylotgzLHbvNtObozgJZE7Awg3VB0khDvEooHQ3lXyoL
+sHWaIzR/vHQEOM58zAVu9HQ5egpXBSy+5HNSSgelE+PAQ0PGgk9vmCu/AQAA
+AAIAAABb72vbWMY3qa+tGeT9Q/JAWLkTr9kVwp/Bu9PDxx7+ADQXLzXtkx46
+I68gQD/2CnFjHuejZyOVQ/lgK7d2lFdYruDUA/7QHZYFqcm20Ggne0yNZyO8
+ZVROpjuDk+Wt1V3aHEehofWdPdmHv2V+kCSS+0dniNkG7cKYUGlB1us+B8bS
+dt2yIY/1/XF5ChgRsvPhXJbWEYiDGRQO6JZOWra3UV/6PRZ7WaZ014PQhKL7
++rnONfuoGzyi4QxHXwEXY0WWsim4p9yKvxPP52hyuypKyAZdllh6yLp19BMM
+OmdbS+lWIxfgGv2M/p2iuuNCJJL0qND3GnsAjg037yYlM1gRAAAAAAAAAAAA
+AAAAAAAAAAAAAACKbmaW/YIUkH0xzziHdNgNb7etf83vIBy25xY5DGmoxEXn
+vMFlSfMlzf2P2mBmUB373juUxhjLoV8TeUA/IELZgUvz1c9E+8bP/5zGXC9m
+Te3kYXVC8xZwDKluLNOKCheNPMlLkI1D5hqzFkOtCeK2yaJ0YNi4u+iPJNhl
+CiJQKlT0WIxvBqXyLiiTLQ0Gax+ua4WefxyYnVNqpEx2+kh2wANiE9PeYwh4
+be0ZH4qyi7L+K4TvxCkwKi7n0+QjE1+IEltWfqd4hzW8pAr/9oltZ4ZZJBOL
+D64S5OXF3ujCWKIZ9aAfbIZJKZ4onS2AIa6fzh09xHcdiPosQohc4dQW7lqO
+ITt7XVvgPNbmpu2irMLC2LLDXNxx+7T4Npcbg6y97ACx5wtwH9N4koXnTwQG
+w49V/AOQgzq6sUjgXlIrcIo7oH+Wz1Wp
+############################################################
\ No newline at end of file
diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt b/VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt
index 4b983a8..95d13b3 100644
--- a/VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt
+++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/CMakeLists.txt
@@ -7,7 +7,7 @@
 #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")
+set(ARCH "arm64-v8a")
 
 include_directories(
 					"${WORKSPACE_PATH}/RtspFace"
@@ -68,7 +68,8 @@
 			"${WORKSPACE_PATH}/RtspFace/PL_BlockGrouping.cpp"
 			#"${WORKSPACE_PATH}/RtspFace/PL_Queue.cpp"
 			#"${WORKSPACE_PATH}/RtspFace/PL_Fork2.cpp"
-			#"${WORKSPACE_PATH}/RtspFace/PL_AndroidMediaCodecEncoder.cpp"
+			"${WORKSPACE_PATH}/RtspFace/PL_AndroidMediaCodecEncoder.cpp"
+			"${WORKSPACE_PATH}/RtspFace/PL_RTSPServer.cpp"
 
 			"${WORKSPACE_PATH}/FaceServer/proto_hton_ntoh.cpp"
 			"${WORKSPACE_PATH}/FaceServer/PbFaceList.pb.cc"
@@ -80,6 +81,9 @@
 
 			"${WORKSPACE_PATH}/RtspFace/CvUtil/CvxText.cpp"
 
+			"${WORKSPACE_PATH}/RtspFace/FFmpegRTSPServer/LiveServerMediaSubsession.cpp"
+			"${WORKSPACE_PATH}/RtspFace/FFmpegRTSPServer/LiveRTSPServer.cpp"
+			"${WORKSPACE_PATH}/RtspFace/FFmpegRTSPServer/FFmpegH264Source.cpp"
 			)
 
 # Include libraries needed for native-codec-jni lib
diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp
index cbdfeb5..7c1adbd 100644
--- a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp
+++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperServer.cpp
@@ -9,6 +9,7 @@
 #include <PL_BlockGrouping.h>
 #include <PL_ColorConv.h>
 #include <PL_AndroidMediaCodecEncoder.h>
+#include <PL_RTSPServer.h>
 
 CameraWrapper::~CameraWrapper()
 {
@@ -102,7 +103,8 @@
     PipeLine::register_global_elem_creator("PL_Paint", create_PL_Paint);
     PipeLine::register_global_elem_creator("PL_V4L2Source", create_PL_V4L2Source);
     PipeLine::register_global_elem_creator("PL_BlockGrouping", create_PL_BlockGrouping);
-    //PipeLine::register_global_elem_creator("PL_AndroidMediaCodecEncoder", create_PL_AndroidMediaCodecEncoder);
+	PipeLine::register_global_elem_creator("PL_AndroidMediaCodecEncoder", create_PL_AndroidMediaCodecEncoder);
+	PipeLine::register_global_elem_creator("PL_RTSPServer", create_PL_RTSPServer);
 
     bool ret = initPl_DecoderPl();
     if (!ret)
@@ -151,49 +153,59 @@
 		    return  false;
 		}
 
-        //PL_AndroidMediaCodecEncoder_Config amceCfg;
-        //amceCfg.ak_bit_rate = 5000000; // 512KB
-        //amceCfg.ak_color_format = 21; // COLOR_FormatYUV420SemiPlanar;
-		//amceCfg.ak_frame_rate = 25;
-        //amceCfg.ak_height = 480;
-        //amceCfg.ak_i_frame_interval = 20;
-        //amceCfg.ak_mime = "video/avc";
-        //amceCfg.ak_width = 640;
-        //PL_AndroidMediaCodecEncoder* plAMCE = (PL_AndroidMediaCodecEncoder*)pipeLineRender->push_elem("PL_AndroidMediaCodecEncoder");
-        //ret = plAMCE->init(&amceCfg);
+        PL_AndroidMediaCodecEncoder_Config amceCfg;
+        amceCfg.ak_bit_rate = 5000000; // 512KB
+        amceCfg.ak_color_format = 21; // COLOR_FormatYUV420SemiPlanar;
+		amceCfg.ak_frame_rate = 25;
+        amceCfg.ak_height = 480;
+        amceCfg.ak_i_frame_interval = 20;
+        amceCfg.ak_mime = "video/avc";
+        amceCfg.ak_width = 640;
+        PL_AndroidMediaCodecEncoder* plAMCE = (PL_AndroidMediaCodecEncoder*)pipeLineRender->push_elem("PL_AndroidMediaCodecEncoder");
+        ret = plAMCE->init(&amceCfg);
+        if (!ret)
+        {
+            LOG_ERROR << "pipeLineRender.plAMCE init error" << LOG_ENDL;
+            return  false;
+        }
+
+		PL_RTSPServer* plRtspServer = (PL_RTSPServer*)pipeLineRender->push_elem("PL_RTSPServer");
+		RTSPServerConfig rtspServerConfig;
+		//rtspServerConfig.syncDeliverFrame = false;
+		ret = plRtspServer->init(&rtspServerConfig);
+		if (!ret)
+		{
+			LOG_ERROR << "pipeLineRender.plRtspServer init error" << LOG_ENDL;
+			return  false;
+		}
+
+		//PL_ColorConv_Config PLColorConvCfg;
+		//PL_ColorConv* plColorConv = (PL_ColorConv*)pipeLineRender->push_elem("PL_ColorConv");
+		//ret = plColorConv->init(&PLColorConvCfg);
+		//if (!ret)
+		//{
+		//    LOG_ERROR << "pipeLineRender.plPaint init error" << LOG_ENDL;
+		//    return  false;
+		//}
+
+        //PL_Paint_Config plPaintCfg;
+		//plPaintCfg.fontPath = fontPath;
+        //plPaintCfg.plplCtx = &plplContext;
+        //PL_Paint* plPaint = (PL_Paint*)pipeLineRender->push_elem("PL_Paint");
+        //ret = plPaint->init(&plPaintCfg);
         //if (!ret)
         //{
-        //    LOG_ERROR << "pipeLineRender.plAMCE init error" << LOG_ENDL;
+        //    LOG_ERROR << "pipeLineRender.plPaint init error" << LOG_ENDL;
         //    return  false;
         //}
 
-		PL_ColorConv_Config PLColorConvCfg;
-		PL_ColorConv* plColorConv = (PL_ColorConv*)pipeLineRender->push_elem("PL_ColorConv");
-		ret = plColorConv->init(&PLColorConvCfg);
-		if (!ret)
-		{
-		    LOG_ERROR << "pipeLineRender.plPaint init error" << LOG_ENDL;
-		    return  false;
-		}
-
-        PL_Paint_Config plPaintCfg;
-		plPaintCfg.fontPath = fontPath;
-        plPaintCfg.plplCtx = &plplContext;
-        PL_Paint* plPaint = (PL_Paint*)pipeLineRender->push_elem("PL_Paint");
-        ret = plPaint->init(&plPaintCfg);
-        if (!ret)
-        {
-            LOG_ERROR << "pipeLineRender.plPaint init error" << LOG_ENDL;
-            return  false;
-        }
-
-        PL_AndroidSurfaceViewRender* asvRender = (PL_AndroidSurfaceViewRender*)pipeLineRender->push_elem("PL_AndroidSurfaceViewRender");
-        ret = asvRender->init(&asvrConfig);
-        if (!ret)
-        {
-            LOG_ERROR << "pipeLineRender.asvRender init error" << LOG_ENDL;
-            return  false;
-        }
+        //PL_AndroidSurfaceViewRender* asvRender = (PL_AndroidSurfaceViewRender*)pipeLineRender->push_elem("PL_AndroidSurfaceViewRender");
+        //ret = asvRender->init(&asvrConfig);
+        //if (!ret)
+        //{
+        //    LOG_ERROR << "pipeLineRender.asvRender init error" << LOG_ENDL;
+        //    return  false;
+        //}
     }
 
 	return true;
@@ -461,9 +473,7 @@
         //#debug
         //test_paint(cameraWrapper);
 
-		cameraWrapper.pipeLineRender->pipe(&pm);//#todo
-		//if (cameraWrapper.pipeLineRender->check_pipe_complete(last = cameraWrapper.pipeLineRender->pipe(&pm)))
-		//	last->gain(pm);
+		cameraWrapper.pipeLineRender->pipe(&pm);
     }
 	
 	LOG_INFO << "CameraWrapper::decoder_thd stop, ret=" << LOG_ENDL;
@@ -478,6 +488,7 @@
     {
         sleep(10);
 
+		continue;//#todo
         if (time(nullptr) - cameraWrapper.lastAliveTime > 20)
         {
             PL_RTSPClient* rtspClient = (PL_RTSPClient*)cameraWrapper.pipeLineDecoderDetector->at(0);

--
Gitblit v1.8.0