From 21dd59badbb9dc12384a1b7041ada9454e4a2718 Mon Sep 17 00:00:00 2001 From: andrewlewis Date: Tue, 3 Dec 2019 16:34:24 +0000 Subject: [PATCH] Don't try to track buffersInCodec with tunneling PiperOrigin-RevId: 283551324 --- .../exoplayer2/video/MediaCodecVideoRenderer.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java index 252e73366c..e27c738f08 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java @@ -763,7 +763,11 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { @CallSuper @Override protected void onQueueInputBuffer(DecoderInputBuffer buffer) { - buffersInCodecCount++; + // In tunneling mode the device may do frame rate conversion, so in general we can't keep track + // of the number of buffers in the codec. + if (!tunneling) { + buffersInCodecCount++; + } lastInputTimeUs = Math.max(buffer.timeUs, lastInputTimeUs); if (Util.SDK_INT < 23 && tunneling) { // In tunneled mode before API 23 we don't have a way to know when the buffer is output, so @@ -1008,7 +1012,9 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { @CallSuper @Override protected void onProcessedOutputBuffer(long presentationTimeUs) { - buffersInCodecCount--; + if (!tunneling) { + buffersInCodecCount--; + } while (pendingOutputStreamOffsetCount != 0 && presentationTimeUs >= pendingOutputStreamSwitchTimesUs[0]) { outputStreamOffsetUs = pendingOutputStreamOffsetsUs[0];