From e98b846884dd2f02b2aceecbb77dff78d866fca4 Mon Sep 17 00:00:00 2001 From: tonihei Date: Mon, 17 Jan 2022 09:18:42 +0000 Subject: [PATCH] Reset readingPositionUs in BaseRenderer.enable This does currently only happen by chance in replaceStream (called from enable) if the stream previosly played read until C.TIME_END_OF_SOURCE. enable already makes all changes done in resetPosition (except resetting the reading position), so it's less error-prone and makes the intention clearer if the same code is called from both enable and resetPosition. The effect of this bug was quite limited because the numerical value of readingPositionUs was only relevant for periods with changing durations and server-side inserted ads. PiperOrigin-RevId: 422300690 --- .../java/androidx/media3/exoplayer/BaseRenderer.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/BaseRenderer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/BaseRenderer.java index 2ff0c7d2fd..f2667947d9 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/BaseRenderer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/BaseRenderer.java @@ -103,10 +103,9 @@ public abstract class BaseRenderer implements Renderer, RendererCapabilities { Assertions.checkState(state == STATE_DISABLED); this.configuration = configuration; state = STATE_ENABLED; - lastResetPositionUs = positionUs; onEnabled(joining, mayRenderStartOfStream); replaceStream(formats, stream, startPositionUs, offsetUs); - onPositionReset(positionUs, joining); + resetPosition(positionUs, joining); } @Override @@ -163,10 +162,14 @@ public abstract class BaseRenderer implements Renderer, RendererCapabilities { @Override public final void resetPosition(long positionUs) throws ExoPlaybackException { + resetPosition(positionUs, /* joining= */ false); + } + + private void resetPosition(long positionUs, boolean joining) throws ExoPlaybackException { streamIsFinal = false; lastResetPositionUs = positionUs; readingPositionUs = positionUs; - onPositionReset(positionUs, false); + onPositionReset(positionUs, joining); } @Override