Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1349)

Unified Diff: talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java

Issue 1393203005: Add option to print peer connection factory Java stack traces. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Use mediaCodecThread for check Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java
diff --git a/talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java b/talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java
index afaebf6f2eea1072c5671f3564ecb578615abe4d..1d413b8ece89d1a42cb6a7a89b6c371f9784c1d2 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) {
wzh 2015/10/12 20:45:47 nit: if we can have a global util func for this, w
+ 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) {

Powered by Google App Engine
This is Rietveld 408576698