Files
Daniel Elliott f9d20bb3fc Add decompiled APK source code (JADX)
- 28,932 files
- Full Java source code
- Smali files
- Resources

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-18 14:52:23 -08:00

235 lines
9.6 KiB
Java

package com.mbridge.msdk.playercommon.exoplayer2;
import android.util.Log;
import com.mbridge.msdk.playercommon.exoplayer2.source.ClippingMediaPeriod;
import com.mbridge.msdk.playercommon.exoplayer2.source.EmptySampleStream;
import com.mbridge.msdk.playercommon.exoplayer2.source.MediaPeriod;
import com.mbridge.msdk.playercommon.exoplayer2.source.MediaSource;
import com.mbridge.msdk.playercommon.exoplayer2.source.SampleStream;
import com.mbridge.msdk.playercommon.exoplayer2.source.TrackGroupArray;
import com.mbridge.msdk.playercommon.exoplayer2.trackselection.TrackSelection;
import com.mbridge.msdk.playercommon.exoplayer2.trackselection.TrackSelectionArray;
import com.mbridge.msdk.playercommon.exoplayer2.trackselection.TrackSelector;
import com.mbridge.msdk.playercommon.exoplayer2.trackselection.TrackSelectorResult;
import com.mbridge.msdk.playercommon.exoplayer2.upstream.Allocator;
import com.mbridge.msdk.playercommon.exoplayer2.util.Assertions;
/* loaded from: classes4.dex */
final class MediaPeriodHolder {
private static final String TAG = "MediaPeriodHolder";
public boolean hasEnabledTracks;
public MediaPeriodInfo info;
public final boolean[] mayRetainStreamFlags;
public final MediaPeriod mediaPeriod;
private final MediaSource mediaSource;
public MediaPeriodHolder next;
private TrackSelectorResult periodTrackSelectorResult;
public boolean prepared;
private final RendererCapabilities[] rendererCapabilities;
public long rendererPositionOffsetUs;
public final SampleStream[] sampleStreams;
public TrackGroupArray trackGroups;
private final TrackSelector trackSelector;
public TrackSelectorResult trackSelectorResult;
public final Object uid;
public final long getRendererOffset() {
return this.rendererPositionOffsetUs;
}
public MediaPeriodHolder(RendererCapabilities[] rendererCapabilitiesArr, long j, TrackSelector trackSelector, Allocator allocator, MediaSource mediaSource, Object obj, MediaPeriodInfo mediaPeriodInfo) {
this.rendererCapabilities = rendererCapabilitiesArr;
this.rendererPositionOffsetUs = j - mediaPeriodInfo.startPositionUs;
this.trackSelector = trackSelector;
this.mediaSource = mediaSource;
this.uid = Assertions.checkNotNull(obj);
this.info = mediaPeriodInfo;
this.sampleStreams = new SampleStream[rendererCapabilitiesArr.length];
this.mayRetainStreamFlags = new boolean[rendererCapabilitiesArr.length];
MediaPeriod createPeriod = mediaSource.createPeriod(mediaPeriodInfo.id, allocator);
long j2 = mediaPeriodInfo.endPositionUs;
this.mediaPeriod = j2 != Long.MIN_VALUE ? new ClippingMediaPeriod(createPeriod, true, 0L, j2) : createPeriod;
}
public final long toRendererTime(long j) {
return j + getRendererOffset();
}
public final long toPeriodTime(long j) {
return j - getRendererOffset();
}
public final boolean isFullyBuffered() {
return this.prepared && (!this.hasEnabledTracks || this.mediaPeriod.getBufferedPositionUs() == Long.MIN_VALUE);
}
public final long getDurationUs() {
return this.info.durationUs;
}
public final long getBufferedPositionUs(boolean z) {
if (!this.prepared) {
return this.info.startPositionUs;
}
long bufferedPositionUs = this.mediaPeriod.getBufferedPositionUs();
return (bufferedPositionUs == Long.MIN_VALUE && z) ? this.info.durationUs : bufferedPositionUs;
}
public final long getNextLoadPositionUs() {
if (this.prepared) {
return this.mediaPeriod.getNextLoadPositionUs();
}
return 0L;
}
public final void handlePrepared(float f) throws ExoPlaybackException {
this.prepared = true;
this.trackGroups = this.mediaPeriod.getTrackGroups();
selectTracks(f);
long applyTrackSelection = applyTrackSelection(this.info.startPositionUs, false);
long j = this.rendererPositionOffsetUs;
MediaPeriodInfo mediaPeriodInfo = this.info;
this.rendererPositionOffsetUs = j + (mediaPeriodInfo.startPositionUs - applyTrackSelection);
this.info = mediaPeriodInfo.copyWithStartPositionUs(applyTrackSelection);
}
public final void reevaluateBuffer(long j) {
if (this.prepared) {
this.mediaPeriod.reevaluateBuffer(toPeriodTime(j));
}
}
public final void continueLoading(long j) {
this.mediaPeriod.continueLoading(toPeriodTime(j));
}
public final boolean selectTracks(float f) throws ExoPlaybackException {
TrackSelectorResult selectTracks = this.trackSelector.selectTracks(this.rendererCapabilities, this.trackGroups);
if (selectTracks.isEquivalent(this.periodTrackSelectorResult)) {
return false;
}
this.trackSelectorResult = selectTracks;
for (TrackSelection trackSelection : selectTracks.selections.getAll()) {
if (trackSelection != null) {
trackSelection.onPlaybackSpeed(f);
}
}
return true;
}
public final long applyTrackSelection(long j, boolean z) {
return applyTrackSelection(j, z, new boolean[this.rendererCapabilities.length]);
}
public final long applyTrackSelection(long j, boolean z, boolean[] zArr) {
int i = 0;
while (true) {
TrackSelectorResult trackSelectorResult = this.trackSelectorResult;
boolean z2 = true;
if (i >= trackSelectorResult.length) {
break;
}
boolean[] zArr2 = this.mayRetainStreamFlags;
if (z || !trackSelectorResult.isEquivalent(this.periodTrackSelectorResult, i)) {
z2 = false;
}
zArr2[i] = z2;
i++;
}
disassociateNoSampleRenderersWithEmptySampleStream(this.sampleStreams);
updatePeriodTrackSelectorResult(this.trackSelectorResult);
TrackSelectionArray trackSelectionArray = this.trackSelectorResult.selections;
long selectTracks = this.mediaPeriod.selectTracks(trackSelectionArray.getAll(), this.mayRetainStreamFlags, this.sampleStreams, zArr, j);
associateNoSampleRenderersWithEmptySampleStream(this.sampleStreams);
this.hasEnabledTracks = false;
int i2 = 0;
while (true) {
SampleStream[] sampleStreamArr = this.sampleStreams;
if (i2 >= sampleStreamArr.length) {
return selectTracks;
}
if (sampleStreamArr[i2] != null) {
Assertions.checkState(this.trackSelectorResult.isRendererEnabled(i2));
if (this.rendererCapabilities[i2].getTrackType() != 5) {
this.hasEnabledTracks = true;
}
} else {
Assertions.checkState(trackSelectionArray.get(i2) == null);
}
i2++;
}
}
public final void release() {
updatePeriodTrackSelectorResult(null);
try {
if (this.info.endPositionUs != Long.MIN_VALUE) {
this.mediaSource.releasePeriod(((ClippingMediaPeriod) this.mediaPeriod).mediaPeriod);
} else {
this.mediaSource.releasePeriod(this.mediaPeriod);
}
} catch (RuntimeException e) {
Log.e(TAG, "Period release failed.", e);
}
}
private void updatePeriodTrackSelectorResult(TrackSelectorResult trackSelectorResult) {
TrackSelectorResult trackSelectorResult2 = this.periodTrackSelectorResult;
if (trackSelectorResult2 != null) {
disableTrackSelectionsInResult(trackSelectorResult2);
}
this.periodTrackSelectorResult = trackSelectorResult;
if (trackSelectorResult != null) {
enableTrackSelectionsInResult(trackSelectorResult);
}
}
private void enableTrackSelectionsInResult(TrackSelectorResult trackSelectorResult) {
for (int i = 0; i < trackSelectorResult.length; i++) {
boolean isRendererEnabled = trackSelectorResult.isRendererEnabled(i);
TrackSelection trackSelection = trackSelectorResult.selections.get(i);
if (isRendererEnabled && trackSelection != null) {
trackSelection.enable();
}
}
}
private void disableTrackSelectionsInResult(TrackSelectorResult trackSelectorResult) {
for (int i = 0; i < trackSelectorResult.length; i++) {
boolean isRendererEnabled = trackSelectorResult.isRendererEnabled(i);
TrackSelection trackSelection = trackSelectorResult.selections.get(i);
if (isRendererEnabled && trackSelection != null) {
trackSelection.disable();
}
}
}
private void disassociateNoSampleRenderersWithEmptySampleStream(SampleStream[] sampleStreamArr) {
int i = 0;
while (true) {
RendererCapabilities[] rendererCapabilitiesArr = this.rendererCapabilities;
if (i >= rendererCapabilitiesArr.length) {
return;
}
if (rendererCapabilitiesArr[i].getTrackType() == 5) {
sampleStreamArr[i] = null;
}
i++;
}
}
private void associateNoSampleRenderersWithEmptySampleStream(SampleStream[] sampleStreamArr) {
int i = 0;
while (true) {
RendererCapabilities[] rendererCapabilitiesArr = this.rendererCapabilities;
if (i >= rendererCapabilitiesArr.length) {
return;
}
if (rendererCapabilitiesArr[i].getTrackType() == 5 && this.trackSelectorResult.isRendererEnabled(i)) {
sampleStreamArr[i] = new EmptySampleStream();
}
i++;
}
}
}