Files
rr3-apk/decompiled-community/sources/com/mbridge/msdk/playercommon/exoplayer2/source/MergingMediaPeriod.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

239 lines
11 KiB
Java

package com.mbridge.msdk.playercommon.exoplayer2.source;
import com.mbridge.msdk.playercommon.exoplayer2.C;
import com.mbridge.msdk.playercommon.exoplayer2.SeekParameters;
import com.mbridge.msdk.playercommon.exoplayer2.source.MediaPeriod;
import com.mbridge.msdk.playercommon.exoplayer2.trackselection.TrackSelection;
import com.mbridge.msdk.playercommon.exoplayer2.util.Assertions;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.IdentityHashMap;
/* loaded from: classes4.dex */
final class MergingMediaPeriod implements MediaPeriod, MediaPeriod.Callback {
private MediaPeriod.Callback callback;
private SequenceableLoader compositeSequenceableLoader;
private final CompositeSequenceableLoaderFactory compositeSequenceableLoaderFactory;
private MediaPeriod[] enabledPeriods;
public final MediaPeriod[] periods;
private TrackGroupArray trackGroups;
private final ArrayList<MediaPeriod> childrenPendingPreparation = new ArrayList<>();
private final IdentityHashMap<SampleStream, Integer> streamPeriodIndices = new IdentityHashMap<>();
@Override // com.mbridge.msdk.playercommon.exoplayer2.source.MediaPeriod
public final TrackGroupArray getTrackGroups() {
return this.trackGroups;
}
public MergingMediaPeriod(CompositeSequenceableLoaderFactory compositeSequenceableLoaderFactory, MediaPeriod... mediaPeriodArr) {
this.compositeSequenceableLoaderFactory = compositeSequenceableLoaderFactory;
this.periods = mediaPeriodArr;
this.compositeSequenceableLoader = compositeSequenceableLoaderFactory.createCompositeSequenceableLoader(new SequenceableLoader[0]);
}
@Override // com.mbridge.msdk.playercommon.exoplayer2.source.MediaPeriod
public final void prepare(MediaPeriod.Callback callback, long j) {
this.callback = callback;
Collections.addAll(this.childrenPendingPreparation, this.periods);
for (MediaPeriod mediaPeriod : this.periods) {
mediaPeriod.prepare(this, j);
}
}
@Override // com.mbridge.msdk.playercommon.exoplayer2.source.MediaPeriod
public final void maybeThrowPrepareError() throws IOException {
for (MediaPeriod mediaPeriod : this.periods) {
mediaPeriod.maybeThrowPrepareError();
}
}
@Override // com.mbridge.msdk.playercommon.exoplayer2.source.MediaPeriod
public final long selectTracks(TrackSelection[] trackSelectionArr, boolean[] zArr, SampleStream[] sampleStreamArr, boolean[] zArr2, long j) {
SampleStream[] sampleStreamArr2 = sampleStreamArr;
int[] iArr = new int[trackSelectionArr.length];
int[] iArr2 = new int[trackSelectionArr.length];
for (int i = 0; i < trackSelectionArr.length; i++) {
SampleStream sampleStream = sampleStreamArr2[i];
iArr[i] = sampleStream == null ? -1 : this.streamPeriodIndices.get(sampleStream).intValue();
iArr2[i] = -1;
TrackSelection trackSelection = trackSelectionArr[i];
if (trackSelection != null) {
TrackGroup trackGroup = trackSelection.getTrackGroup();
int i2 = 0;
while (true) {
MediaPeriod[] mediaPeriodArr = this.periods;
if (i2 >= mediaPeriodArr.length) {
break;
}
if (mediaPeriodArr[i2].getTrackGroups().indexOf(trackGroup) != -1) {
iArr2[i] = i2;
break;
}
i2++;
}
}
}
this.streamPeriodIndices.clear();
int length = trackSelectionArr.length;
SampleStream[] sampleStreamArr3 = new SampleStream[length];
SampleStream[] sampleStreamArr4 = new SampleStream[trackSelectionArr.length];
TrackSelection[] trackSelectionArr2 = new TrackSelection[trackSelectionArr.length];
ArrayList arrayList = new ArrayList(this.periods.length);
long j2 = j;
int i3 = 0;
while (i3 < this.periods.length) {
for (int i4 = 0; i4 < trackSelectionArr.length; i4++) {
TrackSelection trackSelection2 = null;
sampleStreamArr4[i4] = iArr[i4] == i3 ? sampleStreamArr2[i4] : null;
if (iArr2[i4] == i3) {
trackSelection2 = trackSelectionArr[i4];
}
trackSelectionArr2[i4] = trackSelection2;
}
int i5 = i3;
TrackSelection[] trackSelectionArr3 = trackSelectionArr2;
ArrayList arrayList2 = arrayList;
long selectTracks = this.periods[i3].selectTracks(trackSelectionArr2, zArr, sampleStreamArr4, zArr2, j2);
if (i5 == 0) {
j2 = selectTracks;
} else if (selectTracks != j2) {
throw new IllegalStateException("Children enabled at different positions.");
}
boolean z = false;
for (int i6 = 0; i6 < trackSelectionArr.length; i6++) {
if (iArr2[i6] == i5) {
Assertions.checkState(sampleStreamArr4[i6] != null);
sampleStreamArr3[i6] = sampleStreamArr4[i6];
this.streamPeriodIndices.put(sampleStreamArr4[i6], Integer.valueOf(i5));
z = true;
} else if (iArr[i6] == i5) {
Assertions.checkState(sampleStreamArr4[i6] == null);
}
}
if (z) {
arrayList2.add(this.periods[i5]);
}
i3 = i5 + 1;
arrayList = arrayList2;
trackSelectionArr2 = trackSelectionArr3;
sampleStreamArr2 = sampleStreamArr;
}
ArrayList arrayList3 = arrayList;
System.arraycopy(sampleStreamArr3, 0, sampleStreamArr2, 0, length);
MediaPeriod[] mediaPeriodArr2 = new MediaPeriod[arrayList3.size()];
this.enabledPeriods = mediaPeriodArr2;
arrayList3.toArray(mediaPeriodArr2);
this.compositeSequenceableLoader = this.compositeSequenceableLoaderFactory.createCompositeSequenceableLoader(this.enabledPeriods);
return j2;
}
@Override // com.mbridge.msdk.playercommon.exoplayer2.source.MediaPeriod
public final void discardBuffer(long j, boolean z) {
for (MediaPeriod mediaPeriod : this.enabledPeriods) {
mediaPeriod.discardBuffer(j, z);
}
}
@Override // com.mbridge.msdk.playercommon.exoplayer2.source.MediaPeriod, com.mbridge.msdk.playercommon.exoplayer2.source.SequenceableLoader
public final void reevaluateBuffer(long j) {
this.compositeSequenceableLoader.reevaluateBuffer(j);
}
@Override // com.mbridge.msdk.playercommon.exoplayer2.source.MediaPeriod, com.mbridge.msdk.playercommon.exoplayer2.source.SequenceableLoader
public final boolean continueLoading(long j) {
if (!this.childrenPendingPreparation.isEmpty()) {
int size = this.childrenPendingPreparation.size();
for (int i = 0; i < size; i++) {
this.childrenPendingPreparation.get(i).continueLoading(j);
}
return false;
}
return this.compositeSequenceableLoader.continueLoading(j);
}
@Override // com.mbridge.msdk.playercommon.exoplayer2.source.MediaPeriod, com.mbridge.msdk.playercommon.exoplayer2.source.SequenceableLoader
public final long getNextLoadPositionUs() {
return this.compositeSequenceableLoader.getNextLoadPositionUs();
}
@Override // com.mbridge.msdk.playercommon.exoplayer2.source.MediaPeriod
public final long readDiscontinuity() {
long readDiscontinuity = this.periods[0].readDiscontinuity();
int i = 1;
while (true) {
MediaPeriod[] mediaPeriodArr = this.periods;
if (i >= mediaPeriodArr.length) {
if (readDiscontinuity != C.TIME_UNSET) {
for (MediaPeriod mediaPeriod : this.enabledPeriods) {
if (mediaPeriod != this.periods[0] && mediaPeriod.seekToUs(readDiscontinuity) != readDiscontinuity) {
throw new IllegalStateException("Unexpected child seekToUs result.");
}
}
}
return readDiscontinuity;
}
if (mediaPeriodArr[i].readDiscontinuity() != C.TIME_UNSET) {
throw new IllegalStateException("Child reported discontinuity.");
}
i++;
}
}
@Override // com.mbridge.msdk.playercommon.exoplayer2.source.MediaPeriod, com.mbridge.msdk.playercommon.exoplayer2.source.SequenceableLoader
public final long getBufferedPositionUs() {
return this.compositeSequenceableLoader.getBufferedPositionUs();
}
@Override // com.mbridge.msdk.playercommon.exoplayer2.source.MediaPeriod
public final long seekToUs(long j) {
long seekToUs = this.enabledPeriods[0].seekToUs(j);
int i = 1;
while (true) {
MediaPeriod[] mediaPeriodArr = this.enabledPeriods;
if (i >= mediaPeriodArr.length) {
return seekToUs;
}
if (mediaPeriodArr[i].seekToUs(seekToUs) != seekToUs) {
throw new IllegalStateException("Unexpected child seekToUs result.");
}
i++;
}
}
@Override // com.mbridge.msdk.playercommon.exoplayer2.source.MediaPeriod
public final long getAdjustedSeekPositionUs(long j, SeekParameters seekParameters) {
return this.enabledPeriods[0].getAdjustedSeekPositionUs(j, seekParameters);
}
@Override // com.mbridge.msdk.playercommon.exoplayer2.source.MediaPeriod.Callback
public final void onPrepared(MediaPeriod mediaPeriod) {
this.childrenPendingPreparation.remove(mediaPeriod);
if (this.childrenPendingPreparation.isEmpty()) {
int i = 0;
for (MediaPeriod mediaPeriod2 : this.periods) {
i += mediaPeriod2.getTrackGroups().length;
}
TrackGroup[] trackGroupArr = new TrackGroup[i];
int i2 = 0;
for (MediaPeriod mediaPeriod3 : this.periods) {
TrackGroupArray trackGroups = mediaPeriod3.getTrackGroups();
int i3 = trackGroups.length;
int i4 = 0;
while (i4 < i3) {
trackGroupArr[i2] = trackGroups.get(i4);
i4++;
i2++;
}
}
this.trackGroups = new TrackGroupArray(trackGroupArr);
this.callback.onPrepared(this);
}
}
@Override // com.mbridge.msdk.playercommon.exoplayer2.source.SequenceableLoader.Callback
public final void onContinueLoadingRequested(MediaPeriod mediaPeriod) {
this.callback.onContinueLoadingRequested(this);
}
}