From 01249bf1cd41a537d3f3b43c92cf771c704083b3 Mon Sep 17 00:00:00 2001 From: olly Date: Wed, 8 Jul 2020 12:30:48 +0100 Subject: [PATCH] BaseRenderer: Add getStartPositionUs This is useful for subclasses to easily query the point up to which they should only decode (but not render) content, rather than each subclass having to have its own startPositionUs and update it in onPositionReset. PiperOrigin-RevId: 320163677 --- .../com/google/android/exoplayer2/BaseRenderer.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/BaseRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/BaseRenderer.java index c26e12bcb7..879daa603f 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/BaseRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/BaseRenderer.java @@ -36,6 +36,7 @@ public abstract class BaseRenderer implements Renderer, RendererCapabilities { private SampleStream stream; private Format[] streamFormats; private long streamOffsetUs; + private long startPositionUs; private long readingPositionUs; private boolean streamIsFinal; private boolean throwRendererExceptionIsExecuting; @@ -89,6 +90,7 @@ public abstract class BaseRenderer implements Renderer, RendererCapabilities { Assertions.checkState(state == STATE_DISABLED); this.configuration = configuration; state = STATE_ENABLED; + startPositionUs = positionUs; onEnabled(joining, mayRenderStartOfStream); replaceStream(formats, stream, offsetUs); onPositionReset(positionUs, joining); @@ -146,6 +148,7 @@ public abstract class BaseRenderer implements Renderer, RendererCapabilities { @Override public final void resetPosition(long positionUs) throws ExoPlaybackException { streamIsFinal = false; + startPositionUs = positionUs; readingPositionUs = positionUs; onPositionReset(positionUs, false); } @@ -282,6 +285,14 @@ public abstract class BaseRenderer implements Renderer, RendererCapabilities { // Methods to be called by subclasses. + /** + * Returns the position passed to the most recent call to {@link #enable} or {@link + * #resetPosition}. + */ + protected final long getStartPositionUs() { + return startPositionUs; + } + /** Returns a clear {@link FormatHolder}. */ protected final FormatHolder getFormatHolder() { formatHolder.clear();