package androidx.media3.exoplayer.rtsp.reader;

import androidx.media3.common.util.Assertions;
import androidx.media3.common.util.Log;
import androidx.media3.common.util.ParsableByteArray;
import androidx.media3.common.util.Util;
import androidx.media3.exoplayer.rtsp.RtpPacket;
import androidx.media3.exoplayer.rtsp.RtpPayloadFormat;
import androidx.media3.extractor.b0;
import androidx.media3.extractor.z0;
import com.google.common.base.h;

/* JADX INFO: loaded from: classes.dex */
final class RtpMpeg4Reader implements RtpPayloadReader {
    private static final int I_VOP = 0;
    private static final int MEDIA_CLOCK_FREQUENCY = 90000;
    private static final String TAG = "RtpMpeg4Reader";
    private int bufferFlags;
    private final RtpPayloadFormat payloadFormat;
    private int sampleLength;
    private long startTimeOffsetUs;
    private z0 trackOutput;
    private long firstReceivedTimestamp = -9223372036854775807L;
    private int previousSequenceNumber = -1;

    public RtpMpeg4Reader(RtpPayloadFormat rtpPayloadFormat) {
        this.payloadFormat = rtpPayloadFormat;
    }

    private static int getBufferFlagsFromVop(ParsableByteArray parsableByteArray) {
        byte[] data = parsableByteArray.getData();
        byte[] bArr = {0, 0, 1, -74};
        h.f(data, "array");
        int i10 = 0;
        loop0: while (true) {
            if (i10 >= data.length - 3) {
                i10 = -1;
                break;
            }
            for (int i11 = 0; i11 < 4; i11++) {
                if (data[i10 + i11] != bArr[i11]) {
                    break;
                }
            }
            break loop0;
            i10++;
        }
        if (i10 == -1) {
            return 0;
        }
        parsableByteArray.setPosition(i10 + 4);
        return (parsableByteArray.peekUnsignedByte() >> 6) == 0 ? 1 : 0;
    }

    @Override // androidx.media3.exoplayer.rtsp.reader.RtpPayloadReader
    public void consume(ParsableByteArray parsableByteArray, long j10, int i10, boolean z10) {
        int nextSequenceNumber;
        Assertions.checkStateNotNull(this.trackOutput);
        int i11 = this.previousSequenceNumber;
        if (i11 != -1 && i10 != (nextSequenceNumber = RtpPacket.getNextSequenceNumber(i11))) {
            Log.w(TAG, Util.formatInvariant("Received RTP packet with unexpected sequence number. Expected: %d; received: %d. Dropping packet.", Integer.valueOf(nextSequenceNumber), Integer.valueOf(i10)));
        }
        int iBytesLeft = parsableByteArray.bytesLeft();
        this.trackOutput.sampleData(parsableByteArray, iBytesLeft);
        if (this.sampleLength == 0) {
            this.bufferFlags = getBufferFlagsFromVop(parsableByteArray);
        }
        this.sampleLength += iBytesLeft;
        if (z10) {
            if (this.firstReceivedTimestamp == -9223372036854775807L) {
                this.firstReceivedTimestamp = j10;
            }
            this.trackOutput.sampleMetadata(RtpReaderUtils.toSampleTimeUs(this.startTimeOffsetUs, j10, this.firstReceivedTimestamp, MEDIA_CLOCK_FREQUENCY), this.bufferFlags, this.sampleLength, 0, null);
            this.sampleLength = 0;
        }
        this.previousSequenceNumber = i10;
    }

    @Override // androidx.media3.exoplayer.rtsp.reader.RtpPayloadReader
    public void createTracks(b0 b0Var, int i10) {
        z0 z0VarTrack = b0Var.track(i10, 2);
        this.trackOutput = z0VarTrack;
        ((z0) Util.castNonNull(z0VarTrack)).format(this.payloadFormat.format);
    }

    @Override // androidx.media3.exoplayer.rtsp.reader.RtpPayloadReader
    public void onReceivingFirstPacket(long j10, int i10) {
    }

    @Override // androidx.media3.exoplayer.rtsp.reader.RtpPayloadReader
    public void seek(long j10, long j11) {
        this.firstReceivedTimestamp = j10;
        this.startTimeOffsetUs = j11;
        this.sampleLength = 0;
    }
}
