LINE.apk(点击下载) / TtmlDecoder.java


package ai.clova.cic.clientlib.exoplayer2.text.ttml;

import ai.clova.cic.clientlib.exoplayer2.C;
import ai.clova.cic.clientlib.exoplayer2.text.SimpleSubtitleDecoder;
import ai.clova.cic.clientlib.exoplayer2.text.Subtitle;
import ai.clova.cic.clientlib.exoplayer2.text.SubtitleDecoderException;
import ai.clova.cic.clientlib.exoplayer2.util.ColorParser;
import ai.clova.cic.clientlib.exoplayer2.util.Log;
import ai.clova.cic.clientlib.exoplayer2.util.Util;
import ai.clova.cic.clientlib.exoplayer2.util.XmlPullParserUtil;
import android.text.Layout;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.ArrayDeque;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;

public final class TtmlDecoder extends SimpleSubtitleDecoder {
    private static final String ATTR_BEGIN = "begin";
    private static final String ATTR_DURATION = "dur";
    private static final String ATTR_END = "end";
    private static final String ATTR_IMAGE = "backgroundImage";
    private static final String ATTR_REGION = "region";
    private static final String ATTR_STYLE = "style";
    private static final Pattern CELL_RESOLUTION = Pattern.compile("^(\\d+) (\\d+)$");
    private static final Pattern CLOCK_TIME = Pattern.compile("^([0-9][0-9]+):([0-9][0-9]):([0-9][0-9])(?:(\\.[0-9]+)|:([0-9][0-9])(?:\\.([0-9]+))?)?$");
    private static final CellResolution DEFAULT_CELL_RESOLUTION = new CellResolution(32, 15);
    private static final FrameAndTickRate DEFAULT_FRAME_AND_TICK_RATE = new FrameAndTickRate(30.0f, 1, 1);
    private static final int DEFAULT_FRAME_RATE = 30;
    private static final Pattern FONT_SIZE = Pattern.compile("^(([0-9]*.)?[0-9]+)(px|em|%)$");
    private static final Pattern OFFSET_TIME = Pattern.compile("^([0-9]+(?:\\.[0-9]+)?)(h|m|s|ms|f|t)$");
    private static final Pattern PERCENTAGE_COORDINATES = Pattern.compile("^(\\d+\\.?\\d*?)% (\\d+\\.?\\d*?)%$");
    private static final Pattern PIXEL_COORDINATES = Pattern.compile("^(\\d+\\.?\\d*?)px (\\d+\\.?\\d*?)px$");
    private static final String TAG = "TtmlDecoder";
    private static final String TTP = "http://www.w3.org/ns/ttml#parameter";
    private final XmlPullParserFactory xmlParserFactory;

    public static final class CellResolution {
        public final int columns;
        public final int rows;

        public CellResolution(int i14, int i15) {
            this.columns = i14;
            this.rows = i15;
        }
    }

    public static final class FrameAndTickRate {
        public final float effectiveFrameRate;
        public final int subFrameRate;
        public final int tickRate;

        public FrameAndTickRate(float f14, int i14, int i15) {
            this.effectiveFrameRate = f14;
            this.subFrameRate = i14;
            this.tickRate = i15;
        }
    }

    public static final class TtsExtent {
        public final int height;
        public final int width;

        public TtsExtent(int i14, int i15) {
            this.width = i14;
            this.height = i15;
        }
    }

    public TtmlDecoder() {
        super(TAG);
        try {
            XmlPullParserFactory newInstance = XmlPullParserFactory.newInstance();
            this.xmlParserFactory = newInstance;
            newInstance.setNamespaceAware(true);
        } catch (XmlPullParserException e14) {
            throw new RuntimeException("Couldn't create XmlPullParserFactory instance", e14);
        }
    }

    private TtmlStyle createIfNull(TtmlStyle ttmlStyle) {
        return ttmlStyle == null ? new TtmlStyle() : ttmlStyle;
    }

    private static boolean isSupportedTag(String str) {
        return str.equals("tt") || str.equals("head") || str.equals("body") || str.equals("div") || str.equals("p") || str.equals("span") || str.equals("br") || str.equals("style") || str.equals("styling") || str.equals("layout") || str.equals("region") || str.equals("metadata") || str.equals(TtmlNode.TAG_IMAGE) || str.equals("data") || str.equals(TtmlNode.TAG_INFORMATION);
    }

    private CellResolution parseCellResolution(XmlPullParser xmlPullParser, CellResolution cellResolution) throws SubtitleDecoderException {
        StringBuilder sb4;
        String attributeValue = xmlPullParser.getAttributeValue(TTP, "cellResolution");
        if (attributeValue == null) {
            return cellResolution;
        }
        Matcher matcher = CELL_RESOLUTION.matcher(attributeValue);
        if (!matcher.matches()) {
            sb4 = new StringBuilder();
        } else {
            try {
                int parseInt = Integer.parseInt(matcher.group(1));
                int parseInt2 = Integer.parseInt(matcher.group(2));
                if (parseInt != 0 && parseInt2 != 0) {
                    return new CellResolution(parseInt, parseInt2);
                }
                throw new SubtitleDecoderException("Invalid cell resolution " + parseInt + " " + parseInt2);
            } catch (NumberFormatException unused) {
                sb4 = new StringBuilder();
            }
        }
        sb4.append("Ignoring malformed cell resolution: ");
        sb4.append(attributeValue);
        Log.w(TAG, sb4.toString());
        return cellResolution;
    }

    private static void parseFontSize(String str, TtmlStyle ttmlStyle) throws SubtitleDecoderException {
        Matcher matcher;
        String[] split = Util.split(str, "\\s+");
        if (split.length == 1) {
            matcher = FONT_SIZE.matcher(str);
        } else if (split.length == 2) {
            matcher = FONT_SIZE.matcher(split[1]);
            Log.w(TAG, "Multiple values in fontSize attribute. Picking the second value for vertical font size and ignoring the first.");
        } else {
            throw new SubtitleDecoderException("Invalid number of entries for fontSize: " + split.length + ".");
        }
        if (matcher.matches()) {
            String group = matcher.group(3);
            Objects.requireNonNull(group);
            char c14 = 65535;
            switch (group.hashCode()) {
                case 37:
                    if (group.equals("%")) {
                        c14 = 0;
                        break;
                    }
                    break;
                case 3240:
                    if (group.equals("em")) {
                        c14 = 1;
                        break;
                    }
                    break;
                case 3592:
                    if (group.equals("px")) {
                        c14 = 2;
                        break;
                    }
                    break;
            }
            switch (c14) {
                case 0:
                    ttmlStyle.setFontSizeUnit(3);
                    break;
                case 1:
                    ttmlStyle.setFontSizeUnit(2);
                    break;
                case 2:
                    ttmlStyle.setFontSizeUnit(1);
                    break;
                default:
                    throw new SubtitleDecoderException("Invalid unit for fontSize: '" + group + "'.");
            }
            ttmlStyle.setFontSize(Float.valueOf(matcher.group(1)).floatValue());
            return;
        }
        throw new SubtitleDecoderException("Invalid expression for fontSize: '" + str + "'.");
    }

    private FrameAndTickRate parseFrameAndTickRates(XmlPullParser xmlPullParser) throws SubtitleDecoderException {
        String attributeValue = xmlPullParser.getAttributeValue(TTP, "frameRate");
        int parseInt = attributeValue != null ? Integer.parseInt(attributeValue) : 30;
        float f14 = 1.0f;
        String attributeValue2 = xmlPullParser.getAttributeValue(TTP, "frameRateMultiplier");
        if (attributeValue2 != null) {
            String[] split = Util.split(attributeValue2, " ");
            if (split.length == 2) {
                f14 = ((float) Integer.parseInt(split[0])) / ((float) Integer.parseInt(split[1]));
            } else {
                throw new SubtitleDecoderException("frameRateMultiplier doesn't have 2 parts");
            }
        }
        FrameAndTickRate frameAndTickRate = DEFAULT_FRAME_AND_TICK_RATE;
        int i14 = frameAndTickRate.subFrameRate;
        String attributeValue3 = xmlPullParser.getAttributeValue(TTP, "subFrameRate");
        if (attributeValue3 != null) {
            i14 = Integer.parseInt(attributeValue3);
        }
        int i15 = frameAndTickRate.tickRate;
        String attributeValue4 = xmlPullParser.getAttributeValue(TTP, "tickRate");
        if (attributeValue4 != null) {
            i15 = Integer.parseInt(attributeValue4);
        }
        return new FrameAndTickRate(((float) parseInt) * f14, i14, i15);
    }

    private Map<String, TtmlStyle> parseHeader(XmlPullParser xmlPullParser, Map<String, TtmlStyle> map, CellResolution cellResolution, TtsExtent ttsExtent, Map<String, TtmlRegion> map2, Map<String, String> map3) throws IOException, XmlPullParserException {
        do {
            xmlPullParser.next();
            if (XmlPullParserUtil.isStartTag(xmlPullParser, "style")) {
                String attributeValue = XmlPullParserUtil.getAttributeValue(xmlPullParser, "style");
                TtmlStyle parseStyleAttributes = parseStyleAttributes(xmlPullParser, new TtmlStyle());
                if (attributeValue != null) {
                    for (String str : parseStyleIds(attributeValue)) {
                        parseStyleAttributes.chain(map.get(str));
                    }
                }
                if (parseStyleAttributes.getId() != null) {
                    map.put(parseStyleAttributes.getId(), parseStyleAttributes);
                }
            } else if (XmlPullParserUtil.isStartTag(xmlPullParser, "region")) {
                TtmlRegion parseRegionAttributes = parseRegionAttributes(xmlPullParser, cellResolution, ttsExtent);
                if (parseRegionAttributes != null) {
                    map2.put(parseRegionAttributes.f4681id, parseRegionAttributes);
                }
            } else if (XmlPullParserUtil.isStartTag(xmlPullParser, "metadata")) {
                parseMetadata(xmlPullParser, map3);
            }
        } while (!XmlPullParserUtil.isEndTag(xmlPullParser, "head"));
        return map;
    }

    private void parseMetadata(XmlPullParser xmlPullParser, Map<String, String> map) throws IOException, XmlPullParserException {
        String attributeValue;
        do {
            xmlPullParser.next();
            if (XmlPullParserUtil.isStartTag(xmlPullParser, TtmlNode.TAG_IMAGE) && (attributeValue = XmlPullParserUtil.getAttributeValue(xmlPullParser, TtmlNode.ATTR_ID)) != null) {
                map.put(attributeValue, xmlPullParser.nextText());
            }
        } while (!XmlPullParserUtil.isEndTag(xmlPullParser, "metadata"));
    }

    /* JADX INFO: Can't fix incorrect switch cases order, some code will duplicate */
    private TtmlNode parseNode(XmlPullParser xmlPullParser, TtmlNode ttmlNode, Map<String, TtmlRegion> map, FrameAndTickRate frameAndTickRate) throws SubtitleDecoderException {
        long j14;
        long j15;
        char c14;
        int attributeCount = xmlPullParser.getAttributeCount();
        TtmlStyle parseStyleAttributes = parseStyleAttributes(xmlPullParser, null);
        String[] strArr = null;
        String str = null;
        String str2 = "";
        long j16 = C.TIME_UNSET;
        long j17 = C.TIME_UNSET;
        long j18 = C.TIME_UNSET;
        for (int i14 = 0; i14 < attributeCount; i14++) {
            String attributeName = xmlPullParser.getAttributeName(i14);
            String attributeValue = xmlPullParser.getAttributeValue(i14);
            Objects.requireNonNull(attributeName);
            switch (attributeName.hashCode()) {
                case -934795532:
                    if (attributeName.equals("region")) {
                        c14 = 0;
                        break;
                    }
                    c14 = 65535;
                    break;
                case 99841:
                    if (attributeName.equals(ATTR_DURATION)) {
                        c14 = 1;
                        break;
                    }
                    c14 = 65535;
                    break;
                case 100571:
                    if (attributeName.equals("end")) {
                        c14 = 2;
                        break;
                    }
                    c14 = 65535;
                    break;
                case 93616297:
                    if (attributeName.equals(ATTR_BEGIN)) {
                        c14 = 3;
                        break;
                    }
                    c14 = 65535;
                    break;
                case 109780401:
                    if (attributeName.equals("style")) {
                        c14 = 4;
                        break;
                    }
                    c14 = 65535;
                    break;
                case 1292595405:
                    if (attributeName.equals(ATTR_IMAGE)) {
                        c14 = 5;
                        break;
                    }
                    c14 = 65535;
                    break;
                default:
                    c14 = 65535;
                    break;
            }
            switch (c14) {
                case 0:
                    if (map.containsKey(attributeValue)) {
                        str2 = attributeValue;
                        continue;
                    }
                case 1:
                    j18 = parseTimeExpression(attributeValue, frameAndTickRate);
                    break;
                case 2:
                    j17 = parseTimeExpression(attributeValue, frameAndTickRate);
                    break;
                case 3:
                    j16 = parseTimeExpression(attributeValue, frameAndTickRate);
                    break;
                case 4:
                    String[] parseStyleIds = parseStyleIds(attributeValue);
                    if (parseStyleIds.length > 0) {
                        strArr = parseStyleIds;
                        break;
                    }
                    break;
                case 5:
                    if (attributeValue.startsWith("#")) {
                        str = attributeValue.substring(1);
                        break;
                    }
                    break;
            }
        }
        if (ttmlNode != null) {
            long j19 = ttmlNode.startTimeUs;
            j14 = C.TIME_UNSET;
            if (j19 != C.TIME_UNSET) {
                if (j16 != C.TIME_UNSET) {
                    j16 += j19;
                }
                if (j17 != C.TIME_UNSET) {
                    j17 += j19;
                }
            }
        } else {
            j14 = C.TIME_UNSET;
        }
        if (j17 == j14) {
            if (j18 != j14) {
                j15 = j16 + j18;
            } else if (ttmlNode != null) {
                long j24 = ttmlNode.endTimeUs;
                if (j24 != j14) {
                    j15 = j24;
                }
            }
            return TtmlNode.buildNode(xmlPullParser.getName(), j16, j15, parseStyleAttributes, strArr, str2, str);
        }
        j15 = j17;
        return TtmlNode.buildNode(xmlPullParser.getName(), j16, j15, parseStyleAttributes, strArr, str2, str);
    }

    /* JADX WARNING: Removed duplicated region for block: B:26:0x0090  */
    /* JADX WARNING: Removed duplicated region for block: B:55:0x013f  */
    private TtmlRegion parseRegionAttributes(XmlPullParser xmlPullParser, CellResolution cellResolution, TtsExtent ttsExtent) {
        String str;
        String str2;
        StringBuilder sb4;
        float f14;
        float f15;
        String attributeValue;
        float f16;
        float f17;
        int i14;
        float f18;
        CellResolution cellResolution2;
        String attributeValue2 = XmlPullParserUtil.getAttributeValue(xmlPullParser, TtmlNode.ATTR_ID);
        if (attributeValue2 == null) {
            return null;
        }
        String attributeValue3 = XmlPullParserUtil.getAttributeValue(xmlPullParser, TtmlNode.ATTR_TTS_ORIGIN);
        if (attributeValue3 != null) {
            Pattern pattern = PERCENTAGE_COORDINATES;
            Matcher matcher = pattern.matcher(attributeValue3);
            Pattern pattern2 = PIXEL_COORDINATES;
            Matcher matcher2 = pattern2.matcher(attributeValue3);
            String str3 = "Ignoring region with malformed origin: ";
            if (matcher.matches()) {
                try {
                    float parseFloat = Float.parseFloat(matcher.group(1)) / 100.0f;
                    f14 = Float.parseFloat(matcher.group(2)) / 100.0f;
                    f15 = parseFloat;
                    attributeValue = XmlPullParserUtil.getAttributeValue(xmlPullParser, TtmlNode.ATTR_TTS_EXTENT);
                    if (attributeValue == null) {
                        Matcher matcher3 = pattern.matcher(attributeValue);
                        Matcher matcher4 = pattern2.matcher(attributeValue);
                        str3 = "Ignoring region with malformed extent: ";
                        if (matcher3.matches()) {
                            try {
                                f17 = Float.parseFloat(matcher3.group(1)) / 100.0f;
                                f16 = Float.parseFloat(matcher3.group(2)) / 100.0f;
                            } catch (NumberFormatException unused) {
                                sb4 = new StringBuilder();
                                sb4.append(str3);
                                sb4.append(attributeValue3);
                                str = sb4.toString();
                                Log.w(TAG, str);
                                return null;
                            }
                        } else if (!matcher4.matches()) {
                            sb4 = new StringBuilder();
                            str2 = "Ignoring region with unsupported extent: ";
                            sb4.append(str2);
                        } else if (ttsExtent == null) {
                            sb4 = new StringBuilder();
                            sb4.append("Ignoring region with missing tts:extent: ");
                        } else {
                            try {
                                int parseInt = Integer.parseInt(matcher4.group(1));
                                int parseInt2 = Integer.parseInt(matcher4.group(2));
                                f17 = ((float) parseInt) / ((float) ttsExtent.width);
                                f16 = ((float) parseInt2) / ((float) ttsExtent.height);
                            } catch (NumberFormatException unused2) {
                                sb4 = new StringBuilder();
                                sb4.append(str3);
                                sb4.append(attributeValue3);
                                str = sb4.toString();
                                Log.w(TAG, str);
                                return null;
                            }
                        }
                        String attributeValue4 = XmlPullParserUtil.getAttributeValue(xmlPullParser, TtmlNode.ATTR_TTS_DISPLAY_ALIGN);
                        if (attributeValue4 != null) {
                            String lowerInvariant = Util.toLowerInvariant(attributeValue4);
                            Objects.requireNonNull(lowerInvariant);
                            if (lowerInvariant.equals(TtmlNode.CENTER)) {
                                cellResolution2 = cellResolution;
                                f18 = f14 + (f16 / 2.0f);
                                i14 = 1;
                            } else if (lowerInvariant.equals("after")) {
                                cellResolution2 = cellResolution;
                                f18 = f14 + f16;
                                i14 = 2;
                            }
                            return new TtmlRegion(attributeValue2, f15, f18, 0, i14, f17, f16, 1, 1.0f / ((float) cellResolution2.rows));
                        }
                        cellResolution2 = cellResolution;
                        i14 = 0;
                        f18 = f14;
                        return new TtmlRegion(attributeValue2, f15, f18, 0, i14, f17, f16, 1, 1.0f / ((float) cellResolution2.rows));
                    }
                    str = "Ignoring region without an extent";
                } catch (NumberFormatException unused3) {
                    sb4 = new StringBuilder();
                    sb4.append(str3);
                    sb4.append(attributeValue3);
                    str = sb4.toString();
                    Log.w(TAG, str);
                    return null;
                }
            } else if (!matcher2.matches()) {
                sb4 = new StringBuilder();
                str2 = "Ignoring region with unsupported origin: ";
                sb4.append(str2);
            } else if (ttsExtent == null) {
                sb4 = new StringBuilder();
                sb4.append("Ignoring region with missing tts:extent: ");
            } else {
                try {
                    int parseInt3 = Integer.parseInt(matcher2.group(1));
                    int parseInt4 = Integer.parseInt(matcher2.group(2));
                    f15 = ((float) parseInt3) / ((float) ttsExtent.width);
                    f14 = ((float) parseInt4) / ((float) ttsExtent.height);
                    attributeValue = XmlPullParserUtil.getAttributeValue(xmlPullParser, TtmlNode.ATTR_TTS_EXTENT);
                    if (attributeValue == null) {
                    }
                } catch (NumberFormatException unused4) {
                    sb4 = new StringBuilder();
                    sb4.append(str3);
                    sb4.append(attributeValue3);
                    str = sb4.toString();
                    Log.w(TAG, str);
                    return null;
                }
            }
            sb4.append(attributeValue3);
            str = sb4.toString();
        } else {
            str = "Ignoring region without an origin";
        }
        Log.w(TAG, str);
        return null;
    }

    /* JADX INFO: Can't fix incorrect switch cases order, some code will duplicate */
    /* JADX WARNING: Code restructure failed: missing block: B:57:0x0112, code lost:
        if (r3.equals(ai.clova.cic.clientlib.exoplayer2.text.ttml.TtmlNode.LINETHROUGH) == false) goto L_0x010a;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:76:0x0178, code lost:
        if (r3.equals(ai.clova.cic.clientlib.exoplayer2.text.ttml.TtmlNode.START) == false) goto L_0x0170;
     */
    private TtmlStyle parseStyleAttributes(XmlPullParser xmlPullParser, TtmlStyle ttmlStyle) {
        char c14;
        TtmlStyle ttmlStyle2;
        Layout.Alignment alignment;
        StringBuilder sb4;
        String str;
        int attributeCount = xmlPullParser.getAttributeCount();
        for (int i14 = 0; i14 < attributeCount; i14++) {
            String attributeValue = xmlPullParser.getAttributeValue(i14);
            String attributeName = xmlPullParser.getAttributeName(i14);
            Objects.requireNonNull(attributeName);
            char c15 = 4;
            char c16 = 3;
            switch (attributeName.hashCode()) {
                case -1550943582:
                    if (attributeName.equals(TtmlNode.ATTR_TTS_FONT_STYLE)) {
                        c14 = 0;
                        break;
                    }
                    c14 = 65535;
                    break;
                case -1224696685:
                    if (attributeName.equals(TtmlNode.ATTR_TTS_FONT_FAMILY)) {
                        c14 = 1;
                        break;
                    }
                    c14 = 65535;
                    break;
                case -1065511464:
                    if (attributeName.equals(TtmlNode.ATTR_TTS_TEXT_ALIGN)) {
                        c14 = 2;
                        break;
                    }
                    c14 = 65535;
                    break;
                case -879295043:
                    if (attributeName.equals(TtmlNode.ATTR_TTS_TEXT_DECORATION)) {
                        c14 = 3;
                        break;
                    }
                    c14 = 65535;
                    break;
                case -734428249:
                    if (attributeName.equals(TtmlNode.ATTR_TTS_FONT_WEIGHT)) {
                        c14 = 4;
                        break;
                    }
                    c14 = 65535;
                    break;
                case 3355:
                    if (attributeName.equals(TtmlNode.ATTR_ID)) {
                        c14 = 5;
                        break;
                    }
                    c14 = 65535;
                    break;
                case 94842723:
                    if (attributeName.equals(TtmlNode.ATTR_TTS_COLOR)) {
                        c14 = 6;
                        break;
                    }
                    c14 = 65535;
                    break;
                case 365601008:
                    if (attributeName.equals(TtmlNode.ATTR_TTS_FONT_SIZE)) {
                        c14 = 7;
                        break;
                    }
                    c14 = 65535;
                    break;
                case 1287124693:
                    if (attributeName.equals(TtmlNode.ATTR_TTS_BACKGROUND_COLOR)) {
                        c14 = '\b';
                        break;
                    }
                    c14 = 65535;
                    break;
                default:
                    c14 = 65535;
                    break;
            }
            switch (c14) {
                case 0:
                    ttmlStyle = createIfNull(ttmlStyle).setItalic(TtmlNode.ITALIC.equalsIgnoreCase(attributeValue));
                    continue;
                case 1:
                    ttmlStyle = createIfNull(ttmlStyle).setFontFamily(attributeValue);
                    continue;
                case 2:
                    String lowerInvariant = Util.toLowerInvariant(attributeValue);
                    Objects.requireNonNull(lowerInvariant);
                    switch (lowerInvariant.hashCode()) {
                        case -1364013995:
                            if (lowerInvariant.equals(TtmlNode.CENTER)) {
                                c15 = 0;
                                break;
                            }
                            c15 = 65535;
                            break;
                        case 100571:
                            if (lowerInvariant.equals("end")) {
                                c15 = 1;
                                break;
                            }
                            c15 = 65535;
                            break;
                        case 3317767:
                            if (lowerInvariant.equals(TtmlNode.LEFT)) {
                                c15 = 2;
                                break;
                            }
                            c15 = 65535;
                            break;
                        case 108511772:
                            if (lowerInvariant.equals(TtmlNode.RIGHT)) {
                                c15 = 3;
                                break;
                            }
                            c15 = 65535;
                            break;
                        case 109757538:
                            break;
                        default:
                            c15 = 65535;
                            break;
                    }
                    switch (c15) {
                        case 0:
                            ttmlStyle2 = createIfNull(ttmlStyle);
                            alignment = Layout.Alignment.ALIGN_CENTER;
                            ttmlStyle = ttmlStyle2.setTextAlign(alignment);
                            continue;
                        case 1:
                        case 3:
                            ttmlStyle2 = createIfNull(ttmlStyle);
                            alignment = Layout.Alignment.ALIGN_OPPOSITE;
                            ttmlStyle = ttmlStyle2.setTextAlign(alignment);
                            continue;
                        case 2:
                        case 4:
                            ttmlStyle2 = createIfNull(ttmlStyle);
                            alignment = Layout.Alignment.ALIGN_NORMAL;
                            ttmlStyle = ttmlStyle2.setTextAlign(alignment);
                            continue;
                    }
                    break;
                case 3:
                    String lowerInvariant2 = Util.toLowerInvariant(attributeValue);
                    Objects.requireNonNull(lowerInvariant2);
                    switch (lowerInvariant2.hashCode()) {
                        case -1461280213:
                            if (lowerInvariant2.equals(TtmlNode.NO_UNDERLINE)) {
                                c16 = 0;
                                break;
                            }
                            c16 = 65535;
                            break;
                        case -1026963764:
                            if (lowerInvariant2.equals(TtmlNode.UNDERLINE)) {
                                c16 = 1;
                                break;
                            }
                            c16 = 65535;
                            break;
                        case 913457136:
                            if (lowerInvariant2.equals(TtmlNode.NO_LINETHROUGH)) {
                                c16 = 2;
                                break;
                            }
                            c16 = 65535;
                            break;
                        case 1679736913:
                            break;
                        default:
                            c16 = 65535;
                            break;
                    }
                    switch (c16) {
                        case 0:
                            ttmlStyle = createIfNull(ttmlStyle).setUnderline(false);
                            continue;
                        case 1:
                            ttmlStyle = createIfNull(ttmlStyle).setUnderline(true);
                            continue;
                        case 2:
                            ttmlStyle = createIfNull(ttmlStyle).setLinethrough(false);
                            continue;
                        case 3:
                            ttmlStyle = createIfNull(ttmlStyle).setLinethrough(true);
                            continue;
                            continue;
                    }
                    break;
                case 4:
                    ttmlStyle = createIfNull(ttmlStyle).setBold(TtmlNode.BOLD.equalsIgnoreCase(attributeValue));
                    continue;
                case 5:
                    if ("style".equals(xmlPullParser.getName())) {
                        ttmlStyle = createIfNull(ttmlStyle).setId(attributeValue);
                    } else {
                        continue;
                    }
                case 6:
                    ttmlStyle = createIfNull(ttmlStyle);
                    try {
                        ttmlStyle.setFontColor(ColorParser.parseTtmlColor(attributeValue));
                        continue;
                    } catch (IllegalArgumentException unused) {
                        sb4 = new StringBuilder();
                        str = "Failed parsing color value: ";
                        break;
                    }
                case 7:
                    try {
                        ttmlStyle = createIfNull(ttmlStyle);
                        parseFontSize(attributeValue, ttmlStyle);
                        continue;
                    } catch (SubtitleDecoderException unused2) {
                        sb4 = new StringBuilder();
                        str = "Failed parsing fontSize value: ";
                        break;
                    }
                case '\b':
                    ttmlStyle = createIfNull(ttmlStyle);
                    try {
                        ttmlStyle.setBackgroundColor(ColorParser.parseTtmlColor(attributeValue));
                        continue;
                    } catch (IllegalArgumentException unused3) {
                        sb4 = new StringBuilder();
                        str = "Failed parsing background value: ";
                        break;
                    }
                default:
            }
            sb4.append(str);
            sb4.append(attributeValue);
            Log.w(TAG, sb4.toString());
        }
        return ttmlStyle;
    }

    private String[] parseStyleIds(String str) {
        String trim = str.trim();
        return trim.isEmpty() ? new String[0] : Util.split(trim, "\\s+");
    }

    /* JADX INFO: Can't fix incorrect switch cases order, some code will duplicate */
    /* JADX WARNING: Code restructure failed: missing block: B:21:0x009e, code lost:
        if (r13.equals("ms") == false) goto L_0x0096;
     */
    private static long parseTimeExpression(String str, FrameAndTickRate frameAndTickRate) throws SubtitleDecoderException {
        double d14;
        double d15;
        Matcher matcher = CLOCK_TIME.matcher(str);
        char c14 = 4;
        if (matcher.matches()) {
            double parseLong = ((double) (Long.parseLong(matcher.group(1)) * 3600)) + ((double) (Long.parseLong(matcher.group(2)) * 60)) + ((double) Long.parseLong(matcher.group(3)));
            String group = matcher.group(4);
            double d16 = 0.0d;
            double parseDouble = parseLong + (group != null ? Double.parseDouble(group) : 0.0d);
            String group2 = matcher.group(5);
            double parseLong2 = parseDouble + (group2 != null ? (double) (((float) Long.parseLong(group2)) / frameAndTickRate.effectiveFrameRate) : 0.0d);
            String group3 = matcher.group(6);
            if (group3 != null) {
                d16 = (((double) Long.parseLong(group3)) / ((double) frameAndTickRate.subFrameRate)) / ((double) frameAndTickRate.effectiveFrameRate);
            }
            return (long) ((parseLong2 + d16) * 1000000.0d);
        }
        Matcher matcher2 = OFFSET_TIME.matcher(str);
        if (matcher2.matches()) {
            double parseDouble2 = Double.parseDouble(matcher2.group(1));
            String group4 = matcher2.group(2);
            Objects.requireNonNull(group4);
            switch (group4.hashCode()) {
                case 102:
                    if (group4.equals("f")) {
                        c14 = 0;
                        break;
                    }
                    c14 = 65535;
                    break;
                case 104:
                    if (group4.equals("h")) {
                        c14 = 1;
                        break;
                    }
                    c14 = 65535;
                    break;
                case 109:
                    if (group4.equals("m")) {
                        c14 = 2;
                        break;
                    }
                    c14 = 65535;
                    break;
                case 116:
                    if (group4.equals("t")) {
                        c14 = 3;
                        break;
                    }
                    c14 = 65535;
                    break;
                case 3494:
                    break;
                default:
                    c14 = 65535;
                    break;
            }
            switch (c14) {
                case 0:
                    d14 = (double) frameAndTickRate.effectiveFrameRate;
                    parseDouble2 /= d14;
                    return (long) (parseDouble2 * 1000000.0d);
                case 1:
                    d15 = 3600.0d;
                    parseDouble2 *= d15;
                    return (long) (parseDouble2 * 1000000.0d);
                case 2:
                    d15 = 60.0d;
                    parseDouble2 *= d15;
                    return (long) (parseDouble2 * 1000000.0d);
                case 3:
                    d14 = (double) frameAndTickRate.tickRate;
                    parseDouble2 /= d14;
                    return (long) (parseDouble2 * 1000000.0d);
                case 4:
                    d14 = 1000.0d;
                    parseDouble2 /= d14;
                    return (long) (parseDouble2 * 1000000.0d);
                default:
                    return (long) (parseDouble2 * 1000000.0d);
            }
        } else {
            throw new SubtitleDecoderException("Malformed time expression: " + str);
        }
    }

    private TtsExtent parseTtsExtent(XmlPullParser xmlPullParser) {
        StringBuilder sb4;
        String str;
        String attributeValue = XmlPullParserUtil.getAttributeValue(xmlPullParser, TtmlNode.ATTR_TTS_EXTENT);
        if (attributeValue == null) {
            return null;
        }
        Matcher matcher = PIXEL_COORDINATES.matcher(attributeValue);
        if (!matcher.matches()) {
            sb4 = new StringBuilder();
            str = "Ignoring non-pixel tts extent: ";
        } else {
            try {
                return new TtsExtent(Integer.parseInt(matcher.group(1)), Integer.parseInt(matcher.group(2)));
            } catch (NumberFormatException unused) {
                sb4 = new StringBuilder();
                str = "Ignoring malformed tts extent: ";
            }
        }
        sb4.append(str);
        sb4.append(attributeValue);
        Log.w(TAG, sb4.toString());
        return null;
    }

    @Override // ai.clova.cic.clientlib.exoplayer2.text.SimpleSubtitleDecoder
    public Subtitle decode(byte[] bArr, int i14, boolean z14) throws SubtitleDecoderException {
        TtmlSubtitle ttmlSubtitle;
        FrameAndTickRate frameAndTickRate;
        try {
            XmlPullParser newPullParser = this.xmlParserFactory.newPullParser();
            Map<String, TtmlStyle> hashMap = new HashMap<>();
            HashMap hashMap2 = new HashMap();
            Map<String, String> hashMap3 = new HashMap<>();
            TtsExtent ttsExtent = null;
            hashMap2.put("", new TtmlRegion(null));
            newPullParser.setInput(new ByteArrayInputStream(bArr, 0, i14), null);
            ArrayDeque arrayDeque = new ArrayDeque();
            FrameAndTickRate frameAndTickRate2 = DEFAULT_FRAME_AND_TICK_RATE;
            CellResolution cellResolution = DEFAULT_CELL_RESOLUTION;
            int i15 = 0;
            TtmlSubtitle ttmlSubtitle2 = null;
            for (int eventType = newPullParser.getEventType(); eventType != 1; eventType = newPullParser.getEventType()) {
                TtmlNode ttmlNode = (TtmlNode) arrayDeque.peek();
                if (i15 == 0) {
                    String name = newPullParser.getName();
                    if (eventType == 2) {
                        if ("tt".equals(name)) {
                            frameAndTickRate2 = parseFrameAndTickRates(newPullParser);
                            cellResolution = parseCellResolution(newPullParser, DEFAULT_CELL_RESOLUTION);
                            ttsExtent = parseTtsExtent(newPullParser);
                        }
                        if (!isSupportedTag(name)) {
                            Log.i(TAG, "Ignoring unsupported tag: " + newPullParser.getName());
                            ttmlSubtitle = ttmlSubtitle2;
                            frameAndTickRate = frameAndTickRate2;
                        } else {
                            if ("head".equals(name)) {
                                ttmlSubtitle = ttmlSubtitle2;
                                frameAndTickRate = frameAndTickRate2;
                                parseHeader(newPullParser, hashMap, cellResolution, ttsExtent, hashMap2, hashMap3);
                            } else {
                                ttmlSubtitle = ttmlSubtitle2;
                                frameAndTickRate = frameAndTickRate2;
                                try {
                                    TtmlNode parseNode = parseNode(newPullParser, ttmlNode, hashMap2, frameAndTickRate);
                                    arrayDeque.push(parseNode);
                                    if (ttmlNode != null) {
                                        ttmlNode.addChild(parseNode);
                                    }
                                } catch (SubtitleDecoderException e14) {
                                    Log.w(TAG, "Suppressing parser error", e14);
                                }
                            }
                            frameAndTickRate2 = frameAndTickRate;
                            ttsExtent = ttsExtent;
                            cellResolution = cellResolution;
                        }
                        frameAndTickRate2 = frameAndTickRate;
                        ttsExtent = ttsExtent;
                        cellResolution = cellResolution;
                    } else {
                        ttmlSubtitle = ttmlSubtitle2;
                        if (eventType == 4) {
                            ttmlNode.addChild(TtmlNode.buildTextNode(newPullParser.getText()));
                        } else if (eventType == 3) {
                            ttmlSubtitle2 = newPullParser.getName().equals("tt") ? new TtmlSubtitle((TtmlNode) arrayDeque.peek(), hashMap, hashMap2, hashMap3) : ttmlSubtitle;
                            arrayDeque.pop();
                            newPullParser.next();
                        }
                    }
                    ttmlSubtitle2 = ttmlSubtitle;
                    newPullParser.next();
                } else {
                    ttmlSubtitle = ttmlSubtitle2;
                    if (eventType != 2) {
                        if (eventType == 3) {
                            i15--;
                        }
                        ttmlSubtitle2 = ttmlSubtitle;
                        newPullParser.next();
                    }
                }
                i15++;
                ttmlSubtitle2 = ttmlSubtitle;
                newPullParser.next();
            }
            return ttmlSubtitle2;
        } catch (XmlPullParserException e15) {
            throw new SubtitleDecoderException("Unable to decode source", e15);
        } catch (IOException e16) {
            throw new IllegalStateException("Unexpected error when reading input.", e16);
        }
    }
}