package androidx.media3.exoplayer.rtsp;

import android.net.Uri;
import androidx.annotation.Nullable;
import androidx.media3.common.ParserException;
import androidx.media3.common.util.Assertions;
import androidx.media3.common.util.Log;
import androidx.media3.common.util.Util;
import androidx.media3.exoplayer.rtsp.MediaDescription;
import androidx.media3.exoplayer.rtsp.SessionDescription;
import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/* JADX INFO: loaded from: classes.dex */
final class SessionDescriptionParser {
    private static final String ATTRIBUTE_TYPE = "a";
    private static final String BANDWIDTH_TYPE = "b";
    private static final String CONNECTION_TYPE = "c";
    private static final String EMAIL_TYPE = "e";
    private static final String INFORMATION_TYPE = "i";
    private static final String KEY_TYPE = "k";
    private static final String MEDIA_TYPE = "m";
    private static final String ORIGIN_TYPE = "o";
    private static final String PHONE_NUMBER_TYPE = "p";
    private static final String REPEAT_TYPE = "r";
    private static final String SESSION_TYPE = "s";
    private static final String TAG = "SDPParser";
    private static final String TIMING_TYPE = "t";
    private static final String URI_TYPE = "u";
    private static final String VERSION_TYPE = "v";
    private static final String ZONE_TYPE = "z";
    private static final Pattern SDP_LINE_PATTERN = Pattern.compile("([a-z])=\\s?((?:.|\f)+)");
    private static final Pattern SDP_LINE_WITH_EMPTY_VALUE_PATTERN = Pattern.compile("^([a-z])=$");
    private static final Pattern ATTRIBUTE_PATTERN = Pattern.compile("([\\x21\\x23-\\x27\\x2a\\x2b\\x2d\\x2e\\x30-\\x39\\x41-\\x5a\\x5e-\\x7e]+)(?::((?:.|\f)*))?");
    private static final Pattern MEDIA_DESCRIPTION_PATTERN = Pattern.compile("(\\S+)\\s(\\S+)\\s(\\S+)\\s(\\S+)");

    private SessionDescriptionParser() {
    }

    private static void addMediaDescriptionToSession(SessionDescription.Builder builder, MediaDescription.Builder builder2) throws ParserException {
        try {
            builder.addMediaDescription(builder2.build());
        } catch (IllegalArgumentException | IllegalStateException e10) {
            throw ParserException.createForMalformedManifest(null, e10);
        }
    }

    /* JADX WARN: Can't fix incorrect switch cases order, some code will duplicate */
    /* JADX WARN: Code restructure failed: missing block: B:158:0x01d5, code lost:
    
        continue;
     */
    /* JADX WARN: Removed duplicated region for block: B:64:0x010f  */
    /*
        Code decompiled incorrectly, please refer to instructions dump.
    */
    public static SessionDescription parse(String str) throws ParserException {
        String str2;
        SessionDescription.Builder builder = new SessionDescription.Builder();
        MediaDescription.Builder mediaDescriptionLine = null;
        boolean z10 = false;
        for (String str3 : RtspMessageUtil.splitRtspMessageBody(str)) {
            String strTrim = str3.trim();
            if (!strTrim.isEmpty()) {
                Matcher matcher = SDP_LINE_PATTERN.matcher(strTrim);
                if (matcher.matches()) {
                    String str4 = (String) Assertions.checkNotNull(matcher.group(1));
                    str2 = (String) Assertions.checkNotNull(matcher.group(2));
                    switch (str4) {
                        case "v":
                            if (!SessionDescription.SUPPORTED_SDP_VERSION.equals(str2)) {
                                throw ParserException.createForMalformedManifest(String.format("SDP version %s is not supported.", str2), null);
                            }
                            break;
                            break;
                        case "o":
                            builder.setOrigin(str2);
                            break;
                        case "s":
                            builder.setSessionName(str2);
                            break;
                        case "i":
                            if (!z10) {
                                if (mediaDescriptionLine == null) {
                                    builder.setSessionInfo(str2);
                                } else {
                                    mediaDescriptionLine.setMediaTitle(str2);
                                }
                                break;
                            } else {
                                break;
                            }
                            break;
                        case "u":
                            builder.setUri(Uri.parse(str2));
                            break;
                        case "e":
                            builder.setEmailAddress(str2);
                            break;
                        case "p":
                            builder.setPhoneNumber(str2);
                            break;
                        case "c":
                            if (!z10) {
                                if (mediaDescriptionLine == null) {
                                    builder.setConnection(str2);
                                } else {
                                    mediaDescriptionLine.setConnection(str2);
                                }
                                break;
                            } else {
                                break;
                            }
                            break;
                        case "b":
                            if (!z10) {
                                String[] strArrSplit = Util.split(str2, ":\\s?");
                                Assertions.checkArgument(strArrSplit.length == 2);
                                int i10 = Integer.parseInt(strArrSplit[1]);
                                if (mediaDescriptionLine == null) {
                                    builder.setBitrate(i10 * 1000);
                                } else {
                                    mediaDescriptionLine.setBitrate(i10 * 1000);
                                }
                                break;
                            } else {
                                break;
                            }
                            break;
                        case "t":
                            builder.setTiming(str2);
                            break;
                        case "k":
                            if (!z10) {
                                if (mediaDescriptionLine == null) {
                                    builder.setKey(str2);
                                } else {
                                    mediaDescriptionLine.setKey(str2);
                                }
                                break;
                            } else {
                                break;
                            }
                            break;
                        case "a":
                            if (z10) {
                                continue;
                                break;
                            } else {
                                Matcher matcher2 = ATTRIBUTE_PATTERN.matcher(str2);
                                if (!matcher2.matches()) {
                                    throw ParserException.createForMalformedManifest("Malformed Attribute line: ".concat(strTrim), null);
                                }
                                String str5 = (String) Assertions.checkNotNull(matcher2.group(1));
                                String strGroup = matcher2.group(2);
                                if (strGroup == null) {
                                    strGroup = "";
                                }
                                if (mediaDescriptionLine == null) {
                                    builder.addAttribute(str5, strGroup);
                                } else {
                                    mediaDescriptionLine.addAttribute(str5, strGroup);
                                }
                                break;
                            }
                            break;
                        case "m":
                            if (mediaDescriptionLine != null) {
                                addMediaDescriptionToSession(builder, mediaDescriptionLine);
                            }
                            mediaDescriptionLine = parseMediaDescriptionLine(str2);
                            if (mediaDescriptionLine != null) {
                                z10 = false;
                                break;
                            } else {
                                z10 = true;
                                break;
                            }
                            break;
                    }
                } else {
                    Matcher matcher3 = SDP_LINE_WITH_EMPTY_VALUE_PATTERN.matcher(strTrim);
                    if (!matcher3.matches() || !Objects.equals(matcher3.group(1), "i")) {
                        throw ParserException.createForMalformedManifest("Malformed SDP line: ".concat(strTrim), null);
                    }
                }
            }
        }
        if (mediaDescriptionLine != null) {
            addMediaDescriptionToSession(builder, mediaDescriptionLine);
        }
        try {
            return builder.build();
        } catch (IllegalArgumentException | IllegalStateException e10) {
            throw ParserException.createForMalformedManifest(null, e10);
        }
    }

    @Nullable
    private static MediaDescription.Builder parseMediaDescriptionLine(String str) throws ParserException {
        Matcher matcher = MEDIA_DESCRIPTION_PATTERN.matcher(str);
        if (!matcher.matches()) {
            throw ParserException.createForMalformedManifest("Malformed SDP media description line: " + str, null);
        }
        try {
            return new MediaDescription.Builder((String) Assertions.checkNotNull(matcher.group(1)), Integer.parseInt((String) Assertions.checkNotNull(matcher.group(2))), (String) Assertions.checkNotNull(matcher.group(3)), Integer.parseInt((String) Assertions.checkNotNull(matcher.group(4))));
        } catch (NumberFormatException e10) {
            Log.w(TAG, "Malformed SDP media description line: " + str, e10);
            return null;
        }
    }
}
