houxiao
2017-07-13 900aab67f2ecdfd0ee962c90be8b468fe3d7f80a
VisitFace/RtspNativeCodec/app/src/main/java/com/example/nativecodec/NativeCodec.java
@@ -17,6 +17,7 @@
package com.example.nativecodec;
import android.app.Activity;
import android.app.NativeActivity;
import android.graphics.PixelFormat;
import android.graphics.SurfaceTexture;
import android.graphics.drawable.Drawable;
@@ -43,6 +44,9 @@
import android.widget.Button;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.ByteBuffer;
import cn.com.basic.face.util.NativeImg;
@@ -55,6 +59,12 @@
    SurfaceView mSurfaceView1;
    SurfaceHolder mSurfaceHolder1;
    SurfaceView mSurfaceView2;
    SurfaceHolder mSurfaceHolder2;
    SurfaceView mSurfaceView3;
    SurfaceHolder mSurfaceHolder3;
    VideoSink mSelectedVideoSink;
    VideoSink mNativeCodecPlayerVideoSink;
@@ -76,7 +86,7 @@
        ThisActivity = this;
        RtspFaceNative.init();
        RtspFaceNative.setLocalIP("192.168.1.10");
        RtspFaceNative.setLocalIP("192.168.1.74");
        mGLView1 = (MyGLSurfaceView) findViewById(R.id.glsurfaceview1);
@@ -84,6 +94,11 @@
        mSurfaceView1 = (SurfaceView) findViewById(R.id.surfaceview1);
        mSurfaceHolder1 = mSurfaceView1.getHolder();
        mSurfaceView2 = (SurfaceView) findViewById(R.id.surfaceview2);
        mSurfaceHolder2 = mSurfaceView2.getHolder();
        mSurfaceView3 = (SurfaceView) findViewById(R.id.surfaceview3);
        mSurfaceHolder3 = mSurfaceView3.getHolder();
        mSurfaceHolder1.addCallback(new SurfaceHolder.Callback() {
@@ -186,7 +201,32 @@
            }
        });
        // initialize button click handlers
        mSurfaceView1.getHolder().addCallback(new SurfaceHolder.Callback() {
            @Override
            public void surfaceCreated(SurfaceHolder holder) {
            }
            @Override
            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
            }
            @Override
            public void surfaceDestroyed(SurfaceHolder holder) {
            }
        });
        ((SurfaceView) findViewById(R.id.surfaceview3)).setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                mSurfaceHolder3.setFormat(PixelFormat.RGB_565);
                Surface s3 = mSurfaceHolder3.getSurface();
                RtspFaceNative.setCaptureSurface(s3);
            }
        });
                // initialize button click handlers
        // native MediaPlayer start/pause
        ((Button) findViewById(R.id.start_native)).setOnClickListener(new View.OnClickListener() {
@@ -203,17 +243,51 @@
                    }
                    if (mSourceString != null) {
                        RtspFaceNative.setSurface(1, mSurfaceHolder1.getSurface());
                        mGLView1VideoSink.useAsSinkForNative();
                        //RtspFaceNative.setSurface(1, s, mSurfaceHolder1.getSurface());
                        //RtspFaceNative.setSurface(1, mSurfaceHolderDecoder1.getSurface());
                        //mSurfaceHolder1.setFormat(PixelFormat.RGBA_8888);
                        mSurfaceHolder1.setFormat(PixelFormat.RGB_565);
                        Surface s = mSurfaceHolder1.getSurface();
                        RtspFaceNative.setSurface(1, s);
                        //mSurfaceHolder2.setFormat(PixelFormat.RGBA_8888);
                        mSurfaceHolder2.setFormat(PixelFormat.RGB_565);
                        Surface s2 = mSurfaceHolder2.getSurface();
                        RtspFaceNative.setSurface(2, s2);
                        //SurfaceTexture st = mGLView1VideoSink.mMyGLSurfaceView.getSurfaceTexture();
                        //Surface sgl = new Surface(st);
                        //RtspFaceNative.setSurface(2, sgl, sgl);
                        //mGLView1VideoSink.useAsSinkForNative();
                        //sgl.release();
                        RtspFaceNative.setFaceCallback(1, "cn/com/basic/face/util/RtspFaceNative", "faceCallBack");
                        RtspFaceNative.setFaceCallback(2, "cn/com/basic/face/util/RtspFaceNative", "faceCallBack");
                        //try
                        //{
                        //    String str = convertStreamToString(ThisActivity.getAssets().open("license.lic"));
                        //    RtspFaceNative.dbgSetStfaceLicense(str);
                        //}
                        //catch(Exception ex)
                        //{
                        //    return ;
                        //}
                        //mCreated = createStreamingMediaPlayer(getResources().getAssets(), mSourceString);
                        //#todo ok
                        mCreated = RtspFaceNative.createPlayer(1, "rtsp://admin:admin12345@192.168.1.70:554/h264/ch1/sub/av_stream");
                        //mCreated = RtspFaceNative.createPlayer(2, "rtsp://admin:admin12345@192.168.1.70:554/h264/ch1/sub/av_stream");
                        //mCreated = RtspFaceNative.createPlayer(1, "rtsp://admin:admin12345@192.168.1.70:554/h264/ch1/main/av_stream");
                        //mCreated = RtspFaceNative.createPlayer(1, "rtsp://admin:admin@192.168.1.188:554/cam/realmonitor?channel=1&subtype=2");
                        //mCreated = RtspFaceNative.createPlayer(2, "rtsp://Admin:1234@192.168.1.70/h264");
                        //mCreated = RtspFaceNative.createPlayer(1, "rtsp://Admin:1234@192.168.1.70/h264_2");
                        //mCreated = RtspFaceNative.createPlayer(1, "rtsp://Admin:1234@192.168.1.22/h264");
                        //mCreated = RtspFaceNative.createPlayer(1, "rtsp://admin:a1234567@192.168.1.68:554/h264/ch1/sub/av_stream");
                        mCreated = RtspFaceNative.createPlayer(1, "rtsp://admin:a1234567@192.168.1.68:554/h264/ch1/main/av_stream");
                        //mCreated = RtspFaceNative.createPlayer(2, "rtsp://admin:a1234567@192.168.1.68:554/h264/ch1/main/av_stream");
                        //mCreated = RtspFaceNative.createPlayer(2, "rtsp://admin:a1234567@192.168.1.68:554/h264/ch1/main/av_stream");
                        //mCreated = createPlayer(1, "rtsp://192.168.1.56:8554");
                        RtspFaceNative.setFaceCallback(1, "cn/com/basic/face/util/RtspFaceNative", "faceCallBack");
                        //RtspFaceNative.setFaceCallback(2, "cn/com/basic/face/util/RtspFaceNative", "faceCallBack");
                        //byte[] arr = new byte[5];
                        //arr[0] = 3; arr[1] = 4; arr[2] = 5;
@@ -277,6 +351,24 @@
    static NativeCodec ThisActivity;
    public String convertStreamToString(InputStream is) {
        try
        {
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line).append("\n");
            }
            reader.close();
            return sb.toString();
        }
        catch(Exception ex)
        {
            return  "";
        }
    }
    public static  void setFaceDrawable(NativeImg img)
    {
        //ImageView image = (ImageView)ThisActivity.findViewById(R.id.addface_image);
@@ -293,7 +385,7 @@
                ThisActivity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Bitmap bitmap = Bitmap.createBitmap(faceImg.width, faceImg.height, Bitmap.Config.ARGB_8888);
                        Bitmap bitmap = Bitmap.createBitmap(faceImg.width, faceImg.height, Bitmap.Config.RGB_565);//ARGB_8888
                        ByteBuffer byteBuffer = ByteBuffer.wrap(faceImg.image, 0, faceImg.size);
                        bitmap.copyPixelsFromBuffer(byteBuffer);
@@ -391,7 +483,7 @@
    /** Load jni .so on initialization */
    static {
        System.loadLibrary("rtspface");
        System.loadLibrary("opencv_java3");
        //System.loadLibrary("opencv_java3");
    }
    // VideoSink abstracts out the difference between Surface and SurfaceTexture
@@ -421,7 +513,7 @@
            Surface s = mSurfaceHolder.getSurface();
            Log.i("@@@", "setting surface " + s);
            //mSurfaceHolder1.setFormat(PixelFormat.RGBA_8888);
            RtspFaceNative.setSurface(1, s);
            //RtspFaceNative.setSurface(1, s);
        }
    }
@@ -443,7 +535,7 @@
            SurfaceTexture st = mMyGLSurfaceView.getSurfaceTexture();
            Surface s = new Surface(st);
            //setEGLConfigChooser(8, 8, 8, 8, 0, 0);
            RtspFaceNative.setSurface(2, s);
            //RtspFaceNative.setSurface(1, s);
            s.release();
        }