From f637fde962d7d82cc0ce0d6f767248efab18942a Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Wed, 22 Apr 2015 16:17:36 +0100 Subject: [PATCH] Allow overriding of codec buffer dequeue block time. --- .../android/exoplayer/MediaCodecTrackRenderer.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java index d6350c3159..364a3f4f79 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java @@ -793,6 +793,15 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { return SystemClock.elapsedRealtime() < codecHotswapTimeMs + MAX_CODEC_HOTSWAP_TIME_MS; } + /** + * Returns the maximum time to block whilst waiting for a decoded output buffer. + * + * @return The maximum time to block, in microseconds. + */ + protected long getDequeueOutputBufferTimeoutUs() { + return 0; + } + /** * @return True if it may be possible to drain more output data. False otherwise. * @throws ExoPlaybackException If an error occurs draining the output buffer. @@ -805,7 +814,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { } if (outputIndex < 0) { - outputIndex = codec.dequeueOutputBuffer(outputBufferInfo, 0); + outputIndex = codec.dequeueOutputBuffer(outputBufferInfo, getDequeueOutputBufferTimeoutUs()); } if (outputIndex == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {