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 {
}
@Override
protected void onEnabled(Format[] formats, boolean joining) throws ExoPlaybackException {
protected void onEnabled(boolean joining) throws ExoPlaybackException {
codecCounters.reset();
eventDispatcher.enabled(codecCounters);
}
......
......@@ -255,10 +255,10 @@ public class MediaCodecAudioTrackRenderer extends MediaCodecTrackRenderer implem
}
@Override
protected void onEnabled(Format[] formats, boolean joining) throws ExoPlaybackException {
protected void onEnabled(boolean joining) throws ExoPlaybackException {
codecCounters.reset();
eventDispatcher.enabled(codecCounters);
super.onEnabled(formats, joining);
super.onEnabled(joining);
}
@Override
......
......@@ -209,10 +209,18 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer {
}
@Override
protected void onEnabled(Format[] formats, boolean joining) throws ExoPlaybackException {
protected void onEnabled(boolean joining) throws ExoPlaybackException {
codecCounters.reset();
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;
adaptiveMaxHeight = Format.NO_VALUE;
if (formats.length > 1) {
......@@ -226,10 +234,7 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer {
adaptiveMaxHeight = 1080;
}
}
if (joining && allowedJoiningTimeMs > 0) {
joiningDeadlineMs = SystemClock.elapsedRealtime() + allowedJoiningTimeMs;
}
frameReleaseTimeHelper.enable();
super.onStreamChanged(formats);
}
@Override
......
......@@ -174,8 +174,8 @@ public abstract class TrackRenderer implements ExoPlayerComponent {
boolean joining) throws ExoPlaybackException {
Assertions.checkState(state == STATE_DISABLED);
state = STATE_ENABLED;
this.stream = stream;
onEnabled(formats, joining);
onEnabled(joining);
replaceTrackStream(formats, stream);
reset(positionUs);
}
......@@ -184,11 +184,35 @@ public abstract class TrackRenderer implements ExoPlayerComponent {
* <p>
* 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.
* @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.
}
......
......@@ -298,7 +298,7 @@ public abstract class AudioDecoderTrackRenderer extends TrackRenderer implements
}
@Override
protected void onEnabled(Format[] formats, boolean joining) throws ExoPlaybackException {
protected void onEnabled(boolean joining) throws ExoPlaybackException {
codecCounters.reset();
eventDispatcher.enabled(codecCounters);
}
......
......@@ -104,8 +104,10 @@ public final class TextTrackRenderer extends TrackRenderer implements Callback {
}
@Override
protected void onEnabled(Format[] formats, boolean joining) throws ExoPlaybackException {
super.onEnabled(formats, joining);
protected void onStreamChanged(Format[] formats) throws ExoPlaybackException {
if (parser != null) {
parser.release();
}
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