package androidx.media3.extractor.mp3;

import androidx.media3.common.C;
import androidx.media3.common.util.Assertions;
import androidx.media3.common.util.Util;
import androidx.media3.extractor.MpegAudioUtil;
import androidx.media3.extractor.SeekMap;
import androidx.media3.extractor.SeekPoint;

/* JADX INFO: loaded from: classes.dex */
final class XingSeeker implements Seeker {
    private static final String TAG = "XingSeeker";
    private final int bitrate;
    private final long dataEndPosition;
    private final long dataSize;
    private final long dataStartPosition;
    private final long durationUs;
    private final long[] tableOfContents;
    private final int xingFrameSize;

    private XingSeeker(long j4, int i6, long j6, int i7) {
        this(j4, i6, j6, i7, -1L, null);
    }

    public static XingSeeker create(XingFrame xingFrame, long j4) {
        long[] jArr;
        long jComputeDurationUs = xingFrame.computeDurationUs();
        if (jComputeDurationUs == C.TIME_UNSET) {
            return null;
        }
        long j6 = xingFrame.dataSize;
        if (j6 == -1 || (jArr = xingFrame.tableOfContents) == null) {
            MpegAudioUtil.Header header = xingFrame.header;
            return new XingSeeker(j4, header.frameSize, jComputeDurationUs, header.bitrate);
        }
        MpegAudioUtil.Header header2 = xingFrame.header;
        return new XingSeeker(j4, header2.frameSize, jComputeDurationUs, header2.bitrate, j6, jArr);
    }

    private long getTimeUsForTableIndex(int i6) {
        return (this.durationUs * ((long) i6)) / 100;
    }

    @Override // androidx.media3.extractor.mp3.Seeker
    public int getAverageBitrate() {
        return this.bitrate;
    }

    @Override // androidx.media3.extractor.mp3.Seeker
    public long getDataEndPosition() {
        return this.dataEndPosition;
    }

    @Override // androidx.media3.extractor.SeekMap
    public long getDurationUs() {
        return this.durationUs;
    }

    @Override // androidx.media3.extractor.SeekMap
    public SeekMap.SeekPoints getSeekPoints(long j4) {
        if (!isSeekable()) {
            return new SeekMap.SeekPoints(new SeekPoint(0L, this.dataStartPosition + ((long) this.xingFrameSize)));
        }
        long jConstrainValue = Util.constrainValue(j4, 0L, this.durationUs);
        double d6 = (jConstrainValue * 100.0d) / this.durationUs;
        double d7 = 0.0d;
        if (d6 > 0.0d) {
            if (d6 >= 100.0d) {
                d7 = 256.0d;
            } else {
                int i6 = (int) d6;
                double d8 = ((long[]) Assertions.checkStateNotNull(this.tableOfContents))[i6];
                d7 = d8 + (((i6 == 99 ? 256.0d : r3[i6 + 1]) - d8) * (d6 - ((double) i6)));
            }
        }
        return new SeekMap.SeekPoints(new SeekPoint(jConstrainValue, this.dataStartPosition + Util.constrainValue(Math.round((d7 / 256.0d) * this.dataSize), this.xingFrameSize, this.dataSize - 1)));
    }

    @Override // androidx.media3.extractor.mp3.Seeker
    public long getTimeUs(long j4) {
        long j6 = j4 - this.dataStartPosition;
        if (!isSeekable() || j6 <= this.xingFrameSize) {
            return 0L;
        }
        long[] jArr = (long[]) Assertions.checkStateNotNull(this.tableOfContents);
        double d6 = (j6 * 256.0d) / this.dataSize;
        int iBinarySearchFloor = Util.binarySearchFloor(jArr, (long) d6, true, true);
        long timeUsForTableIndex = getTimeUsForTableIndex(iBinarySearchFloor);
        long j7 = jArr[iBinarySearchFloor];
        int i6 = iBinarySearchFloor + 1;
        long timeUsForTableIndex2 = getTimeUsForTableIndex(i6);
        return Math.round((j7 == (iBinarySearchFloor == 99 ? 256L : jArr[i6]) ? 0.0d : (d6 - j7) / (r0 - j7)) * (timeUsForTableIndex2 - timeUsForTableIndex)) + timeUsForTableIndex;
    }

    @Override // androidx.media3.extractor.SeekMap
    public boolean isSeekable() {
        return this.tableOfContents != null;
    }

    private XingSeeker(long j4, int i6, long j6, int i7, long j7, long[] jArr) {
        this.dataStartPosition = j4;
        this.xingFrameSize = i6;
        this.durationUs = j6;
        this.bitrate = i7;
        this.dataSize = j7;
        this.tableOfContents = jArr;
        this.dataEndPosition = j7 != -1 ? j4 + j7 : -1L;
    }
}
