- 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
239 lines
11 KiB
Java
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);
|
|
}
|
|
}
|