Rabbit-R1/switch port/java/sources/androidx/media3/exoplayer/source/ProgressiveMediaSource.java

192 lines
10 KiB
Java
Raw Permalink Normal View History

2024-05-21 16:08:36 -05:00
package androidx.media3.exoplayer.source;
import android.os.Looper;
import androidx.media3.common.MediaItem;
import androidx.media3.common.Timeline;
import androidx.media3.common.util.Assertions;
import androidx.media3.datasource.DataSource;
import androidx.media3.datasource.TransferListener;
import androidx.media3.exoplayer.analytics.PlayerId;
import androidx.media3.exoplayer.drm.DefaultDrmSessionManagerProvider;
import androidx.media3.exoplayer.drm.DrmSessionManager;
import androidx.media3.exoplayer.drm.DrmSessionManagerProvider;
import androidx.media3.exoplayer.source.MediaSource;
import androidx.media3.exoplayer.source.ProgressiveMediaExtractor;
import androidx.media3.exoplayer.source.ProgressiveMediaPeriod;
import androidx.media3.exoplayer.source.ProgressiveMediaSource;
import androidx.media3.exoplayer.upstream.Allocator;
import androidx.media3.exoplayer.upstream.DefaultLoadErrorHandlingPolicy;
import androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy;
import androidx.media3.extractor.DefaultExtractorsFactory;
import androidx.media3.extractor.ExtractorsFactory;
/* loaded from: classes2.dex */
public final class ProgressiveMediaSource extends BaseMediaSource implements ProgressiveMediaPeriod.Listener {
public static final int DEFAULT_LOADING_CHECK_INTERVAL_BYTES = 1048576;
private final int continueLoadingCheckIntervalBytes;
private final DataSource.Factory dataSourceFactory;
private final DrmSessionManager drmSessionManager;
private final LoadErrorHandlingPolicy loadableLoadErrorHandlingPolicy;
private final MediaItem.LocalConfiguration localConfiguration;
private final MediaItem mediaItem;
private final ProgressiveMediaExtractor.Factory progressiveMediaExtractorFactory;
private long timelineDurationUs;
private boolean timelineIsLive;
private boolean timelineIsPlaceholder;
private boolean timelineIsSeekable;
private TransferListener transferListener;
@Override // androidx.media3.exoplayer.source.MediaSource
public MediaItem getMediaItem() {
return this.mediaItem;
}
@Override // androidx.media3.exoplayer.source.MediaSource
public void maybeThrowSourceInfoRefreshError() {
}
/* loaded from: classes2.dex */
public static final class Factory implements MediaSourceFactory {
private int continueLoadingCheckIntervalBytes;
private final DataSource.Factory dataSourceFactory;
private DrmSessionManagerProvider drmSessionManagerProvider;
private LoadErrorHandlingPolicy loadErrorHandlingPolicy;
private ProgressiveMediaExtractor.Factory progressiveMediaExtractorFactory;
@Override // androidx.media3.exoplayer.source.MediaSource.Factory
public int[] getSupportedTypes() {
return new int[]{4};
}
public Factory setContinueLoadingCheckIntervalBytes(int i) {
this.continueLoadingCheckIntervalBytes = i;
return this;
}
public Factory(DataSource.Factory factory) {
this(factory, new DefaultExtractorsFactory());
}
public Factory(DataSource.Factory factory, final ExtractorsFactory extractorsFactory) {
this(factory, new ProgressiveMediaExtractor.Factory() { // from class: androidx.media3.exoplayer.source.ProgressiveMediaSource$Factory$$ExternalSyntheticLambda0
@Override // androidx.media3.exoplayer.source.ProgressiveMediaExtractor.Factory
public final ProgressiveMediaExtractor createProgressiveMediaExtractor(PlayerId playerId) {
return ProgressiveMediaSource.Factory.lambda$new$0(ExtractorsFactory.this, playerId);
}
});
}
/* JADX INFO: Access modifiers changed from: package-private */
public static /* synthetic */ ProgressiveMediaExtractor lambda$new$0(ExtractorsFactory extractorsFactory, PlayerId playerId) {
return new BundledExtractorsAdapter(extractorsFactory);
}
public Factory(DataSource.Factory factory, ProgressiveMediaExtractor.Factory factory2) {
this(factory, factory2, new DefaultDrmSessionManagerProvider(), new DefaultLoadErrorHandlingPolicy(), 1048576);
}
public Factory(DataSource.Factory factory, ProgressiveMediaExtractor.Factory factory2, DrmSessionManagerProvider drmSessionManagerProvider, LoadErrorHandlingPolicy loadErrorHandlingPolicy, int i) {
this.dataSourceFactory = factory;
this.progressiveMediaExtractorFactory = factory2;
this.drmSessionManagerProvider = drmSessionManagerProvider;
this.loadErrorHandlingPolicy = loadErrorHandlingPolicy;
this.continueLoadingCheckIntervalBytes = i;
}
@Override // androidx.media3.exoplayer.source.MediaSource.Factory
public Factory setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy loadErrorHandlingPolicy) {
this.loadErrorHandlingPolicy = (LoadErrorHandlingPolicy) Assertions.checkNotNull(loadErrorHandlingPolicy, "MediaSource.Factory#setLoadErrorHandlingPolicy no longer handles null by instantiating a new DefaultLoadErrorHandlingPolicy. Explicitly construct and pass an instance in order to retain the old behavior.");
return this;
}
@Override // androidx.media3.exoplayer.source.MediaSource.Factory
public Factory setDrmSessionManagerProvider(DrmSessionManagerProvider drmSessionManagerProvider) {
this.drmSessionManagerProvider = (DrmSessionManagerProvider) Assertions.checkNotNull(drmSessionManagerProvider, "MediaSource.Factory#setDrmSessionManagerProvider no longer handles null by instantiating a new DefaultDrmSessionManagerProvider. Explicitly construct and pass an instance in order to retain the old behavior.");
return this;
}
@Override // androidx.media3.exoplayer.source.MediaSource.Factory
public ProgressiveMediaSource createMediaSource(MediaItem mediaItem) {
Assertions.checkNotNull(mediaItem.localConfiguration);
return new ProgressiveMediaSource(mediaItem, this.dataSourceFactory, this.progressiveMediaExtractorFactory, this.drmSessionManagerProvider.get(mediaItem), this.loadErrorHandlingPolicy, this.continueLoadingCheckIntervalBytes);
}
}
private ProgressiveMediaSource(MediaItem mediaItem, DataSource.Factory factory, ProgressiveMediaExtractor.Factory factory2, DrmSessionManager drmSessionManager, LoadErrorHandlingPolicy loadErrorHandlingPolicy, int i) {
this.localConfiguration = (MediaItem.LocalConfiguration) Assertions.checkNotNull(mediaItem.localConfiguration);
this.mediaItem = mediaItem;
this.dataSourceFactory = factory;
this.progressiveMediaExtractorFactory = factory2;
this.drmSessionManager = drmSessionManager;
this.loadableLoadErrorHandlingPolicy = loadErrorHandlingPolicy;
this.continueLoadingCheckIntervalBytes = i;
this.timelineIsPlaceholder = true;
this.timelineDurationUs = -9223372036854775807L;
}
@Override // androidx.media3.exoplayer.source.BaseMediaSource
protected void prepareSourceInternal(TransferListener transferListener) {
this.transferListener = transferListener;
this.drmSessionManager.setPlayer((Looper) Assertions.checkNotNull(Looper.myLooper()), getPlayerId());
this.drmSessionManager.prepare();
notifySourceInfoRefreshed();
}
@Override // androidx.media3.exoplayer.source.MediaSource
public MediaPeriod createPeriod(MediaSource.MediaPeriodId mediaPeriodId, Allocator allocator, long j) {
DataSource createDataSource = this.dataSourceFactory.createDataSource();
TransferListener transferListener = this.transferListener;
if (transferListener != null) {
createDataSource.addTransferListener(transferListener);
}
return new ProgressiveMediaPeriod(this.localConfiguration.uri, createDataSource, this.progressiveMediaExtractorFactory.createProgressiveMediaExtractor(getPlayerId()), this.drmSessionManager, createDrmEventDispatcher(mediaPeriodId), this.loadableLoadErrorHandlingPolicy, createEventDispatcher(mediaPeriodId), this, allocator, this.localConfiguration.customCacheKey, this.continueLoadingCheckIntervalBytes);
}
@Override // androidx.media3.exoplayer.source.MediaSource
public void releasePeriod(MediaPeriod mediaPeriod) {
((ProgressiveMediaPeriod) mediaPeriod).release();
}
@Override // androidx.media3.exoplayer.source.BaseMediaSource
protected void releaseSourceInternal() {
this.drmSessionManager.release();
}
@Override // androidx.media3.exoplayer.source.ProgressiveMediaPeriod.Listener
public void onSourceInfoRefreshed(long j, boolean z, boolean z2) {
if (j == -9223372036854775807L) {
j = this.timelineDurationUs;
}
if (!this.timelineIsPlaceholder && this.timelineDurationUs == j && this.timelineIsSeekable == z && this.timelineIsLive == z2) {
return;
}
this.timelineDurationUs = j;
this.timelineIsSeekable = z;
this.timelineIsLive = z2;
this.timelineIsPlaceholder = false;
notifySourceInfoRefreshed();
}
private void notifySourceInfoRefreshed() {
Timeline singlePeriodTimeline = new SinglePeriodTimeline(this.timelineDurationUs, this.timelineIsSeekable, false, this.timelineIsLive, (Object) null, this.mediaItem);
if (this.timelineIsPlaceholder) {
singlePeriodTimeline = new ForwardingTimeline(singlePeriodTimeline) { // from class: androidx.media3.exoplayer.source.ProgressiveMediaSource.1
@Override // androidx.media3.exoplayer.source.ForwardingTimeline, androidx.media3.common.Timeline
public Timeline.Window getWindow(int i, Timeline.Window window, long j) {
super.getWindow(i, window, j);
window.isPlaceholder = true;
return window;
}
@Override // androidx.media3.exoplayer.source.ForwardingTimeline, androidx.media3.common.Timeline
public Timeline.Period getPeriod(int i, Timeline.Period period, boolean z) {
super.getPeriod(i, period, z);
period.isPlaceholder = true;
return period;
}
};
}
refreshSourceInfo(singlePeriodTimeline);
}
}