package androidx.media3.exoplayer.rtsp.reader;

import androidx.media3.common.MimeTypes;
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;

/* JADX INFO: loaded from: classes.dex */
final class RtpAmrReader implements RtpPayloadReader {
    private static final int[] AMR_NB_FRAME_TYPE_INDEX_TO_FRAME_SIZE = {13, 14, 16, 18, 20, 21, 27, 32, 6, 7, 6, 6, 1, 1, 1, 1};
    private static final int[] AMR_WB_FRAME_TYPE_INDEX_TO_FRAME_SIZE = {18, 24, 33, 37, 41, 47, 51, 59, 61, 6, 1, 1, 1, 1, 1, 1};
    private static final String TAG = "RtpAmrReader";
    private final boolean isWideBand;
    private final RtpPayloadFormat payloadFormat;
    private final int sampleRate;
    private z0 trackOutput;
    private long firstReceivedTimestamp = -9223372036854775807L;
    private int previousSequenceNumber = -1;
    private long startTimeOffsetUs = 0;

    public RtpAmrReader(RtpPayloadFormat rtpPayloadFormat) {
        this.payloadFormat = rtpPayloadFormat;
        this.isWideBand = MimeTypes.AUDIO_AMR_WB.equals(Assertions.checkNotNull(rtpPayloadFormat.format.sampleMimeType));
        this.sampleRate = rtpPayloadFormat.clockRate;
    }

    public static int getFrameSize(int i10, boolean z10) {
        boolean z11 = (i10 >= 0 && i10 <= 8) || i10 == 15;
        StringBuilder sb = new StringBuilder("Illegal AMR ");
        sb.append(z10 ? "WB" : "NB");
        sb.append(" frame type ");
        sb.append(i10);
        Assertions.checkArgument(z11, sb.toString());
        return z10 ? AMR_WB_FRAME_TYPE_INDEX_TO_FRAME_SIZE[i10] : AMR_NB_FRAME_TYPE_INDEX_TO_FRAME_SIZE[i10];
    }

    @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.", Integer.valueOf(nextSequenceNumber), Integer.valueOf(i10)));
        }
        parsableByteArray.skipBytes(1);
        int frameSize = getFrameSize((parsableByteArray.peekUnsignedByte() >> 3) & 15, this.isWideBand);
        int iBytesLeft = parsableByteArray.bytesLeft();
        Assertions.checkArgument(iBytesLeft == frameSize, "compound payload not supported currently");
        this.trackOutput.sampleData(parsableByteArray, iBytesLeft);
        this.trackOutput.sampleMetadata(RtpReaderUtils.toSampleTimeUs(this.startTimeOffsetUs, j10, this.firstReceivedTimestamp, this.sampleRate), 1, iBytesLeft, 0, null);
        this.previousSequenceNumber = i10;
    }

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

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

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