package androidx.media3.extractor;

import androidx.media3.common.DataReader;
import androidx.media3.common.MediaLibraryInfo;
import androidx.media3.common.util.Assertions;
import androidx.media3.common.util.UnstableApi;
import androidx.media3.common.util.Util;
import java.io.EOFException;
import java.io.InterruptedIOException;
import java.util.Arrays;

/* JADX INFO: loaded from: classes.dex */
@UnstableApi
public final class DefaultExtractorInput implements ExtractorInput {
    private static final int PEEK_MAX_FREE_SPACE = 524288;
    private static final int PEEK_MIN_FREE_SPACE_AFTER_RESIZE = 65536;
    private static final int SCRATCH_SPACE_SIZE = 4096;
    private final DataReader dataReader;
    private int peekBufferLength;
    private int peekBufferPosition;
    private long position;
    private final long streamLength;
    private byte[] peekBuffer = new byte[65536];
    private final byte[] scratchSpace = new byte[4096];

    static {
        MediaLibraryInfo.registerModule("media3.extractor");
    }

    public DefaultExtractorInput(DataReader dataReader, long j4, long j6) {
        this.dataReader = dataReader;
        this.position = j4;
        this.streamLength = j6;
    }

    private void commitBytesRead(int i6) {
        if (i6 != -1) {
            this.position += (long) i6;
        }
    }

    private void ensureSpaceForPeek(int i6) {
        int i7 = this.peekBufferPosition + i6;
        byte[] bArr = this.peekBuffer;
        if (i7 > bArr.length) {
            this.peekBuffer = Arrays.copyOf(this.peekBuffer, Util.constrainValue(bArr.length * 2, 65536 + i7, i7 + PEEK_MAX_FREE_SPACE));
        }
    }

    private int readFromPeekBuffer(byte[] bArr, int i6, int i7) {
        int i8 = this.peekBufferLength;
        if (i8 == 0) {
            return 0;
        }
        int iMin = Math.min(i8, i7);
        System.arraycopy(this.peekBuffer, 0, bArr, i6, iMin);
        updatePeekBuffer(iMin);
        return iMin;
    }

    private int readFromUpstream(byte[] bArr, int i6, int i7, int i8, boolean z6) throws EOFException, InterruptedIOException {
        if (Thread.interrupted()) {
            throw new InterruptedIOException();
        }
        int i9 = this.dataReader.read(bArr, i6 + i8, i7 - i8);
        if (i9 != -1) {
            return i8 + i9;
        }
        if (i8 == 0 && z6) {
            return -1;
        }
        throw new EOFException();
    }

    private int skipFromPeekBuffer(int i6) {
        int iMin = Math.min(this.peekBufferLength, i6);
        updatePeekBuffer(iMin);
        return iMin;
    }

    private void updatePeekBuffer(int i6) {
        int i7 = this.peekBufferLength - i6;
        this.peekBufferLength = i7;
        this.peekBufferPosition = 0;
        byte[] bArr = this.peekBuffer;
        byte[] bArr2 = i7 < bArr.length - PEEK_MAX_FREE_SPACE ? new byte[65536 + i7] : bArr;
        System.arraycopy(bArr, i6, bArr2, 0, i7);
        this.peekBuffer = bArr2;
    }

    @Override // androidx.media3.extractor.ExtractorInput
    public boolean advancePeekPosition(int i6, boolean z6) throws EOFException, InterruptedIOException {
        ensureSpaceForPeek(i6);
        int fromUpstream = this.peekBufferLength - this.peekBufferPosition;
        while (fromUpstream < i6) {
            int i7 = i6;
            boolean z7 = z6;
            fromUpstream = readFromUpstream(this.peekBuffer, this.peekBufferPosition, i7, fromUpstream, z7);
            if (fromUpstream == -1) {
                return false;
            }
            this.peekBufferLength = this.peekBufferPosition + fromUpstream;
            i6 = i7;
            z6 = z7;
        }
        this.peekBufferPosition += i6;
        return true;
    }

    @Override // androidx.media3.extractor.ExtractorInput
    public long getLength() {
        return this.streamLength;
    }

    @Override // androidx.media3.extractor.ExtractorInput
    public long getPeekPosition() {
        return this.position + ((long) this.peekBufferPosition);
    }

    @Override // androidx.media3.extractor.ExtractorInput
    public long getPosition() {
        return this.position;
    }

    @Override // androidx.media3.extractor.ExtractorInput
    public int peek(byte[] bArr, int i6, int i7) throws EOFException, InterruptedIOException {
        DefaultExtractorInput defaultExtractorInput;
        int iMin;
        ensureSpaceForPeek(i7);
        int i8 = this.peekBufferLength;
        int i9 = this.peekBufferPosition;
        int i10 = i8 - i9;
        if (i10 == 0) {
            defaultExtractorInput = this;
            iMin = defaultExtractorInput.readFromUpstream(this.peekBuffer, i9, i7, 0, true);
            if (iMin == -1) {
                return -1;
            }
            defaultExtractorInput.peekBufferLength += iMin;
        } else {
            defaultExtractorInput = this;
            iMin = Math.min(i7, i10);
        }
        System.arraycopy(defaultExtractorInput.peekBuffer, defaultExtractorInput.peekBufferPosition, bArr, i6, iMin);
        defaultExtractorInput.peekBufferPosition += iMin;
        return iMin;
    }

    @Override // androidx.media3.extractor.ExtractorInput
    public boolean peekFully(byte[] bArr, int i6, int i7, boolean z6) {
        if (!advancePeekPosition(i7, z6)) {
            return false;
        }
        System.arraycopy(this.peekBuffer, this.peekBufferPosition - i7, bArr, i6, i7);
        return true;
    }

    @Override // androidx.media3.extractor.ExtractorInput, androidx.media3.common.DataReader
    public int read(byte[] bArr, int i6, int i7) throws EOFException, InterruptedIOException {
        int fromPeekBuffer = readFromPeekBuffer(bArr, i6, i7);
        if (fromPeekBuffer == 0) {
            fromPeekBuffer = readFromUpstream(bArr, i6, i7, 0, true);
        }
        commitBytesRead(fromPeekBuffer);
        return fromPeekBuffer;
    }

    @Override // androidx.media3.extractor.ExtractorInput
    public boolean readFully(byte[] bArr, int i6, int i7, boolean z6) throws EOFException, InterruptedIOException {
        int fromPeekBuffer = readFromPeekBuffer(bArr, i6, i7);
        while (fromPeekBuffer < i7 && fromPeekBuffer != -1) {
            fromPeekBuffer = readFromUpstream(bArr, i6, i7, fromPeekBuffer, z6);
        }
        commitBytesRead(fromPeekBuffer);
        return fromPeekBuffer != -1;
    }

    @Override // androidx.media3.extractor.ExtractorInput
    public void resetPeekPosition() {
        this.peekBufferPosition = 0;
    }

    /* JADX INFO: Thrown type has an unknown type hierarchy: E extends java.lang.Throwable */
    @Override // androidx.media3.extractor.ExtractorInput
    public <E extends Throwable> void setRetryPosition(long j4, E e6) throws E {
        Assertions.checkArgument(j4 >= 0);
        this.position = j4;
        throw e6;
    }

    @Override // androidx.media3.extractor.ExtractorInput
    public int skip(int i6) throws EOFException, InterruptedIOException {
        int iSkipFromPeekBuffer = skipFromPeekBuffer(i6);
        if (iSkipFromPeekBuffer == 0) {
            byte[] bArr = this.scratchSpace;
            iSkipFromPeekBuffer = readFromUpstream(bArr, 0, Math.min(i6, bArr.length), 0, true);
        }
        commitBytesRead(iSkipFromPeekBuffer);
        return iSkipFromPeekBuffer;
    }

    @Override // androidx.media3.extractor.ExtractorInput
    public boolean skipFully(int i6, boolean z6) throws EOFException, InterruptedIOException {
        int iSkipFromPeekBuffer = skipFromPeekBuffer(i6);
        while (iSkipFromPeekBuffer < i6 && iSkipFromPeekBuffer != -1) {
            iSkipFromPeekBuffer = readFromUpstream(this.scratchSpace, -iSkipFromPeekBuffer, Math.min(i6, this.scratchSpace.length + iSkipFromPeekBuffer), iSkipFromPeekBuffer, z6);
        }
        commitBytesRead(iSkipFromPeekBuffer);
        return iSkipFromPeekBuffer != -1;
    }

    @Override // androidx.media3.extractor.ExtractorInput
    public void peekFully(byte[] bArr, int i6, int i7) {
        peekFully(bArr, i6, i7, false);
    }

    @Override // androidx.media3.extractor.ExtractorInput
    public void readFully(byte[] bArr, int i6, int i7) throws EOFException, InterruptedIOException {
        readFully(bArr, i6, i7, false);
    }

    @Override // androidx.media3.extractor.ExtractorInput
    public void skipFully(int i6) throws EOFException, InterruptedIOException {
        skipFully(i6, false);
    }

    @Override // androidx.media3.extractor.ExtractorInput
    public void advancePeekPosition(int i6) throws EOFException, InterruptedIOException {
        advancePeekPosition(i6, false);
    }
}
