From 142117991fae65646bc5dd59d96c4a5c5e8559ca Mon Sep 17 00:00:00 2001
From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期四, 10 八月 2017 14:54:25 +0800
Subject: [PATCH] bug fix
---
VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 48 insertions(+), 0 deletions(-)
diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp
index 943ddaf..4934102 100644
--- a/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp
+++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/RtspNativeCodecJNIClient.cpp
@@ -81,6 +81,54 @@
env->ReleaseStringUTFChars(ipaddr, utf8);
}
+// set the surface
+void Java_cn_com_basic_face_util_RtspFaceNative_setSurface(JNIEnv *env, jclass clazz, jint cameraIdx,
+ jobject surfaceRender)
+{
+ LOG_DEBUG << "@@@ Java_cn_com_basic_face_util_RtspFaceNative_setSurface" << LOG_ENDL;
+ assert(cameraIdx > 0 && cameraIdx <= CAMERA_COUNT);
+ cameraIdx -= 1;
+
+ 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, surfaceRender);
+ //cameraWrapper.windowDecode = getSurfaceHolderGetSurface(env, surfaceRender);
+ //cameraWrapper.windowDecode = ANativeWindow_fromSurface(env, (jobject)getSurfaceHolderGetSurface(env, surfaceRender));
+
+ if (cameraWrapper.windowRender != nullptr)
+ {
+ ANativeWindow_release((ANativeWindow *) (cameraWrapper.windowRender));
+ 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));
+
+ {
+ ANativeWindow* window = (ANativeWindow*)(cameraWrapper.windowRender);
+ ANativeWindow_Buffer buffer;
+ if(cameraWrapper.windowRender != nullptr && ANativeWindow_lock(window, &buffer, NULL) == 0)
+ {
+ cameraWrapper.plScaleCfg.toHeight=buffer.height;
+ cameraWrapper.plScaleCfg.toWidth=buffer.stride;
+ ANativeWindow_unlockAndPost(window);
+ }
+ else
+ {
+ cameraWrapper.plScaleCfg.toHeight=480;
+ cameraWrapper.plScaleCfg.toWidth=640;
+ }
+ }
+
+ LOGP(DEBUG, "@@@ setsurface %p,%p", cameraWrapper.windowDecode, cameraWrapper.windowRender);
+}
+
jboolean
Java_cn_com_basic_face_util_RtspFaceNative_createPlayer(JNIEnv *env, jclass clazz, jint cameraIdx,
jstring uri)
--
Gitblit v1.8.0