package tv.danmaku.ijk.media.player.ui.abr;

import androidx.annotation.CallSuper;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.media3.common.Format;
import androidx.media3.common.Timeline;
import androidx.media3.common.TrackGroup;
import androidx.media3.common.util.Clock;
import androidx.media3.common.util.UnstableApi;
import androidx.media3.exoplayer.source.MediaSource;
import androidx.media3.exoplayer.source.chunk.MediaChunk;
import androidx.media3.exoplayer.source.chunk.MediaChunkIterator;
import androidx.media3.exoplayer.trackselection.BaseTrackSelection;
import androidx.media3.exoplayer.trackselection.ExoTrackSelection;
import androidx.media3.exoplayer.trackselection.FixedTrackSelection;
import androidx.media3.exoplayer.upstream.BandwidthMeter;
import com.google.common.collect.z0;
import java.util.List;
import tv.danmaku.ijk.media.player.ui.IjkPlayerRuntime;

/* JADX INFO: loaded from: classes3.dex */
@UnstableApi
public class AbrTrackSelection extends BaseTrackSelection {
    public static final float DEFAULT_BUFFERED_FRACTION_TO_LIVE_EDGE_FOR_QUALITY_INCREASE = 0.75f;
    private static final long MIN_DOWN_SWITCH_INTERVAL_MS = 5000;
    private static final long MIN_TIME_AFTER_UP_BEFORE_DOWN_MS = 8000;
    private static final long MIN_UP_SWITCH_INTERVAL_MS = 30000;
    private final float bufferedFractionToLiveEdgeForQualityIncrease;
    private final Clock clock;
    private long lastDownSwitchTimeMs;
    private long lastUpSwitchTimeMs;
    private final long latestBitrateEstimate;
    private final long maxDurationForQualityDecreaseUs;
    private final long minDurationForQualityIncreaseUs;
    private int reason;
    private int selectedIndex;

    public static class Factory implements ExoTrackSelection.Factory {
        private final float bufferedFractionToLiveEdgeForQualityIncrease;
        private final Clock clock;
        private final int maxDurationForQualityDecreaseMs;
        private final int minDurationForQualityIncreaseMs;

        public Factory(int i10, int i11) {
            this(i10, i11, 0.75f, Clock.DEFAULT);
        }

        public AbrTrackSelection createAdaptiveTrackSelection(TrackGroup trackGroup, int[] iArr, int i10) {
            return new AbrTrackSelection(trackGroup, iArr, i10, this.minDurationForQualityIncreaseMs, this.maxDurationForQualityDecreaseMs, this.bufferedFractionToLiveEdgeForQualityIncrease, this.clock);
        }

        @Override // androidx.media3.exoplayer.trackselection.ExoTrackSelection.Factory
        @NonNull
        public final ExoTrackSelection[] createTrackSelections(@NonNull ExoTrackSelection.Definition[] definitionArr, @NonNull BandwidthMeter bandwidthMeter, @NonNull MediaSource.MediaPeriodId mediaPeriodId, @NonNull Timeline timeline) {
            ExoTrackSelection[] exoTrackSelectionArr = new ExoTrackSelection[definitionArr.length];
            for (int i10 = 0; i10 < definitionArr.length; i10++) {
                ExoTrackSelection.Definition definition = definitionArr[i10];
                if (definition != null) {
                    int[] iArr = definition.tracks;
                    if (iArr.length != 0) {
                        exoTrackSelectionArr[i10] = iArr.length == 1 ? new FixedTrackSelection(definition.group, iArr[0], definition.type) : createAdaptiveTrackSelection(definition.group, iArr, definition.type);
                    }
                }
            }
            return exoTrackSelectionArr;
        }

        public Factory(int i10, int i11, float f10, Clock clock) {
            this.minDurationForQualityIncreaseMs = i10;
            this.maxDurationForQualityDecreaseMs = i11;
            this.bufferedFractionToLiveEdgeForQualityIncrease = f10;
            this.clock = clock;
        }
    }

    public AbrTrackSelection(TrackGroup trackGroup, int[] iArr, int i10, long j10, long j11, float f10, Clock clock) {
        super(trackGroup, iArr, i10);
        this.lastUpSwitchTimeMs = -9223372036854775807L;
        this.lastDownSwitchTimeMs = -9223372036854775807L;
        this.minDurationForQualityIncreaseUs = j10 * 1000;
        this.maxDurationForQualityDecreaseUs = j11 * 1000;
        this.bufferedFractionToLiveEdgeForQualityIncrease = f10;
        this.clock = clock;
        this.reason = 10000;
        this.latestBitrateEstimate = -2147483647L;
        this.selectedIndex = findClosestTrackIndex((long) (getHistoryBitrate() * 0.8d));
        if (AbrController.getInstance().sGlobalLockedBitrate != -2147483647L) {
            this.selectedIndex = findClosestTrackIndex(AbrController.getInstance().sGlobalLockedBitrate);
        }
        AbrController.getInstance().setCurrentBitrate(getFormat(this.selectedIndex).bitrate);
    }

    private int determineIdealSelectedIndex(long j10) {
        int i10;
        long j11 = AbrController.getInstance().bitrateEstimate;
        if (j11 <= 0) {
            return findClosestTrackIndex(getHistoryBitrate());
        }
        int i11 = this.length - 1;
        for (int i12 = 0; i12 < this.length; i12++) {
            if ((j10 == Long.MIN_VALUE || !isTrackExcluded(i12, j10)) && (i10 = getFormat(i12).bitrate) > 0 && i10 <= j11) {
                return i12;
            }
        }
        return i11;
    }

    private int findClosestTrackIndex(long j10) {
        try {
            if (j10 <= 0) {
                return this.length / 2;
            }
            int i10 = 0;
            while (true) {
                int i11 = this.length;
                if (i10 >= i11) {
                    return i11 - 1;
                }
                if (this.group.getFormat(this.tracks[i10]).bitrate <= j10) {
                    return i10;
                }
                i10++;
            }
        } catch (Exception e10) {
            e10.getMessage();
            return 0;
        }
    }

    private long getHistoryBitrate() {
        try {
            return Long.parseLong(IjkPlayerRuntime.getHistoryBitrate());
        } catch (NumberFormatException unused) {
            return 0L;
        }
    }

    private long getLastChunkDurationUs(List<? extends MediaChunk> list) {
        if (list.isEmpty()) {
            return -9223372036854775807L;
        }
        MediaChunk mediaChunk = (MediaChunk) z0.n(list);
        long j10 = mediaChunk.startTimeUs;
        if (j10 == -9223372036854775807L) {
            return -9223372036854775807L;
        }
        long j11 = mediaChunk.endTimeUs;
        if (j11 != -9223372036854775807L) {
            return j11 - j10;
        }
        return -9223372036854775807L;
    }

    private long getNextChunkDurationUs(MediaChunkIterator[] mediaChunkIteratorArr, List<? extends MediaChunk> list) {
        int i10 = this.selectedIndex;
        if (i10 < mediaChunkIteratorArr.length && mediaChunkIteratorArr[i10].next()) {
            MediaChunkIterator mediaChunkIterator = mediaChunkIteratorArr[this.selectedIndex];
            return mediaChunkIterator.getChunkEndTimeUs() - mediaChunkIterator.getChunkStartTimeUs();
        }
        for (MediaChunkIterator mediaChunkIterator2 : mediaChunkIteratorArr) {
            if (mediaChunkIterator2.next()) {
                return mediaChunkIterator2.getChunkEndTimeUs() - mediaChunkIterator2.getChunkStartTimeUs();
            }
        }
        return getLastChunkDurationUs(list);
    }

    private long minDurationForQualityIncreaseUs(long j10, long j11) {
        if (j10 == -9223372036854775807L) {
            return this.minDurationForQualityIncreaseUs;
        }
        if (j11 != -9223372036854775807L) {
            j10 -= j11;
        }
        return Math.min((long) (j10 * this.bufferedFractionToLiveEdgeForQualityIncrease), this.minDurationForQualityIncreaseUs);
    }

    public boolean canSelectFormat(Format format, int i10, long j10) {
        return ((long) i10) <= j10;
    }

    @Override // androidx.media3.exoplayer.trackselection.BaseTrackSelection, androidx.media3.exoplayer.trackselection.ExoTrackSelection
    @CallSuper
    public void disable() {
    }

    @Override // androidx.media3.exoplayer.trackselection.BaseTrackSelection, androidx.media3.exoplayer.trackselection.ExoTrackSelection
    @CallSuper
    public void enable() {
    }

    @Override // androidx.media3.exoplayer.trackselection.ExoTrackSelection
    public long getLatestBitrateEstimate() {
        return this.latestBitrateEstimate;
    }

    @Override // androidx.media3.exoplayer.trackselection.ExoTrackSelection
    public int getSelectedIndex() {
        return this.selectedIndex;
    }

    @Override // androidx.media3.exoplayer.trackselection.ExoTrackSelection
    @Nullable
    public Object getSelectionData() {
        return null;
    }

    @Override // androidx.media3.exoplayer.trackselection.ExoTrackSelection
    public int getSelectionReason() {
        return this.reason;
    }

    /* JADX WARN: Removed duplicated region for block: B:63:0x00f9  */
    @Override // androidx.media3.exoplayer.trackselection.ExoTrackSelection
    /*
        Code decompiled incorrectly, please refer to instructions dump.
    */
    public void updateSelectedTrack(long j10, long j11, long j12, @NonNull List<? extends MediaChunk> list, @NonNull MediaChunkIterator[] mediaChunkIteratorArr) {
        long j13 = AbrController.getInstance().sGlobalLockedBitrate;
        if (j13 != -2147483647L) {
            this.selectedIndex = findClosestTrackIndex(j13);
            AbrController.getInstance().setCurrentBitrate(getFormat(this.selectedIndex).bitrate);
            return;
        }
        long jElapsedRealtime = this.clock.elapsedRealtime();
        long nextChunkDurationUs = getNextChunkDurationUs(mediaChunkIteratorArr, list);
        int i10 = this.reason;
        if (i10 == 10000) {
            if (list.isEmpty()) {
                return;
            }
            this.reason = 1;
            return;
        }
        int i11 = this.selectedIndex;
        int iIndexOf = list.isEmpty() ? -1 : indexOf(((MediaChunk) z0.n(list)).trackFormat);
        if (iIndexOf != -1 && iIndexOf == this.selectedIndex && this.reason != 10000) {
            i10 = ((MediaChunk) z0.n(list)).trackSelectionReason;
            i11 = iIndexOf;
        }
        int iDetermineIdealSelectedIndex = determineIdealSelectedIndex(jElapsedRealtime);
        if (iDetermineIdealSelectedIndex != i11 && !isTrackExcluded(i11, jElapsedRealtime)) {
            Format format = getFormat(i11);
            Format format2 = getFormat(iDetermineIdealSelectedIndex);
            long jMinDurationForQualityIncreaseUs = minDurationForQualityIncreaseUs(j12, nextChunkDurationUs);
            int i12 = format2.bitrate;
            int i13 = format.bitrate;
            if (i12 > i13) {
                long j14 = this.lastUpSwitchTimeMs;
                if ((j14 == -9223372036854775807L ? Long.MAX_VALUE : jElapsedRealtime - j14) >= 30000 && j11 >= jMinDurationForQualityIncreaseUs) {
                    this.lastUpSwitchTimeMs = jElapsedRealtime;
                } else {
                    iDetermineIdealSelectedIndex = this.selectedIndex;
                }
            } else if (i12 < i13) {
                long j15 = j11 / 1000;
                long j16 = this.lastUpSwitchTimeMs;
                if (j16 == -9223372036854775807L || jElapsedRealtime - j16 >= 8000 || j15 <= 1000) {
                    if (j15 <= 4000) {
                        long j17 = this.lastDownSwitchTimeMs;
                        if (j17 == -9223372036854775807L || jElapsedRealtime - j17 >= 5000) {
                            this.lastDownSwitchTimeMs = jElapsedRealtime;
                        } else {
                            iDetermineIdealSelectedIndex = i11;
                        }
                    } else if (j11 < this.maxDurationForQualityDecreaseUs) {
                        long j18 = this.lastDownSwitchTimeMs;
                        if (j18 == -9223372036854775807L || jElapsedRealtime - j18 >= 5000) {
                            this.lastDownSwitchTimeMs = jElapsedRealtime;
                        }
                    }
                }
            }
        }
        if (iDetermineIdealSelectedIndex != i11) {
            i10 = 3;
        }
        this.reason = i10;
        this.selectedIndex = iDetermineIdealSelectedIndex;
        AbrController.getInstance().setCurrentBitrate(getFormat(this.selectedIndex).bitrate);
    }
}
