From 3d3a92d352ed8a17a9bdec256c7e41a2cde2169c Mon Sep 17 00:00:00 2001 From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674> Date: 星期三, 08 三月 2017 11:51:53 +0800 Subject: [PATCH] decode 2-way 1080p --- VisitFace/RtspNativeCodec/app/src/main/java/com/example/nativecodec/NativeCodec.java | 132 +++++++++++++++++++++++++++---------------- 1 files changed, 83 insertions(+), 49 deletions(-) diff --git a/VisitFace/RtspNativeCodec/app/src/main/java/com/example/nativecodec/NativeCodec.java b/VisitFace/RtspNativeCodec/app/src/main/java/com/example/nativecodec/NativeCodec.java index ada6508..c9d8eac 100644 --- a/VisitFace/RtspNativeCodec/app/src/main/java/com/example/nativecodec/NativeCodec.java +++ b/VisitFace/RtspNativeCodec/app/src/main/java/com/example/nativecodec/NativeCodec.java @@ -58,11 +58,15 @@ super.onCreate(icicle); setContentView(R.layout.main); + init(); + mGLView1 = (MyGLSurfaceView) findViewById(R.id.glsurfaceview1); // set up the Surface 1 video sink mSurfaceView1 = (SurfaceView) findViewById(R.id.surfaceview1); mSurfaceHolder1 = mSurfaceView1.getHolder(); + + mSurfaceHolder1.addCallback(new SurfaceHolder.Callback() { @@ -76,7 +80,7 @@ public void surfaceCreated(SurfaceHolder holder) { Log.v(TAG, "surfaceCreated"); if (mRadio1.isChecked()) { - setSurface(holder.getSurface()); + //setSurface(1, holder.getSurface()); } } @@ -114,33 +118,37 @@ OnCheckedChangeListener checklistener = new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - Log.i("@@@@", "oncheckedchanged"); - if (buttonView == mRadio1 && isChecked) { - mRadio2.setChecked(false); - } - if (buttonView == mRadio2 && isChecked) { - mRadio1.setChecked(false); - } - if (isChecked) { - if (mRadio1.isChecked()) { - if (mSurfaceHolder1VideoSink == null) { - mSurfaceHolder1VideoSink = new SurfaceHolderVideoSink(mSurfaceHolder1); - } - mSelectedVideoSink = mSurfaceHolder1VideoSink; - mGLView1.onPause(); - Log.i("@@@@", "glview pause"); - } else { - mGLView1.onResume(); - if (mGLView1VideoSink == null) { - mGLView1VideoSink = new GLViewVideoSink(mGLView1); - } - mSelectedVideoSink = mGLView1VideoSink; - } - switchSurface(); - } - } + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + Log.i("@@@@", "oncheckedchanged"); + if (buttonView == mRadio1 && isChecked) { + mRadio2.setChecked(false); + } + if (buttonView == mRadio2 && isChecked) { + mRadio1.setChecked(false); + } + + + if (isChecked) { + if (mRadio1.isChecked()) { + if (mSurfaceHolder1VideoSink == null) { + mSurfaceHolder1VideoSink = new SurfaceHolderVideoSink(mSurfaceHolder1); + //mSurfaceHolder1VideoSink.useAsSinkForNative(); + } + mSelectedVideoSink = mSurfaceHolder1VideoSink; + mGLView1.onPause(); + Log.i("@@@@", "glview pause"); + } else { + mGLView1.onResume(); + if (mGLView1VideoSink == null) { + mGLView1VideoSink = new GLViewVideoSink(mGLView1); + //mGLView1VideoSink.useAsSinkForNative(); + } + mSelectedVideoSink = mGLView1VideoSink; + } + switchSurface(); + } + } }; mRadio1.setOnCheckedChangeListener(checklistener); mRadio2.setOnCheckedChangeListener(checklistener); @@ -158,7 +166,7 @@ public void onClick(View v) { mRadio2.toggle(); } - }); + }); // initialize button click handlers @@ -172,17 +180,24 @@ if (mSelectedVideoSink == null) { return; } - mSelectedVideoSink.useAsSinkForNative(); + //mSelectedVideoSink.useAsSinkForNative(); mNativeCodecPlayerVideoSink = mSelectedVideoSink; } if (mSourceString != null) { - mCreated = createStreamingMediaPlayer(getResources().getAssets(), - mSourceString); + + setSurface(1, mSurfaceHolder1.getSurface()); + mGLView1VideoSink.useAsSinkForNative(); + + //mCreated = createStreamingMediaPlayer(getResources().getAssets(), mSourceString); + mCreated = createPlayer(1, "rtsp://admin:admin12345@192.168.1.70:554/h264/ch1/main/av_stream"); + mCreated = createPlayer(2, "rtsp://admin:admin12345@192.168.1.70:554/h264/ch1/main/av_stream"); + //mCreated = createPlayer(1, "rtsp://192.168.1.56:8554"); + } } if (mCreated) { mIsPlaying = !mIsPlaying; - setPlayingStreamingMediaPlayer(mIsPlaying); + //setPlayingStreamingMediaPlayer(mIsPlaying); } } @@ -195,7 +210,7 @@ @Override public void onClick(View view) { if (mNativeCodecPlayerVideoSink != null) { - rewindStreamingMediaPlayer(); + //rewindStreamingMediaPlayer(); } } @@ -203,16 +218,27 @@ } void switchSurface() { + + //mGLView1VideoSink.useAsSinkForNative(); + //mSurfaceHolder1VideoSink.useAsSinkForNative(); + if (mCreated && mNativeCodecPlayerVideoSink != mSelectedVideoSink) { // shutdown and recreate on other surface - Log.i("@@@", "shutting down player"); - shutdown(); + Log.i("@@@", "shutting down player"); + //shutdown(1); + //shutdown(2); mCreated = false; - mSelectedVideoSink.useAsSinkForNative(); + //mSelectedVideoSink.useAsSinkForNative(); + + + mNativeCodecPlayerVideoSink = mSelectedVideoSink; if (mSourceString != null) { Log.i("@@@", "recreating player"); - mCreated = createStreamingMediaPlayer(getResources().getAssets(),mSourceString); + //mCreated = createStreamingMediaPlayer(getResources().getAssets(),mSourceString); + //mCreated = createPlayer(1, "rtsp://admin:admin12345@192.168.1.70:554/h264/ch1/main/av_stream"); + //mCreated = createPlayer(2, "rtsp://admin:admin12345@192.168.1.70:554/h264/ch1/main/av_stream"); + //mCreated = createPlayer(1, "rtsp://192.168.1.56:8554"); mIsPlaying = false; } } @@ -223,7 +249,7 @@ protected void onPause() { mIsPlaying = false; - setPlayingStreamingMediaPlayer(false); + //setPlayingStreamingMediaPlayer(false); mGLView1.onPause(); super.onPause(); } @@ -240,7 +266,8 @@ @Override protected void onDestroy() { - shutdown(); + shutdown(1); + shutdown(2); mCreated = false; super.onDestroy(); } @@ -252,16 +279,23 @@ private RadioButton mRadio2; /** Native methods, implemented in jni folder */ - public static native void createEngine(); - public static native boolean createStreamingMediaPlayer(AssetManager assetMgr, String filename); - public static native void setPlayingStreamingMediaPlayer(boolean isPlaying); - public static native void shutdown(); - public static native void setSurface(Surface surface); - public static native void rewindStreamingMediaPlayer(); + //public static native void createEngine(); + //public static native boolean createStreamingMediaPlayer(AssetManager assetMgr, String filename); + //public static native void setPlayingStreamingMediaPlayer(boolean isPlaying); + //public static native void shutdown(); + //public static native void setSurface(Surface surface); + //public static native void rewindStreamingMediaPlayer(); + + + public static native void init(); + public static native void setSurface(int cameraIdx, Surface surface); + public static native boolean createPlayer(int cameraIdx, String uri); + public static native void shutdown(int cameraIdx); + /** Load jni .so on initialization */ static { - System.loadLibrary("native-codec-jni"); + System.loadLibrary("rtspface"); } // VideoSink abstracts out the difference between Surface and SurfaceTexture @@ -290,7 +324,7 @@ void useAsSinkForNative() { Surface s = mSurfaceHolder.getSurface(); Log.i("@@@", "setting surface " + s); - setSurface(s); + setSurface(1, s); } } @@ -311,7 +345,7 @@ void useAsSinkForNative() { SurfaceTexture st = mMyGLSurfaceView.getSurfaceTexture(); Surface s = new Surface(st); - setSurface(s); + setSurface(2, s); s.release(); } -- Gitblit v1.8.0