Make ExtractorMediaSource a CompositeMediaSource instead of just wrapping.

It's easy to forget to forward methods when using basic wrapping. For example,
ExtractorMediaSource.addEventListener is currently a no-op because it's not
forwarded.

PiperOrigin-RevId: 257757556
This commit is contained in:
tonihei 2019-07-12 08:55:08 +01:00 committed by Oliver Woodman
parent ccc82cdb4a
commit df81bd6a68

View file

@ -35,8 +35,7 @@ import java.io.IOException;
/** @deprecated Use {@link ProgressiveMediaSource} instead. */
@Deprecated
@SuppressWarnings("deprecation")
public final class ExtractorMediaSource extends BaseMediaSource
implements MediaSource.SourceInfoRefreshListener {
public final class ExtractorMediaSource extends CompositeMediaSource<Void> {
/** @deprecated Use {@link MediaSourceEventListener} instead. */
@Deprecated
@ -340,12 +339,14 @@ public final class ExtractorMediaSource extends BaseMediaSource
@Override
protected void prepareSourceInternal(@Nullable TransferListener mediaTransferListener) {
progressiveMediaSource.prepareSource(/* listener= */ this, mediaTransferListener);
super.prepareSourceInternal(mediaTransferListener);
prepareChildSource(/* id= */ null, progressiveMediaSource);
}
@Override
public void maybeThrowSourceInfoRefreshError() throws IOException {
progressiveMediaSource.maybeThrowSourceInfoRefreshError();
protected void onChildSourceInfoRefreshed(
@Nullable Void id, MediaSource mediaSource, Timeline timeline) {
refreshSourceInfo(timeline);
}
@Override
@ -358,16 +359,6 @@ public final class ExtractorMediaSource extends BaseMediaSource
progressiveMediaSource.releasePeriod(mediaPeriod);
}
@Override
protected void releaseSourceInternal() {
progressiveMediaSource.releaseSource(/* listener= */ this);
}
@Override
public void onSourceInfoRefreshed(MediaSource source, Timeline timeline) {
refreshSourceInfo(timeline);
}
@Deprecated
private static final class EventListenerWrapper extends DefaultMediaSourceEventListener {