mirror of
https://github.com/androidx/media.git
synced 2025-05-07 23:50:44 +08:00
Use media source tag in dummy timeline.
This is now possible as it's directly accessible from the media source. Issue:#5177 Issue:#5155 PiperOrigin-RevId: 224321917
This commit is contained in:
parent
ee1ec8d3d6
commit
0e139e9945
@ -826,7 +826,7 @@ public class ConcatenatingMediaSource extends CompositeMediaSource<MediaSourceHo
|
||||
|
||||
public MediaSourceHolder(MediaSource mediaSource) {
|
||||
this.mediaSource = mediaSource;
|
||||
this.timeline = new DeferredTimeline();
|
||||
this.timeline = DeferredTimeline.createWithDummyTimeline(mediaSource.getTag());
|
||||
this.activeMediaPeriods = new ArrayList<>();
|
||||
this.uid = new Object();
|
||||
}
|
||||
@ -951,10 +951,18 @@ public class ConcatenatingMediaSource extends CompositeMediaSource<MediaSourceHo
|
||||
private static final class DeferredTimeline extends ForwardingTimeline {
|
||||
|
||||
private static final Object DUMMY_ID = new Object();
|
||||
private static final DummyTimeline DUMMY_TIMELINE = new DummyTimeline();
|
||||
|
||||
private final Object replacedId;
|
||||
|
||||
/**
|
||||
* Returns an instance with a dummy timeline using the provided window tag.
|
||||
*
|
||||
* @param windowTag A window tag.
|
||||
*/
|
||||
public static DeferredTimeline createWithDummyTimeline(@Nullable Object windowTag) {
|
||||
return new DeferredTimeline(new DummyTimeline(windowTag), DUMMY_ID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an instance with a real timeline, replacing the provided period ID with the already
|
||||
* assigned dummy period ID.
|
||||
@ -968,11 +976,6 @@ public class ConcatenatingMediaSource extends CompositeMediaSource<MediaSourceHo
|
||||
return new DeferredTimeline(timeline, firstPeriodUid);
|
||||
}
|
||||
|
||||
/** Creates deferred timeline exposing a {@link DummyTimeline}. */
|
||||
public DeferredTimeline() {
|
||||
this(DUMMY_TIMELINE, DUMMY_ID);
|
||||
}
|
||||
|
||||
private DeferredTimeline(Timeline timeline, Object replacedId) {
|
||||
super(timeline);
|
||||
this.replacedId = replacedId;
|
||||
@ -1016,6 +1019,12 @@ public class ConcatenatingMediaSource extends CompositeMediaSource<MediaSourceHo
|
||||
/** Dummy placeholder timeline with one dynamic window with a period of indeterminate duration. */
|
||||
private static final class DummyTimeline extends Timeline {
|
||||
|
||||
@Nullable private final Object tag;
|
||||
|
||||
public DummyTimeline(@Nullable Object tag) {
|
||||
this.tag = tag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getWindowCount() {
|
||||
return 1;
|
||||
@ -1025,7 +1034,7 @@ public class ConcatenatingMediaSource extends CompositeMediaSource<MediaSourceHo
|
||||
public Window getWindow(
|
||||
int windowIndex, Window window, boolean setTag, long defaultPositionProjectionUs) {
|
||||
return window.set(
|
||||
/* tag= */ null,
|
||||
tag,
|
||||
/* presentationStartTimeMs= */ C.TIME_UNSET,
|
||||
/* windowStartTimeMs= */ C.TIME_UNSET,
|
||||
/* isSeekable= */ false,
|
||||
|
Loading…
x
Reference in New Issue
Block a user