package androidx.media3.extractor.mp3;

import androidx.media3.common.util.Log;
import androidx.media3.common.util.ParsableByteArray;
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 VbriSeeker implements Seeker {
    private static final String TAG = "VbriSeeker";
    private final int bitrate;
    private final long dataEndPosition;
    private final long durationUs;
    private final long[] positions;
    private final long[] timesUs;

    private VbriSeeker(long[] jArr, long[] jArr2, long j4, long j6, int i6) {
        this.timesUs = jArr;
        this.positions = jArr2;
        this.durationUs = j4;
        this.dataEndPosition = j6;
        this.bitrate = i6;
    }

    public static VbriSeeker create(long j4, long j6, MpegAudioUtil.Header header, ParsableByteArray parsableByteArray) {
        int unsignedByte;
        ParsableByteArray parsableByteArray2 = parsableByteArray;
        parsableByteArray2.skipBytes(10);
        int i6 = parsableByteArray2.readInt();
        VbriSeeker vbriSeeker = null;
        if (i6 <= 0) {
            return null;
        }
        int i7 = header.sampleRate;
        long jScaleLargeTimestamp = Util.scaleLargeTimestamp(i6, ((long) (i7 >= 32000 ? 1152 : 576)) * 1000000, i7);
        int unsignedShort = parsableByteArray2.readUnsignedShort();
        int unsignedShort2 = parsableByteArray2.readUnsignedShort();
        int unsignedShort3 = parsableByteArray2.readUnsignedShort();
        parsableByteArray2.skipBytes(2);
        long j7 = j6 + ((long) header.frameSize);
        long[] jArr = new long[unsignedShort];
        long[] jArr2 = new long[unsignedShort];
        int i8 = 0;
        long j8 = j6;
        while (i8 < unsignedShort) {
            VbriSeeker vbriSeeker2 = vbriSeeker;
            int i9 = unsignedShort2;
            long j9 = j7;
            jArr[i8] = (((long) i8) * jScaleLargeTimestamp) / ((long) unsignedShort);
            jArr2[i8] = Math.max(j8, j9);
            if (unsignedShort3 == 1) {
                unsignedByte = parsableByteArray2.readUnsignedByte();
            } else if (unsignedShort3 == 2) {
                unsignedByte = parsableByteArray2.readUnsignedShort();
            } else if (unsignedShort3 == 3) {
                unsignedByte = parsableByteArray2.readUnsignedInt24();
            } else {
                if (unsignedShort3 != 4) {
                    return vbriSeeker2;
                }
                unsignedByte = parsableByteArray2.readUnsignedIntToInt();
            }
            j8 += ((long) unsignedByte) * ((long) i9);
            i8++;
            parsableByteArray2 = parsableByteArray;
            j7 = j9;
            unsignedShort2 = i9;
            vbriSeeker = vbriSeeker2;
            unsignedShort = unsignedShort;
        }
        if (j4 != -1 && j4 != j8) {
            Log.w(TAG, "VBRI data size mismatch: " + j4 + ", " + j8);
        }
        return new VbriSeeker(jArr, jArr2, jScaleLargeTimestamp, j8, header.bitrate);
    }

    @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) {
        int iBinarySearchFloor = Util.binarySearchFloor(this.timesUs, j4, true, true);
        SeekPoint seekPoint = new SeekPoint(this.timesUs[iBinarySearchFloor], this.positions[iBinarySearchFloor]);
        if (seekPoint.timeUs >= j4 || iBinarySearchFloor == this.timesUs.length - 1) {
            return new SeekMap.SeekPoints(seekPoint);
        }
        int i6 = iBinarySearchFloor + 1;
        return new SeekMap.SeekPoints(seekPoint, new SeekPoint(this.timesUs[i6], this.positions[i6]));
    }

    @Override // androidx.media3.extractor.mp3.Seeker
    public long getTimeUs(long j4) {
        return this.timesUs[Util.binarySearchFloor(this.positions, j4, true, true)];
    }

    @Override // androidx.media3.extractor.SeekMap
    public boolean isSeekable() {
        return true;
    }
}
