From f97741ef79bc496cbf0581527e1f54b369d246be Mon Sep 17 00:00:00 2001 From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674> Date: 星期四, 10 八月 2017 14:54:06 +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