Report GL Renderer in RendererException

This commit is contained in:
Cameron Gutman 2017-11-20 22:38:22 -08:00
parent 85d0ce0c40
commit ff38074f55
2 changed files with 15 additions and 9 deletions

View File

@ -226,7 +226,8 @@ public class Game extends Activity implements SurfaceHolder.Callback,
shortcutHelper.reportShortcutUsed(uuid); shortcutHelper.reportShortcutUsed(uuid);
// Initialize the MediaCodec helper before creating the decoder // Initialize the MediaCodec helper before creating the decoder
MediaCodecHelper.initialize(this, GlPreferences.readPreferences(this).glRenderer); GlPreferences glPrefs = GlPreferences.readPreferences(this);
MediaCodecHelper.initialize(this, glPrefs.glRenderer);
// Check if the user has enabled HDR // Check if the user has enabled HDR
if (prefConfig.enableHdr) { if (prefConfig.enableHdr) {
@ -277,7 +278,8 @@ public class Game extends Activity implements SurfaceHolder.Callback,
}, },
tombstonePrefs.getInt("CrashCount", 0), tombstonePrefs.getInt("CrashCount", 0),
connMgr.isActiveNetworkMetered(), connMgr.isActiveNetworkMetered(),
willStreamHdr willStreamHdr,
glPrefs.glRenderer
); );
// Don't stream HDR if the decoder can't support it // Don't stream HDR if the decoder can't support it

View File

@ -54,6 +54,7 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
private CrashListener crashListener; private CrashListener crashListener;
private boolean reportedCrash; private boolean reportedCrash;
private int consecutiveCrashCount; private int consecutiveCrashCount;
private String glRenderer;
private boolean needsBaselineSpsHack; private boolean needsBaselineSpsHack;
private SeqParameterSet savedSps; private SeqParameterSet savedSps;
@ -118,12 +119,14 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
public MediaCodecDecoderRenderer(PreferenceConfiguration prefs, public MediaCodecDecoderRenderer(PreferenceConfiguration prefs,
CrashListener crashListener, int consecutiveCrashCount, CrashListener crashListener, int consecutiveCrashCount,
boolean meteredData, boolean requestedHdr) { boolean meteredData, boolean requestedHdr,
String glRenderer) {
//dumpDecoders(); //dumpDecoders();
this.prefs = prefs; this.prefs = prefs;
this.crashListener = crashListener; this.crashListener = crashListener;
this.consecutiveCrashCount = consecutiveCrashCount; this.consecutiveCrashCount = consecutiveCrashCount;
this.glRenderer = glRenderer;
// Disable spinner threads in battery saver mode or 4K // Disable spinner threads in battery saver mode or 4K
if (prefs.batterySaver || prefs.height >= 2160) { if (prefs.batterySaver || prefs.height >= 2160) {
@ -961,7 +964,7 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
return (int)(decoderTimeMs / totalFrames); return (int)(decoderTimeMs / totalFrames);
} }
public class RendererException extends RuntimeException { public static class RendererException extends RuntimeException {
private static final long serialVersionUID = 8985937536997012406L; private static final long serialVersionUID = 8985937536997012406L;
private final Exception originalException; private final Exception originalException;
@ -969,12 +972,12 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
private ByteBuffer currentBuffer; private ByteBuffer currentBuffer;
private int currentCodecFlags; private int currentCodecFlags;
public RendererException(MediaCodecDecoderRenderer renderer, Exception e) { RendererException(MediaCodecDecoderRenderer renderer, Exception e) {
this.renderer = renderer; this.renderer = renderer;
this.originalException = e; this.originalException = e;
} }
public RendererException(MediaCodecDecoderRenderer renderer, Exception e, ByteBuffer currentBuffer, int currentCodecFlags) { RendererException(MediaCodecDecoderRenderer renderer, Exception e, ByteBuffer currentBuffer, int currentCodecFlags) {
this.renderer = renderer; this.renderer = renderer;
this.originalException = e; this.originalException = e;
this.currentBuffer = currentBuffer; this.currentBuffer = currentBuffer;
@ -996,6 +999,7 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
str += "HEVC supported width range: "+hevcWidthRange.getLower()+" - "+hevcWidthRange.getUpper()+"\n"; str += "HEVC supported width range: "+hevcWidthRange.getLower()+" - "+hevcWidthRange.getUpper()+"\n";
} }
str += "Adaptive playback: "+renderer.adaptivePlayback+"\n"; str += "Adaptive playback: "+renderer.adaptivePlayback+"\n";
str += "GL Renderer: "+renderer.glRenderer+"\n";
str += "Build fingerprint: "+Build.FINGERPRINT+"\n"; str += "Build fingerprint: "+Build.FINGERPRINT+"\n";
str += "Consecutive crashes: "+renderer.consecutiveCrashCount+"\n"; str += "Consecutive crashes: "+renderer.consecutiveCrashCount+"\n";
str += "Initial video dimensions: "+renderer.initialWidth+"x"+renderer.initialHeight+"\n"; str += "Initial video dimensions: "+renderer.initialWidth+"x"+renderer.initialHeight+"\n";
@ -1003,9 +1007,9 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
str += "Bitrate: "+renderer.prefs.bitrate+" Mbps \n"; str += "Bitrate: "+renderer.prefs.bitrate+" Mbps \n";
str += "In stats: "+renderer.numVpsIn+", "+renderer.numSpsIn+", "+renderer.numPpsIn+"\n"; str += "In stats: "+renderer.numVpsIn+", "+renderer.numSpsIn+", "+renderer.numPpsIn+"\n";
str += "Total frames: "+renderer.totalFrames+"\n"; str += "Total frames: "+renderer.totalFrames+"\n";
str += "Frame losses: "+renderer.framesLost+" in "+frameLossEvents+" loss events\n"; str += "Frame losses: "+renderer.framesLost+" in "+renderer.frameLossEvents+" loss events\n";
str += "Average end-to-end client latency: "+getAverageEndToEndLatency()+"ms\n"; str += "Average end-to-end client latency: "+renderer.getAverageEndToEndLatency()+"ms\n";
str += "Average hardware decoder latency: "+getAverageDecoderLatency()+"ms\n"; str += "Average hardware decoder latency: "+renderer.getAverageDecoderLatency()+"ms\n";
if (currentBuffer != null) { if (currentBuffer != null) {
str += "Current buffer: "; str += "Current buffer: ";