Commit 5cf7c2ec by andrewlewis Committed by Oliver Woodman

Separate enabling/setting TrackStreams in renderers (playlists #1).

This is in preparation for changing the TrackStream while keeping the renderer
enabled, to give seamless transitions for playlists.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=123394733
parent 17f8ac8a
...@@ -332,7 +332,7 @@ public final class LibvpxVideoTrackRenderer extends TrackRenderer { ...@@ -332,7 +332,7 @@ public final class LibvpxVideoTrackRenderer extends TrackRenderer {
} }
@Override @Override
protected void onEnabled(Format[] formats, boolean joining) throws ExoPlaybackException { protected void onEnabled(boolean joining) throws ExoPlaybackException {
codecCounters.reset(); codecCounters.reset();
eventDispatcher.enabled(codecCounters); eventDispatcher.enabled(codecCounters);
} }
......
...@@ -255,10 +255,10 @@ public class MediaCodecAudioTrackRenderer extends MediaCodecTrackRenderer implem ...@@ -255,10 +255,10 @@ public class MediaCodecAudioTrackRenderer extends MediaCodecTrackRenderer implem
} }
@Override @Override
protected void onEnabled(Format[] formats, boolean joining) throws ExoPlaybackException { protected void onEnabled(boolean joining) throws ExoPlaybackException {
codecCounters.reset(); codecCounters.reset();
eventDispatcher.enabled(codecCounters); eventDispatcher.enabled(codecCounters);
super.onEnabled(formats, joining); super.onEnabled(joining);
} }
@Override @Override
......
...@@ -209,10 +209,18 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer { ...@@ -209,10 +209,18 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer {
} }
@Override @Override
protected void onEnabled(Format[] formats, boolean joining) throws ExoPlaybackException { protected void onEnabled(boolean joining) throws ExoPlaybackException {
codecCounters.reset(); codecCounters.reset();
eventDispatcher.enabled(codecCounters); eventDispatcher.enabled(codecCounters);
super.onEnabled(formats, joining); super.onEnabled(joining);
if (joining && allowedJoiningTimeMs > 0) {
joiningDeadlineMs = SystemClock.elapsedRealtime() + allowedJoiningTimeMs;
}
frameReleaseTimeHelper.enable();
}
@Override
protected void onStreamChanged(Format[] formats) throws ExoPlaybackException {
adaptiveMaxWidth = Format.NO_VALUE; adaptiveMaxWidth = Format.NO_VALUE;
adaptiveMaxHeight = Format.NO_VALUE; adaptiveMaxHeight = Format.NO_VALUE;
if (formats.length > 1) { if (formats.length > 1) {
...@@ -226,10 +234,7 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer { ...@@ -226,10 +234,7 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer {
adaptiveMaxHeight = 1080; adaptiveMaxHeight = 1080;
} }
} }
if (joining && allowedJoiningTimeMs > 0) { super.onStreamChanged(formats);
joiningDeadlineMs = SystemClock.elapsedRealtime() + allowedJoiningTimeMs;
}
frameReleaseTimeHelper.enable();
} }
@Override @Override
......
...@@ -174,8 +174,8 @@ public abstract class TrackRenderer implements ExoPlayerComponent { ...@@ -174,8 +174,8 @@ public abstract class TrackRenderer implements ExoPlayerComponent {
boolean joining) throws ExoPlaybackException { boolean joining) throws ExoPlaybackException {
Assertions.checkState(state == STATE_DISABLED); Assertions.checkState(state == STATE_DISABLED);
state = STATE_ENABLED; state = STATE_ENABLED;
this.stream = stream; onEnabled(joining);
onEnabled(formats, joining); replaceTrackStream(formats, stream);
reset(positionUs); reset(positionUs);
} }
...@@ -184,11 +184,35 @@ public abstract class TrackRenderer implements ExoPlayerComponent { ...@@ -184,11 +184,35 @@ public abstract class TrackRenderer implements ExoPlayerComponent {
* <p> * <p>
* The default implementation is a no-op. * The default implementation is a no-op.
* *
* @param formats The enabled formats.
* @param joining Whether this renderer is being enabled to join an ongoing playback. * @param joining Whether this renderer is being enabled to join an ongoing playback.
* @throws ExoPlaybackException If an error occurs. * @throws ExoPlaybackException If an error occurs.
*/ */
protected void onEnabled(Format[] formats, boolean joining) throws ExoPlaybackException { protected void onEnabled(boolean joining) throws ExoPlaybackException {
// Do nothing.
}
/**
* Replaces the {@link TrackStream} from which samples will be consumed.
*
* @param formats The enabled formats.
* @param trackStream The track stream from which the renderer should consume.
* @throws ExoPlaybackException If an error occurs.
*/
/* package */ final void replaceTrackStream(Format[] formats, TrackStream trackStream)
throws ExoPlaybackException {
stream = trackStream;
onStreamChanged(formats);
}
/**
* Called when the renderer's stream has changed.
* <p>
* The default implementation is a no-op.
*
* @param formats The enabled formats.
* @throws ExoPlaybackException Thrown if an error occurs.
*/
protected void onStreamChanged(Format[] formats) throws ExoPlaybackException {
// Do nothing. // Do nothing.
} }
......
...@@ -298,7 +298,7 @@ public abstract class AudioDecoderTrackRenderer extends TrackRenderer implements ...@@ -298,7 +298,7 @@ public abstract class AudioDecoderTrackRenderer extends TrackRenderer implements
} }
@Override @Override
protected void onEnabled(Format[] formats, boolean joining) throws ExoPlaybackException { protected void onEnabled(boolean joining) throws ExoPlaybackException {
codecCounters.reset(); codecCounters.reset();
eventDispatcher.enabled(codecCounters); eventDispatcher.enabled(codecCounters);
} }
......
...@@ -104,8 +104,10 @@ public final class TextTrackRenderer extends TrackRenderer implements Callback { ...@@ -104,8 +104,10 @@ public final class TextTrackRenderer extends TrackRenderer implements Callback {
} }
@Override @Override
protected void onEnabled(Format[] formats, boolean joining) throws ExoPlaybackException { protected void onStreamChanged(Format[] formats) throws ExoPlaybackException {
super.onEnabled(formats, joining); if (parser != null) {
parser.release();
}
parser = parserFactory.createParser(formats[0]); parser = parserFactory.createParser(formats[0]);
} }
......
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