Files
rr3-apk/decompiled-community/sources/com/mbridge/msdk/playercommon/exoplayer2/source/MergingMediaSource.java
Daniel Elliott c080f0d97f Add Discord community version (64-bit only)
- 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
2026-02-18 15:48:36 -08:00

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;
}
}