- Added realracing3-community.apk (71.57 MB) - Removed 32-bit support (armeabi-v7a) - Only includes arm64-v8a libraries - Decompiled source code included - Added README-community.md with analysis
131 lines
5.4 KiB
Java
131 lines
5.4 KiB
Java
package com.mbridge.msdk.playercommon.exoplayer2.source;
|
|
|
|
import androidx.annotation.Nullable;
|
|
import com.mbridge.msdk.playercommon.exoplayer2.ExoPlayer;
|
|
import com.mbridge.msdk.playercommon.exoplayer2.Timeline;
|
|
import com.mbridge.msdk.playercommon.exoplayer2.source.MediaSource;
|
|
import com.mbridge.msdk.playercommon.exoplayer2.upstream.Allocator;
|
|
import java.io.IOException;
|
|
import java.lang.annotation.Retention;
|
|
import java.lang.annotation.RetentionPolicy;
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.Collections;
|
|
|
|
/* loaded from: classes4.dex */
|
|
public final class MergingMediaSource extends CompositeMediaSource<Integer> {
|
|
private static final int PERIOD_COUNT_UNSET = -1;
|
|
private final CompositeSequenceableLoaderFactory compositeSequenceableLoaderFactory;
|
|
private final MediaSource[] mediaSources;
|
|
private IllegalMergeException mergeError;
|
|
private final ArrayList<MediaSource> pendingTimelineSources;
|
|
private int periodCount;
|
|
private Object primaryManifest;
|
|
private Timeline primaryTimeline;
|
|
|
|
public static final class IllegalMergeException extends IOException {
|
|
public static final int REASON_PERIOD_COUNT_MISMATCH = 0;
|
|
public final int reason;
|
|
|
|
@Retention(RetentionPolicy.SOURCE)
|
|
public @interface Reason {
|
|
}
|
|
|
|
public IllegalMergeException(int i) {
|
|
this.reason = i;
|
|
}
|
|
}
|
|
|
|
public MergingMediaSource(MediaSource... mediaSourceArr) {
|
|
this(new DefaultCompositeSequenceableLoaderFactory(), mediaSourceArr);
|
|
}
|
|
|
|
public MergingMediaSource(CompositeSequenceableLoaderFactory compositeSequenceableLoaderFactory, MediaSource... mediaSourceArr) {
|
|
this.mediaSources = mediaSourceArr;
|
|
this.compositeSequenceableLoaderFactory = compositeSequenceableLoaderFactory;
|
|
this.pendingTimelineSources = new ArrayList<>(Arrays.asList(mediaSourceArr));
|
|
this.periodCount = -1;
|
|
}
|
|
|
|
@Override // com.mbridge.msdk.playercommon.exoplayer2.source.CompositeMediaSource, com.mbridge.msdk.playercommon.exoplayer2.source.BaseMediaSource
|
|
public final void prepareSourceInternal(ExoPlayer exoPlayer, boolean z) {
|
|
super.prepareSourceInternal(exoPlayer, z);
|
|
for (int i = 0; i < this.mediaSources.length; i++) {
|
|
prepareChildSource(Integer.valueOf(i), this.mediaSources[i]);
|
|
}
|
|
}
|
|
|
|
@Override // com.mbridge.msdk.playercommon.exoplayer2.source.CompositeMediaSource, com.mbridge.msdk.playercommon.exoplayer2.source.MediaSource
|
|
public final void maybeThrowSourceInfoRefreshError() throws IOException {
|
|
IllegalMergeException illegalMergeException = this.mergeError;
|
|
if (illegalMergeException != null) {
|
|
throw illegalMergeException;
|
|
}
|
|
super.maybeThrowSourceInfoRefreshError();
|
|
}
|
|
|
|
@Override // com.mbridge.msdk.playercommon.exoplayer2.source.MediaSource
|
|
public final MediaPeriod createPeriod(MediaSource.MediaPeriodId mediaPeriodId, Allocator allocator) {
|
|
int length = this.mediaSources.length;
|
|
MediaPeriod[] mediaPeriodArr = new MediaPeriod[length];
|
|
for (int i = 0; i < length; i++) {
|
|
mediaPeriodArr[i] = this.mediaSources[i].createPeriod(mediaPeriodId, allocator);
|
|
}
|
|
return new MergingMediaPeriod(this.compositeSequenceableLoaderFactory, mediaPeriodArr);
|
|
}
|
|
|
|
@Override // com.mbridge.msdk.playercommon.exoplayer2.source.MediaSource
|
|
public final void releasePeriod(MediaPeriod mediaPeriod) {
|
|
MergingMediaPeriod mergingMediaPeriod = (MergingMediaPeriod) mediaPeriod;
|
|
int i = 0;
|
|
while (true) {
|
|
MediaSource[] mediaSourceArr = this.mediaSources;
|
|
if (i >= mediaSourceArr.length) {
|
|
return;
|
|
}
|
|
mediaSourceArr[i].releasePeriod(mergingMediaPeriod.periods[i]);
|
|
i++;
|
|
}
|
|
}
|
|
|
|
@Override // com.mbridge.msdk.playercommon.exoplayer2.source.CompositeMediaSource, com.mbridge.msdk.playercommon.exoplayer2.source.BaseMediaSource
|
|
public final void releaseSourceInternal() {
|
|
super.releaseSourceInternal();
|
|
this.primaryTimeline = null;
|
|
this.primaryManifest = null;
|
|
this.periodCount = -1;
|
|
this.mergeError = null;
|
|
this.pendingTimelineSources.clear();
|
|
Collections.addAll(this.pendingTimelineSources, this.mediaSources);
|
|
}
|
|
|
|
@Override // com.mbridge.msdk.playercommon.exoplayer2.source.CompositeMediaSource
|
|
public final void onChildSourceInfoRefreshed(Integer num, MediaSource mediaSource, Timeline timeline, @Nullable Object obj) {
|
|
if (this.mergeError == null) {
|
|
this.mergeError = checkTimelineMerges(timeline);
|
|
}
|
|
if (this.mergeError != null) {
|
|
return;
|
|
}
|
|
this.pendingTimelineSources.remove(mediaSource);
|
|
if (mediaSource == this.mediaSources[0]) {
|
|
this.primaryTimeline = timeline;
|
|
this.primaryManifest = obj;
|
|
}
|
|
if (this.pendingTimelineSources.isEmpty()) {
|
|
refreshSourceInfo(this.primaryTimeline, this.primaryManifest);
|
|
}
|
|
}
|
|
|
|
private IllegalMergeException checkTimelineMerges(Timeline timeline) {
|
|
if (this.periodCount == -1) {
|
|
this.periodCount = timeline.getPeriodCount();
|
|
return null;
|
|
}
|
|
if (timeline.getPeriodCount() != this.periodCount) {
|
|
return new IllegalMergeException(0);
|
|
}
|
|
return null;
|
|
}
|
|
}
|