package androidx.media3.extractor.mkv;

import androidx.media3.extractor.ExtractorInput;

/* JADX INFO: loaded from: classes.dex */
final class VarintReader {
    private static final int STATE_BEGIN_READING = 0;
    private static final int STATE_READ_CONTENTS = 1;
    private static final long[] VARINT_LENGTH_MASKS = {128, 64, 32, 16, 8, 4, 2, 1};
    private int length;
    private final byte[] scratch = new byte[8];
    private int state;

    public static long assembleVarint(byte[] bArr, int i6, boolean z6) {
        long j4 = ((long) bArr[0]) & 255;
        if (z6) {
            j4 &= ~VARINT_LENGTH_MASKS[i6 - 1];
        }
        for (int i7 = 1; i7 < i6; i7++) {
            j4 = (j4 << 8) | (((long) bArr[i7]) & 255);
        }
        return j4;
    }

    public static int parseUnsignedVarintLength(int i6) {
        int i7 = 0;
        while (true) {
            long[] jArr = VARINT_LENGTH_MASKS;
            if (i7 >= jArr.length) {
                return -1;
            }
            if ((jArr[i7] & ((long) i6)) != 0) {
                return i7 + 1;
            }
            i7++;
        }
    }

    public int getLastLength() {
        return this.length;
    }

    public long readUnsignedVarint(ExtractorInput extractorInput, boolean z6, boolean z7, int i6) {
        if (this.state == 0) {
            if (!extractorInput.readFully(this.scratch, 0, 1, z6)) {
                return -1L;
            }
            int unsignedVarintLength = parseUnsignedVarintLength(this.scratch[0] & 255);
            this.length = unsignedVarintLength;
            if (unsignedVarintLength == -1) {
                throw new IllegalStateException("No valid varint length mask found");
            }
            this.state = 1;
        }
        int i7 = this.length;
        if (i7 > i6) {
            this.state = 0;
            return -2L;
        }
        if (i7 != 1) {
            extractorInput.readFully(this.scratch, 1, i7 - 1);
        }
        this.state = 0;
        return assembleVarint(this.scratch, this.length, z7);
    }

    public void reset() {
        this.state = 0;
        this.length = 0;
    }
}
