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