From 6082bb67691bcacab235793c29cc0b5ca0a68e53 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Tue, 21 Jul 2015 09:58:36 +0100 Subject: [PATCH] Always use timed video frame release on V21+. --- .../MediaCodecVideoTrackRenderer.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecVideoTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecVideoTrackRenderer.java index 736e20fbe1..5970c7df63 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecVideoTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecVideoTrackRenderer.java @@ -437,7 +437,11 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer { } if (!renderedFirstFrame) { - renderOutputBufferImmediate(codec, bufferIndex); + if (Util.SDK_INT >= 21) { + renderOutputBufferV21(codec, bufferIndex, System.nanoTime()); + } else { + renderOutputBuffer(codec, bufferIndex); + } return true; } @@ -448,7 +452,7 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer { if (Util.SDK_INT >= 21) { // Let the underlying framework time the release. if (earlyUs < 50000) { - renderOutputBufferTimedV21(codec, bufferIndex, adjustedReleaseTimeNs); + renderOutputBufferV21(codec, bufferIndex, adjustedReleaseTimeNs); return true; } } else { @@ -464,7 +468,7 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer { Thread.currentThread().interrupt(); } } - renderOutputBufferImmediate(codec, bufferIndex); + renderOutputBuffer(codec, bufferIndex); return true; } } @@ -491,9 +495,9 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer { } } - protected void renderOutputBufferImmediate(MediaCodec codec, int bufferIndex) { + protected void renderOutputBuffer(MediaCodec codec, int bufferIndex) { maybeNotifyVideoSizeChanged(); - TraceUtil.beginSection("renderVideoBufferImmediate"); + TraceUtil.beginSection("releaseOutputBuffer"); codec.releaseOutputBuffer(bufferIndex, true); TraceUtil.endSection(); codecCounters.renderedOutputBufferCount++; @@ -502,9 +506,9 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer { } @TargetApi(21) - protected void renderOutputBufferTimedV21(MediaCodec codec, int bufferIndex, long releaseTimeNs) { + protected void renderOutputBufferV21(MediaCodec codec, int bufferIndex, long releaseTimeNs) { maybeNotifyVideoSizeChanged(); - TraceUtil.beginSection("releaseOutputBufferTimed"); + TraceUtil.beginSection("releaseOutputBuffer"); codec.releaseOutputBuffer(bufferIndex, releaseTimeNs); TraceUtil.endSection(); codecCounters.renderedOutputBufferCount++;