From 15d0c49e85159b9e27870aff5280c0cd95b103c4 Mon Sep 17 00:00:00 2001
From: xuxiuxi <xuxiuxi@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期四, 04 五月 2017 17:16:56 +0800
Subject: [PATCH] 

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

diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp
index 0918661..1de97a5 100644
--- a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp
+++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNI.cpp
@@ -58,6 +58,30 @@
     env->ReleaseStringUTFChars(ipaddr, utf8);
 }
 
+static 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;");
+    jmethodID jmOutputSurface_readPixels = env->GetMethodID(jcOutputSurface, "readPixels", "()Ljava/nio/Buffer;");
+
+    jobject jobjOutputSurface = env->NewObject(jcOutputSurface , jmOutputSurface_ctor, 1920, 1088);
+    jobject jobjSurface = env->CallObjectMethod(jobjOutputSurface, jmOutputSurface_getSurface);
+    cameraWrapper.windowDecode = ANativeWindow_fromSurface(env, jobjSurface);
+}
+
+void readPixels(uint8_t* buf, size_t& maxSize)
+{
+
+}
+
 // set the surface
 void Java_cn_com_basic_face_util_RtspFaceNative_setSurface(JNIEnv *env, jclass clazz, jint cameraIdx, jobject surface)
 {
@@ -67,14 +91,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,20 +128,23 @@
 		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 = cameraWrapper.windowDecode; //cameraWrapper.windowDecode;
+        cameraWrapper.amcdConfig.windowSurfaceRender = nullptr;//cameraWrapper.windowRender;
+        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;
+        cameraWrapper.asvrConfig.scaleToHeight = 480;
     }
 
     {

--
Gitblit v1.8.0