From 1b4d2718a4864190a47d8b7863f36a9ae0b8055c Mon Sep 17 00:00:00 2001
From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期五, 28 四月 2017 17:38:09 +0800
Subject: [PATCH] optimize

---
 VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp |   44 +++++++++++++++++++++++++++++++++-----------
 1 files changed, 33 insertions(+), 11 deletions(-)

diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp
index 59f2a80..375c7eb 100644
--- a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp
+++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp
@@ -58,6 +58,24 @@
     env->ReleaseStringUTFChars(ipaddr, utf8);
 }
 
+void createHiddenSurface(JNIEnv *env, int cameraIdx)
+{
+    CameraWrapper& cameraWrapper(g_CameraWrappers[cameraIdx]);
+
+    //OutputSurface outputSurface = null;
+    //outputSurface = new OutputSurface(mWidth, mHeight);
+    //outputSurface.getSurface();
+    //outputSurface.release();
+
+    jclass jcOutputSurface = env->FindClass("com/example/nativecodec/OutputSurface");
+    jmethodID jmOutputSurface_ctor = env->GetMethodID(jcOutputSurface, "<init>", "(II)V");
+    jmethodID jmOutputSurface_getSurface = env->GetMethodID(jcOutputSurface, "getSurface", "()Landroid/view/Surface;");
+
+    jobject jobjOutputSurface = env->NewObject(jcOutputSurface , jmOutputSurface_ctor, 1920, 1088);
+    jobject jobjSurface = env->CallObjectMethod(jobjOutputSurface, jmOutputSurface_getSurface);
+    cameraWrapper.windowDecode = ANativeWindow_fromSurface(env, jobjSurface);
+}
+
 // set the surface
 void Java_cn_com_basic_face_util_RtspFaceNative_setSurface(JNIEnv *env, jclass clazz, jint cameraIdx, jobject surface)
 {
@@ -67,14 +85,17 @@
 	
 	CameraWrapper& cameraWrapper(g_CameraWrappers[cameraIdx]);
 
-    // obtain a native window from a Java surface
-    if (cameraWrapper.window)
+    // obtain a native windowRender from a Java surface
+    if (cameraWrapper.windowRender)
 	{
-        ANativeWindow_release((ANativeWindow*)(cameraWrapper.window));
-        cameraWrapper.window = NULL;
+        ANativeWindow_release((ANativeWindow*)(cameraWrapper.windowRender));
+        cameraWrapper.windowRender = NULL;
     }
-    cameraWrapper.window = ANativeWindow_fromSurface(env, surface);
-	LOGP(DEBUG, "@@@ setsurface %p", cameraWrapper.window);
+    cameraWrapper.windowRender = ANativeWindow_fromSurface(env, surface);
+
+    //createHiddenSurface(env, cameraIdx);
+
+	LOGP(DEBUG, "@@@ setsurface %p", cameraWrapper.windowRender);
 }
 
 jboolean Java_cn_com_basic_face_util_RtspFaceNative_createPlayer(JNIEnv* env, jclass clazz, jint cameraIdx, jstring uri)
@@ -101,18 +122,19 @@
 		cameraWrapper.amcdConfig.ak_mime = "video/avc";
 		cameraWrapper.amcdConfig.ak_width = 640;
 		cameraWrapper.amcdConfig.ak_height = 480;
-        cameraWrapper.amcdConfig.windowSurface = nullptr; // cameraWrapper.window
-		cameraWrapper.amcdConfig.releaseOutputBuffIdx = true;
+        cameraWrapper.amcdConfig.windowSurfaceDecode = nullptr; //cameraWrapper.windowDecode;
+        cameraWrapper.amcdConfig.windowSurfaceRender = nullptr;
+        cameraWrapper.amcdConfig.releaseOutputBuffIdx = true;
+        cameraWrapper.amcdConfig.releaseOutputBuffIdxInPay = false;
         cameraWrapper.amcdConfig.generateDecodedDataPerFrame = 1;
-        cameraWrapper.amcdConfig.renderFromOutputBuffIdx = false;//true
-        cameraWrapper.amcdConfig.renderFromOutputBuff = false;
+
 #ifndef USE_ST_SDK
         cameraWrapper.amcdConfig.releaseOutputBuffIdxInPay = true;
 #endif
 	}
 
     {
-        cameraWrapper.asvrConfig.windowSurface = cameraWrapper.window;
+        cameraWrapper.asvrConfig.windowSurface = cameraWrapper.windowRender;
         cameraWrapper.asvrConfig.outputOriginFrame = true;
         cameraWrapper.asvrConfig.outputRenderFrame = true;
         cameraWrapper.asvrConfig.scaleToWidth = 640;

--
Gitblit v1.8.0