diff --git a/extensions/opus/src/main/java/com/google/android/exoplayer/ext/opus/LibopusAudioTrackRenderer.java b/extensions/opus/src/main/java/com/google/android/exoplayer/ext/opus/LibopusAudioTrackRenderer.java index b5c3bd6295..f444e9b2d9 100644 --- a/extensions/opus/src/main/java/com/google/android/exoplayer/ext/opus/LibopusAudioTrackRenderer.java +++ b/extensions/opus/src/main/java/com/google/android/exoplayer/ext/opus/LibopusAudioTrackRenderer.java @@ -15,6 +15,7 @@ */ package com.google.android.exoplayer.ext.opus; +import com.google.android.exoplayer.CodecCounters; import com.google.android.exoplayer.ExoPlaybackException; import com.google.android.exoplayer.ExoPlayer; import com.google.android.exoplayer.MediaClock; @@ -75,6 +76,8 @@ public final class LibopusAudioTrackRenderer extends SampleSourceTrackRenderer */ public static final int MSG_SET_VOLUME = 1; + public final CodecCounters codecCounters = new CodecCounters(); + private final Handler eventHandler; private final EventListener eventListener; private final MediaFormatHolder formatHolder; @@ -191,6 +194,7 @@ public final class LibopusAudioTrackRenderer extends SampleSourceTrackRenderer throw new ExoPlaybackException(e); } decoder.start(); + codecCounters.codecInitCount++; } // Rendering loop. @@ -207,6 +211,7 @@ public final class LibopusAudioTrackRenderer extends SampleSourceTrackRenderer notifyDecoderError(e); throw new ExoPlaybackException(e); } + codecCounters.ensureUpdated(); } private void renderBuffer() throws OpusDecoderException, AudioTrack.InitializationException, @@ -253,6 +258,7 @@ public final class LibopusAudioTrackRenderer extends SampleSourceTrackRenderer // Release the buffer if it was consumed. if ((handleBufferResult & AudioTrack.RESULT_BUFFER_CONSUMED) != 0) { decoder.releaseOutputBuffer(outputBuffer); + codecCounters.renderedOutputBufferCount++; outputBuffer = null; } } @@ -372,6 +378,7 @@ public final class LibopusAudioTrackRenderer extends SampleSourceTrackRenderer if (decoder != null) { decoder.release(); decoder = null; + codecCounters.codecReleaseCount++; } audioTrack.release(); } finally { diff --git a/extensions/vp9/src/main/java/com/google/android/exoplayer/ext/vp9/LibvpxVideoTrackRenderer.java b/extensions/vp9/src/main/java/com/google/android/exoplayer/ext/vp9/LibvpxVideoTrackRenderer.java index a60f508921..fbd64f9940 100644 --- a/extensions/vp9/src/main/java/com/google/android/exoplayer/ext/vp9/LibvpxVideoTrackRenderer.java +++ b/extensions/vp9/src/main/java/com/google/android/exoplayer/ext/vp9/LibvpxVideoTrackRenderer.java @@ -192,6 +192,7 @@ public final class LibvpxVideoTrackRenderer extends SampleSourceTrackRenderer { if (decoder == null) { decoder = new VpxDecoderWrapper(outputMode); decoder.start(); + codecCounters.codecInitCount++; } // Rendering loop. @@ -202,6 +203,7 @@ public final class LibvpxVideoTrackRenderer extends SampleSourceTrackRenderer { notifyDecoderError(e); throw new ExoPlaybackException(e); } + codecCounters.ensureUpdated(); } private void processOutputBuffer(long positionUs, long elapsedRealtimeUs) @@ -406,6 +408,7 @@ public final class LibvpxVideoTrackRenderer extends SampleSourceTrackRenderer { if (decoder != null) { decoder.release(); decoder = null; + codecCounters.codecReleaseCount++; } } finally { super.onDisabled();