From 9ab291ea1c38dd2b0171810dac2e7a96aa45217e Mon Sep 17 00:00:00 2001 From: Andrey Pavlenko Date: Fri, 31 Jul 2015 01:52:10 +0300 Subject: [PATCH] adding displaying FPS --- .../tutorial-4-opencl/res/layout/activity.xml | 16 +++++++++------ .../samples/tutorial4/MyGLRendererBase.java | 20 ++++++++++++++++++- .../samples/tutorial4/MyGLSurfaceView.java | 12 ++++++++--- .../samples/tutorial4/Tutorial4Activity.java | 9 +++++++-- 4 files changed, 45 insertions(+), 12 deletions(-) diff --git a/samples/android/tutorial-4-opencl/res/layout/activity.xml b/samples/android/tutorial-4-opencl/res/layout/activity.xml index 17eaf2342..6d52fb294 100644 --- a/samples/android/tutorial-4-opencl/res/layout/activity.xml +++ b/samples/android/tutorial-4-opencl/res/layout/activity.xml @@ -1,12 +1,16 @@ - + android:layout_height="match_parent" > + + + android:id="@+id/fps_text_view" + android:text="FPS:" /> - + diff --git a/samples/android/tutorial-4-opencl/src/org/opencv/samples/tutorial4/MyGLRendererBase.java b/samples/android/tutorial-4-opencl/src/org/opencv/samples/tutorial4/MyGLRendererBase.java index f23d7e496..a0045696c 100644 --- a/samples/android/tutorial-4-opencl/src/org/opencv/samples/tutorial4/MyGLRendererBase.java +++ b/samples/android/tutorial-4-opencl/src/org/opencv/samples/tutorial4/MyGLRendererBase.java @@ -6,7 +6,11 @@ import javax.microedition.khronos.opengles.GL10; import android.graphics.SurfaceTexture; import android.opengl.GLES20; import android.opengl.GLSurfaceView; +import android.os.Handler; +import android.os.Looper; import android.util.Log; +import android.view.View; +import android.widget.TextView; public abstract class MyGLRendererBase implements GLSurfaceView.Renderer, SurfaceTexture.OnFrameAvailableListener { protected final String LOGTAG = "MyGLRendererBase"; @@ -15,6 +19,7 @@ public abstract class MyGLRendererBase implements GLSurfaceView.Renderer, Surfac protected SurfaceTexture mSTex; protected MyGLSurfaceView mView; + protected TextView mFpsText; protected boolean mGLInit = false; protected boolean mTexUpdate = false; @@ -27,6 +32,11 @@ public abstract class MyGLRendererBase implements GLSurfaceView.Renderer, Surfac protected abstract void closeCamera(); protected abstract void setCameraPreviewSize(int width, int height); + public void setFpsTextView(TextView fpsTV) + { + mFpsText = fpsTV; + } + public void onResume() { Log.i(LOGTAG, "onResume"); frameCounter = 0; @@ -70,8 +80,16 @@ public abstract class MyGLRendererBase implements GLSurfaceView.Renderer, Surfac frameCounter++; if(frameCounter >= 10) { - int fps = (int) (frameCounter * 1e9 / (System.nanoTime() - lastNanoTime)); + final int fps = (int) (frameCounter * 1e9 / (System.nanoTime() - lastNanoTime)); Log.i(LOGTAG, "drawFrame() FPS: "+fps); + if(mFpsText != null) { + Runnable fpsUpdater = new Runnable() { + public void run() { + mFpsText.setText("FPS: " + fps); + } + }; + new Handler(Looper.getMainLooper()).post(fpsUpdater); + } frameCounter = 0; lastNanoTime = System.nanoTime(); } diff --git a/samples/android/tutorial-4-opencl/src/org/opencv/samples/tutorial4/MyGLSurfaceView.java b/samples/android/tutorial-4-opencl/src/org/opencv/samples/tutorial4/MyGLSurfaceView.java index 2f9a4572f..2a97ac5b8 100644 --- a/samples/android/tutorial-4-opencl/src/org/opencv/samples/tutorial4/MyGLSurfaceView.java +++ b/samples/android/tutorial-4-opencl/src/org/opencv/samples/tutorial4/MyGLSurfaceView.java @@ -2,14 +2,16 @@ package org.opencv.samples.tutorial4; import android.content.Context; import android.opengl.GLSurfaceView; +import android.util.AttributeSet; import android.view.SurfaceHolder; +import android.widget.TextView; -class MyGLSurfaceView extends GLSurfaceView { +public class MyGLSurfaceView extends GLSurfaceView { MyGLRendererBase mRenderer; - MyGLSurfaceView(Context context) { - super(context); + public MyGLSurfaceView(Context context, AttributeSet attrs) { + super(context, attrs); if(android.os.Build.VERSION.SDK_INT >= 21) mRenderer = new Camera2Renderer(this); @@ -21,6 +23,10 @@ class MyGLSurfaceView extends GLSurfaceView { setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); } + public void setFpsTextView(TextView tv) { + mRenderer.setFpsTextView(tv); + } + @Override public void surfaceCreated(SurfaceHolder holder) { super.surfaceCreated(holder); diff --git a/samples/android/tutorial-4-opencl/src/org/opencv/samples/tutorial4/Tutorial4Activity.java b/samples/android/tutorial-4-opencl/src/org/opencv/samples/tutorial4/Tutorial4Activity.java index 556bf6f2e..3557189df 100644 --- a/samples/android/tutorial-4-opencl/src/org/opencv/samples/tutorial4/Tutorial4Activity.java +++ b/samples/android/tutorial-4-opencl/src/org/opencv/samples/tutorial4/Tutorial4Activity.java @@ -5,6 +5,7 @@ import android.content.pm.ActivityInfo; import android.os.Bundle; import android.view.Window; import android.view.WindowManager; +import android.widget.TextView; public class Tutorial4Activity extends Activity { @@ -20,8 +21,12 @@ public class Tutorial4Activity extends Activity { WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); - mView = new MyGLSurfaceView(this); - setContentView(mView); + //mView = new MyGLSurfaceView(this, null); + //setContentView(mView); + setContentView(R.layout.activity); + mView = (MyGLSurfaceView) findViewById(R.id.my_gl_surface_view); + TextView tv = (TextView)findViewById(R.id.fps_text_view); + mView.setFpsTextView(tv); } @Override