package androidx.media3.exoplayer.hls;

import android.text.TextUtils;
import androidx.annotation.Nullable;
import androidx.media3.common.Format;
import androidx.media3.common.MimeTypes;
import androidx.media3.common.ParserException;
import androidx.media3.common.util.Assertions;
import androidx.media3.common.util.ParsableByteArray;
import androidx.media3.common.util.TimestampAdjuster;
import androidx.media3.common.util.UnstableApi;
import androidx.media3.extractor.b0;
import androidx.media3.extractor.i0;
import androidx.media3.extractor.r0;
import androidx.media3.extractor.y;
import androidx.media3.extractor.z;
import androidx.media3.extractor.z0;
import com.google.common.collect.ImmutableList;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import n2.n;
import n2.q;
import org.checkerframework.checker.nullness.qual.RequiresNonNull;
import org.checkerframework.dataflow.qual.SideEffectFree;

/* JADX INFO: loaded from: classes.dex */
@UnstableApi
public final class WebvttExtractor implements y {
    private static final int HEADER_MAX_LENGTH = 9;
    private static final int HEADER_MIN_LENGTH = 6;
    private static final Pattern LOCAL_TIMESTAMP = Pattern.compile("LOCAL:([^,]+)");
    private static final Pattern MEDIA_TIMESTAMP = Pattern.compile("MPEGTS:(-?\\d+)");

    @Nullable
    private final String language;
    private b0 output;
    private final boolean parseSubtitlesDuringExtraction;
    private byte[] sampleData;
    private final ParsableByteArray sampleDataWrapper;
    private int sampleSize;
    private final n subtitleParserFactory;
    private final TimestampAdjuster timestampAdjuster;

    @Deprecated
    public WebvttExtractor(@Nullable String str, TimestampAdjuster timestampAdjuster) {
        this(str, timestampAdjuster, n.f30781a, false);
    }

    @RequiresNonNull({"output"})
    private z0 buildTrackOutput(long j10) {
        z0 z0VarTrack = this.output.track(0, 3);
        z0VarTrack.format(new Format.Builder().setSampleMimeType(MimeTypes.TEXT_VTT).setLanguage(this.language).setSubsampleOffsetUs(j10).build());
        this.output.endTracks();
        return z0VarTrack;
    }

    @RequiresNonNull({"output"})
    private void processSample() throws ParserException {
        ParsableByteArray parsableByteArray = new ParsableByteArray(this.sampleData);
        w2.j.d(parsableByteArray);
        long jPtsToUs = 0;
        long jC = 0;
        for (String line = parsableByteArray.readLine(); !TextUtils.isEmpty(line); line = parsableByteArray.readLine()) {
            if (line.startsWith("X-TIMESTAMP-MAP")) {
                Matcher matcher = LOCAL_TIMESTAMP.matcher(line);
                if (!matcher.find()) {
                    throw ParserException.createForMalformedContainer("X-TIMESTAMP-MAP doesn't contain local timestamp: ".concat(line), null);
                }
                Matcher matcher2 = MEDIA_TIMESTAMP.matcher(line);
                if (!matcher2.find()) {
                    throw ParserException.createForMalformedContainer("X-TIMESTAMP-MAP doesn't contain media timestamp: ".concat(line), null);
                }
                jC = w2.j.c((String) Assertions.checkNotNull(matcher.group(1)));
                jPtsToUs = TimestampAdjuster.ptsToUs(Long.parseLong((String) Assertions.checkNotNull(matcher2.group(1))));
            }
        }
        Matcher matcherFindNextCueHeader = w2.j.findNextCueHeader(parsableByteArray);
        if (matcherFindNextCueHeader == null) {
            buildTrackOutput(0L);
            return;
        }
        long jC2 = w2.j.c((String) Assertions.checkNotNull(matcherFindNextCueHeader.group(1)));
        long jAdjustTsTimestamp = this.timestampAdjuster.adjustTsTimestamp(TimestampAdjuster.usToWrappedPts((jPtsToUs + jC2) - jC));
        z0 z0VarBuildTrackOutput = buildTrackOutput(jAdjustTsTimestamp - jC2);
        this.sampleDataWrapper.reset(this.sampleData, this.sampleSize);
        z0VarBuildTrackOutput.sampleData(this.sampleDataWrapper, this.sampleSize);
        z0VarBuildTrackOutput.sampleMetadata(jAdjustTsTimestamp, 1, this.sampleSize, 0, null);
    }

    @Override // androidx.media3.extractor.y
    public List getSniffFailureDetails() {
        return ImmutableList.t();
    }

    @Override // androidx.media3.extractor.y
    @SideEffectFree
    public y getUnderlyingImplementation() {
        return this;
    }

    @Override // androidx.media3.extractor.y
    public void init(b0 b0Var) {
        if (this.parseSubtitlesDuringExtraction) {
            b0Var = new q(b0Var, this.subtitleParserFactory);
        }
        this.output = b0Var;
        b0Var.seekMap(new i0(-9223372036854775807L));
    }

    @Override // androidx.media3.extractor.y
    public int read(z zVar, r0 r0Var) throws IOException {
        Assertions.checkNotNull(this.output);
        int length = (int) zVar.getLength();
        int i10 = this.sampleSize;
        byte[] bArr = this.sampleData;
        if (i10 == bArr.length) {
            this.sampleData = Arrays.copyOf(bArr, ((length != -1 ? length : bArr.length) * 3) / 2);
        }
        byte[] bArr2 = this.sampleData;
        int i11 = this.sampleSize;
        int i12 = zVar.read(bArr2, i11, bArr2.length - i11);
        if (i12 != -1) {
            int i13 = this.sampleSize + i12;
            this.sampleSize = i13;
            if (length == -1 || i13 != length) {
                return 0;
            }
        }
        processSample();
        return -1;
    }

    @Override // androidx.media3.extractor.y
    public void release() {
    }

    @Override // androidx.media3.extractor.y
    public void seek(long j10, long j11) {
        throw new IllegalStateException();
    }

    @Override // androidx.media3.extractor.y
    public boolean sniff(z zVar) throws IOException {
        zVar.f(this.sampleData, 0, 6, false);
        this.sampleDataWrapper.reset(this.sampleData, 6);
        if (w2.j.a(this.sampleDataWrapper)) {
            return true;
        }
        zVar.f(this.sampleData, 6, 3, false);
        this.sampleDataWrapper.reset(this.sampleData, 9);
        return w2.j.a(this.sampleDataWrapper);
    }

    public WebvttExtractor(@Nullable String str, TimestampAdjuster timestampAdjuster, n nVar, boolean z10) {
        this.language = str;
        this.timestampAdjuster = timestampAdjuster;
        this.sampleDataWrapper = new ParsableByteArray();
        this.sampleData = new byte[1024];
        this.subtitleParserFactory = nVar;
        this.parseSubtitlesDuringExtraction = z10;
    }
}
