aboutsummaryrefslogtreecommitdiff
path: root/talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java
diff options
context:
space:
mode:
authorAlex Glaznev <glaznev@google.com>2015-10-09 13:58:18 -0700
committerAlex Glaznev <glaznev@google.com>2015-10-09 20:58:37 +0000
commitb68c5995d1ac84866da45a4ecbb180d8c704ad90 (patch)
treebe7797674c91760f71d6f0ab038d2c0a4fb6fe1b /talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java
parentd4cec0d8fa7913bc9dfa9137e44cca9098e16698 (diff)
downloadwebrtc-b68c5995d1ac84866da45a4ecbb180d8c704ad90.tar.gz
Add option to print peer connection factory Java stack traces.
Updated version with better handling of media codec release checks. R=wzh@webrtc.org Review URL: https://codereview.webrtc.org/1397163002 . Cr-Commit-Position: refs/heads/master@{#10238}
Diffstat (limited to 'talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java')
-rw-r--r--talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java34
1 files changed, 32 insertions, 2 deletions
diff --git a/talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java b/talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java
index afaebf6f2e..1d413b8ece 100644
--- a/talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java
+++ b/talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java
@@ -36,12 +36,10 @@ import javax.microedition.khronos.opengles.GL10;
import android.annotation.SuppressLint;
import android.graphics.Point;
import android.graphics.Rect;
-import android.graphics.SurfaceTexture;
import android.opengl.EGL14;
import android.opengl.EGLContext;
import android.opengl.GLES20;
import android.opengl.GLSurfaceView;
-import android.opengl.Matrix;
import org.webrtc.Logging;
import org.webrtc.VideoRenderer.I420Frame;
@@ -77,6 +75,9 @@ public class VideoRendererGui implements GLSurfaceView.Renderer {
// Current SDK version.
private static final int CURRENT_SDK_VERSION =
android.os.Build.VERSION.SDK_INT;
+ // Render and draw threads.
+ private static Thread renderFrameThread;
+ private static Thread drawThread;
private VideoRendererGui(GLSurfaceView surface) {
this.surface = surface;
@@ -372,6 +373,9 @@ public class VideoRendererGui implements GLSurfaceView.Renderer {
VideoRenderer.renderFrameDone(frame);
return;
}
+ if (renderFrameThread == null) {
+ renderFrameThread = Thread.currentThread();
+ }
if (!seenFrame && rendererEvents != null) {
Logging.d(TAG, "ID: " + id + ". Reporting first rendered frame.");
rendererEvents.onFirstFrameRendered();
@@ -394,6 +398,7 @@ public class VideoRendererGui implements GLSurfaceView.Renderer {
// Skip rendering of this frame if previous frame was not rendered yet.
framesDropped++;
VideoRenderer.renderFrameDone(frame);
+ seenFrame = true;
return;
}
pendingFrame = frame;
@@ -430,6 +435,8 @@ public class VideoRendererGui implements GLSurfaceView.Renderer {
}
instance.yuvImageRenderers.clear();
}
+ renderFrameThread = null;
+ drawThread = null;
instance.surface = null;
eglContext = null;
eglContextReady = null;
@@ -565,6 +572,26 @@ public class VideoRendererGui implements GLSurfaceView.Renderer {
}
}
+ private static void printStackTrace(Thread thread, String threadName) {
+ if (thread != null) {
+ StackTraceElement[] stackTraces = thread.getStackTrace();
+ if (stackTraces.length > 0) {
+ Logging.d(TAG, threadName + " stacks trace:");
+ for (StackTraceElement stackTrace : stackTraces) {
+ Logging.d(TAG, stackTrace.toString());
+ }
+ }
+ }
+ }
+
+ public static synchronized void printStackTraces() {
+ if (instance == null) {
+ return;
+ }
+ printStackTrace(renderFrameThread, "Render frame thread");
+ printStackTrace(drawThread, "Draw thread");
+ }
+
@SuppressLint("NewApi")
@Override
public void onSurfaceCreated(GL10 unused, EGLConfig config) {
@@ -613,6 +640,9 @@ public class VideoRendererGui implements GLSurfaceView.Renderer {
@Override
public void onDrawFrame(GL10 unused) {
+ if (drawThread == null) {
+ drawThread = Thread.currentThread();
+ }
GLES20.glViewport(0, 0, screenWidth, screenHeight);
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
synchronized (yuvImageRenderers) {