Commit 432d746d by tonihei Committed by Oliver Woodman

Remove default 60sec renderer offset.

This was only needed to ensure a ClippingMediaSource can provide samples from
a key frame before the clipping start time. Now the ClippingMediaSource will
not report negative timestamps, this workaround can be removed.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=190045302
parent 391a9997
...@@ -35,6 +35,9 @@ ...@@ -35,6 +35,9 @@
Previous instance must be released. Previous instance must be released.
* Fix ANR issue on Redmi 4X and Redmi Note 4 * Fix ANR issue on Redmi 4X and Redmi Note 4
([#4006](https://github.com/google/ExoPlayer/issues/4006)). ([#4006](https://github.com/google/ExoPlayer/issues/4006)).
* Removed default renderer time offset of 60000000 from internal player. The
actual renderer timestamp offset can be obtained by listening to
`BaseRenderer.onStreamChanged`.
### 2.7.1 ### ### 2.7.1 ###
......
...@@ -81,14 +81,6 @@ import java.util.Collections; ...@@ -81,14 +81,6 @@ import java.util.Collections;
private static final int RENDERING_INTERVAL_MS = 10; private static final int RENDERING_INTERVAL_MS = 10;
private static final int IDLE_INTERVAL_MS = 1000; private static final int IDLE_INTERVAL_MS = 1000;
/**
* Offset added to all sample timestamps read by renderers to make them non-negative. This is
* provided for convenience of sources that may return negative timestamps due to prerolling
* samples from a keyframe before their first sample with timestamp zero, so it must be set to a
* value greater than or equal to the maximum key-frame interval in seekable periods.
*/
private static final int RENDERER_TIMESTAMP_OFFSET_US = 60000000;
private final Renderer[] renderers; private final Renderer[] renderers;
private final RendererCapabilities[] rendererCapabilities; private final RendererCapabilities[] rendererCapabilities;
private final TrackSelector trackSelector; private final TrackSelector trackSelector;
...@@ -715,7 +707,7 @@ import java.util.Collections; ...@@ -715,7 +707,7 @@ import java.util.Collections;
private void resetRendererPosition(long periodPositionUs) throws ExoPlaybackException { private void resetRendererPosition(long periodPositionUs) throws ExoPlaybackException {
rendererPositionUs = rendererPositionUs =
!queue.hasPlayingPeriod() !queue.hasPlayingPeriod()
? periodPositionUs + RENDERER_TIMESTAMP_OFFSET_US ? periodPositionUs
: queue.getPlayingPeriod().toRendererTime(periodPositionUs); : queue.getPlayingPeriod().toRendererTime(periodPositionUs);
mediaClock.resetPosition(rendererPositionUs); mediaClock.resetPosition(rendererPositionUs);
for (Renderer renderer : enabledRenderers) { for (Renderer renderer : enabledRenderers) {
...@@ -766,7 +758,7 @@ import java.util.Collections; ...@@ -766,7 +758,7 @@ import java.util.Collections;
handler.removeMessages(MSG_DO_SOME_WORK); handler.removeMessages(MSG_DO_SOME_WORK);
rebuffering = false; rebuffering = false;
mediaClock.stop(); mediaClock.stop();
rendererPositionUs = RENDERER_TIMESTAMP_OFFSET_US; rendererPositionUs = 0;
for (Renderer renderer : enabledRenderers) { for (Renderer renderer : enabledRenderers) {
try { try {
disableRenderer(renderer); disableRenderer(renderer);
...@@ -1485,7 +1477,6 @@ import java.util.Collections; ...@@ -1485,7 +1477,6 @@ import java.util.Collections;
MediaPeriod mediaPeriod = MediaPeriod mediaPeriod =
queue.enqueueNextMediaPeriod( queue.enqueueNextMediaPeriod(
rendererCapabilities, rendererCapabilities,
RENDERER_TIMESTAMP_OFFSET_US,
trackSelector, trackSelector,
loadControl.getAllocator(), loadControl.getAllocator(),
mediaSource, mediaSource,
......
...@@ -132,7 +132,6 @@ import com.google.android.exoplayer2.util.Assertions; ...@@ -132,7 +132,6 @@ import com.google.android.exoplayer2.util.Assertions;
* and returns it. * and returns it.
* *
* @param rendererCapabilities The renderer capabilities. * @param rendererCapabilities The renderer capabilities.
* @param rendererTimestampOffsetUs The base time offset added to for renderers.
* @param trackSelector The track selector. * @param trackSelector The track selector.
* @param allocator The allocator. * @param allocator The allocator.
* @param mediaSource The media source that produced the media period. * @param mediaSource The media source that produced the media period.
...@@ -141,7 +140,6 @@ import com.google.android.exoplayer2.util.Assertions; ...@@ -141,7 +140,6 @@ import com.google.android.exoplayer2.util.Assertions;
*/ */
public MediaPeriod enqueueNextMediaPeriod( public MediaPeriod enqueueNextMediaPeriod(
RendererCapabilities[] rendererCapabilities, RendererCapabilities[] rendererCapabilities,
long rendererTimestampOffsetUs,
TrackSelector trackSelector, TrackSelector trackSelector,
Allocator allocator, Allocator allocator,
MediaSource mediaSource, MediaSource mediaSource,
...@@ -149,7 +147,7 @@ import com.google.android.exoplayer2.util.Assertions; ...@@ -149,7 +147,7 @@ import com.google.android.exoplayer2.util.Assertions;
MediaPeriodInfo info) { MediaPeriodInfo info) {
long rendererPositionOffsetUs = long rendererPositionOffsetUs =
loading == null loading == null
? (info.startPositionUs + rendererTimestampOffsetUs) ? info.startPositionUs
: (loading.getRendererOffset() + loading.info.durationUs); : (loading.getRendererOffset() + loading.info.durationUs);
MediaPeriodHolder newPeriodHolder = MediaPeriodHolder newPeriodHolder =
new MediaPeriodHolder( new MediaPeriodHolder(
......
...@@ -181,8 +181,7 @@ public final class ExoPlayerTest { ...@@ -181,8 +181,7 @@ public final class ExoPlayerTest {
// media clock position will be the start of the timeline until the stream is set to be // media clock position will be the start of the timeline until the stream is set to be
// final, at which point it jumps to the end of the timeline allowing the playing period // final, at which point it jumps to the end of the timeline allowing the playing period
// to advance. // to advance.
// TODO: Avoid hard-coding ExoPlayerImplInternal.RENDERER_TIMESTAMP_OFFSET_US. return isCurrentStreamFinal() ? 30 : 0;
return isCurrentStreamFinal() ? 60000030 : 60000000;
} }
@Override @Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment