package androidx.media3.exoplayer.rtsp;

import androidx.media3.common.util.ParsableByteArray;
import androidx.media3.common.util.UnstableApi;
import androidx.media3.common.util.Util;
import defpackage.hs0;
import defpackage.if7;
import defpackage.rq6;
import defpackage.yo4;
import java.nio.ByteBuffer;

/* JADX INFO: loaded from: classes.dex */
@UnstableApi
public final class RtpPacket {
    public static final int CSRC_SIZE = 4;
    private static final byte[] EMPTY = new byte[0];
    public static final int MAX_SEQUENCE_NUMBER = 65535;
    public static final int MAX_SIZE = 65507;
    public static final int MIN_HEADER_SIZE = 12;
    public static final int MIN_SEQUENCE_NUMBER = 0;
    public static final int RTP_VERSION = 2;
    public final byte[] csrc;
    public final byte csrcCount;
    public final boolean extension;
    public final boolean marker;
    public final boolean padding;
    public final byte[] payloadData;
    public final byte payloadType;
    public final int sequenceNumber;
    public final int ssrc;
    public final long timestamp;
    public final byte version;

    public static final class Builder {
        private boolean marker;
        private boolean padding;
        private byte payloadType;
        private int sequenceNumber;
        private int ssrc;
        private long timestamp;
        private byte[] csrc = RtpPacket.EMPTY;
        private byte[] payloadData = RtpPacket.EMPTY;

        public RtpPacket build() {
            return new RtpPacket(this);
        }

        @hs0
        public Builder setCsrc(byte[] bArr) {
            bArr.getClass();
            this.csrc = bArr;
            return this;
        }

        @hs0
        public Builder setMarker(boolean z) {
            this.marker = z;
            return this;
        }

        @hs0
        public Builder setPadding(boolean z) {
            this.padding = z;
            return this;
        }

        @hs0
        public Builder setPayloadData(byte[] bArr) {
            bArr.getClass();
            this.payloadData = bArr;
            return this;
        }

        @hs0
        public Builder setPayloadType(byte b) {
            this.payloadType = b;
            return this;
        }

        @hs0
        public Builder setSequenceNumber(int i) {
            if7.e(i >= 0 && i <= 65535);
            this.sequenceNumber = i & 65535;
            return this;
        }

        @hs0
        public Builder setSsrc(int i) {
            this.ssrc = i;
            return this;
        }

        @hs0
        public Builder setTimestamp(long j) {
            this.timestamp = j;
            return this;
        }
    }

    public static int getNextSequenceNumber(int i) {
        return yo4.d(i + 1);
    }

    public static int getPreviousSequenceNumber(int i) {
        return yo4.d(i - 1);
    }

    @rq6
    public static RtpPacket parse(ParsableByteArray parsableByteArray) {
        byte[] bArr;
        if (parsableByteArray.bytesLeft() < 12) {
            return null;
        }
        int unsignedByte = parsableByteArray.readUnsignedByte();
        byte b = (byte) (unsignedByte >> 6);
        boolean z = ((unsignedByte >> 5) & 1) == 1;
        byte b2 = (byte) (unsignedByte & 15);
        boolean z2 = ((unsignedByte >> 4) & 1) == 1;
        if (b != 2) {
            return null;
        }
        int unsignedByte2 = parsableByteArray.readUnsignedByte();
        boolean z3 = ((unsignedByte2 >> 7) & 1) == 1;
        byte b3 = (byte) (unsignedByte2 & 127);
        int unsignedShort = parsableByteArray.readUnsignedShort();
        long unsignedInt = parsableByteArray.readUnsignedInt();
        int i = parsableByteArray.readInt();
        if (b2 > 0) {
            bArr = new byte[b2 * 4];
            for (int i2 = 0; i2 < b2; i2++) {
                parsableByteArray.readBytes(bArr, i2 * 4, 4);
            }
        } else {
            bArr = EMPTY;
        }
        if (z2) {
            parsableByteArray.skipBytes(2);
            short s = parsableByteArray.readShort();
            if (s != 0) {
                parsableByteArray.skipBytes(s * 4);
            }
        }
        byte[] bArr2 = new byte[parsableByteArray.bytesLeft()];
        parsableByteArray.readBytes(bArr2, 0, parsableByteArray.bytesLeft());
        return new Builder().setPadding(z).setMarker(z3).setPayloadType(b3).setSequenceNumber(unsignedShort).setTimestamp(unsignedInt).setSsrc(i).setCsrc(bArr).setPayloadData(bArr2).build();
    }

    public boolean equals(@rq6 Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj != null && RtpPacket.class == obj.getClass()) {
            RtpPacket rtpPacket = (RtpPacket) obj;
            if (this.payloadType == rtpPacket.payloadType && this.sequenceNumber == rtpPacket.sequenceNumber && this.marker == rtpPacket.marker && this.timestamp == rtpPacket.timestamp && this.ssrc == rtpPacket.ssrc) {
                return true;
            }
        }
        return false;
    }

    public int hashCode() {
        int i = (((((527 + this.payloadType) * 31) + this.sequenceNumber) * 31) + (this.marker ? 1 : 0)) * 31;
        long j = this.timestamp;
        return ((i + ((int) (j ^ (j >>> 32)))) * 31) + this.ssrc;
    }

    public String toString() {
        return Util.formatInvariant("RtpPacket(payloadType=%d, seq=%d, timestamp=%d, ssrc=%x, marker=%b)", Byte.valueOf(this.payloadType), Integer.valueOf(this.sequenceNumber), Long.valueOf(this.timestamp), Integer.valueOf(this.ssrc), Boolean.valueOf(this.marker));
    }

    public int writeToBuffer(byte[] bArr, int i, int i2) {
        int length = (this.csrcCount * 4) + 12 + this.payloadData.length;
        if (i2 < length || bArr.length - i < length) {
            return -1;
        }
        ByteBuffer byteBufferWrap = ByteBuffer.wrap(bArr, i, i2);
        byte b = (byte) (((this.padding ? 1 : 0) << 5) | 128 | ((this.extension ? 1 : 0) << 4) | (this.csrcCount & 15));
        byteBufferWrap.put(b).put((byte) (((this.marker ? 1 : 0) << 7) | (this.payloadType & 127))).putShort((short) this.sequenceNumber).putInt((int) this.timestamp).putInt(this.ssrc).put(this.csrc).put(this.payloadData);
        return length;
    }

    private RtpPacket(Builder builder) {
        this.version = (byte) 2;
        this.padding = builder.padding;
        this.extension = false;
        this.marker = builder.marker;
        this.payloadType = builder.payloadType;
        this.sequenceNumber = builder.sequenceNumber;
        this.timestamp = builder.timestamp;
        this.ssrc = builder.ssrc;
        byte[] bArr = builder.csrc;
        this.csrc = bArr;
        this.csrcCount = (byte) (bArr.length / 4);
        this.payloadData = builder.payloadData;
    }

    @rq6
    public static RtpPacket parse(byte[] bArr, int i) {
        return parse(new ParsableByteArray(bArr, i));
    }
}
