Add decompiled APK source code (JADX)

- 28,932 files
- Full Java source code
- Smali files
- Resources

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-02-18 14:52:23 -08:00
parent cc210a65ea
commit f9d20bb3fc
26991 changed files with 2541449 additions and 0 deletions

View File

@@ -0,0 +1,177 @@
package com.mbridge.msdk.playercommon.exoplayer2.text.tx3g;
import android.text.SpannableStringBuilder;
import android.text.style.ForegroundColorSpan;
import android.text.style.StyleSpan;
import android.text.style.TypefaceSpan;
import android.text.style.UnderlineSpan;
import com.applovin.exoplayer2.common.base.Ascii;
import com.mbridge.msdk.playercommon.exoplayer2.C;
import com.mbridge.msdk.playercommon.exoplayer2.text.Cue;
import com.mbridge.msdk.playercommon.exoplayer2.text.SimpleSubtitleDecoder;
import com.mbridge.msdk.playercommon.exoplayer2.text.Subtitle;
import com.mbridge.msdk.playercommon.exoplayer2.text.SubtitleDecoderException;
import com.mbridge.msdk.playercommon.exoplayer2.util.ParsableByteArray;
import com.mbridge.msdk.playercommon.exoplayer2.util.Util;
import java.nio.charset.Charset;
import java.util.List;
/* loaded from: classes4.dex */
public final class Tx3gDecoder extends SimpleSubtitleDecoder {
private static final char BOM_UTF16_BE = 65279;
private static final char BOM_UTF16_LE = 65534;
private static final int DEFAULT_COLOR = -1;
private static final int DEFAULT_FONT_FACE = 0;
private static final String DEFAULT_FONT_FAMILY = "sans-serif";
private static final float DEFAULT_VERTICAL_PLACEMENT = 0.85f;
private static final int FONT_FACE_BOLD = 1;
private static final int FONT_FACE_ITALIC = 2;
private static final int FONT_FACE_UNDERLINE = 4;
private static final int SIZE_ATOM_HEADER = 8;
private static final int SIZE_BOM_UTF16 = 2;
private static final int SIZE_SHORT = 2;
private static final int SIZE_STYLE_RECORD = 12;
private static final int SPAN_PRIORITY_HIGH = 0;
private static final int SPAN_PRIORITY_LOW = 16711680;
private static final String TX3G_SERIF = "Serif";
private static final int TYPE_STYL = Util.getIntegerCodeForString("styl");
private static final int TYPE_TBOX = Util.getIntegerCodeForString("tbox");
private int calculatedVideoTrackHeight;
private boolean customVerticalPlacement;
private int defaultColorRgba;
private int defaultFontFace;
private String defaultFontFamily;
private float defaultVerticalPlacement;
private final ParsableByteArray parsableByteArray;
public Tx3gDecoder(List<byte[]> list) {
super("Tx3gDecoder");
this.parsableByteArray = new ParsableByteArray();
decodeInitializationData(list);
}
private void decodeInitializationData(List<byte[]> list) {
if (list == null || list.size() != 1 || (list.get(0).length != 48 && list.get(0).length != 53)) {
this.defaultFontFace = 0;
this.defaultColorRgba = -1;
this.defaultFontFamily = "sans-serif";
this.customVerticalPlacement = false;
this.defaultVerticalPlacement = DEFAULT_VERTICAL_PLACEMENT;
return;
}
byte[] bArr = list.get(0);
this.defaultFontFace = bArr[24];
this.defaultColorRgba = ((bArr[26] & 255) << 24) | ((bArr[27] & 255) << 16) | ((bArr[28] & 255) << 8) | (bArr[29] & 255);
this.defaultFontFamily = TX3G_SERIF.equals(Util.fromUtf8Bytes(bArr, 43, bArr.length - 43)) ? C.SERIF_NAME : "sans-serif";
int i = bArr[25] * Ascii.DC4;
this.calculatedVideoTrackHeight = i;
boolean z = (bArr[0] & 32) != 0;
this.customVerticalPlacement = z;
if (!z) {
this.defaultVerticalPlacement = DEFAULT_VERTICAL_PLACEMENT;
return;
}
float f = ((bArr[11] & 255) | ((bArr[10] & 255) << 8)) / i;
this.defaultVerticalPlacement = f;
this.defaultVerticalPlacement = Util.constrainValue(f, 0.0f, 0.95f);
}
@Override // com.mbridge.msdk.playercommon.exoplayer2.text.SimpleSubtitleDecoder
public final Subtitle decode(byte[] bArr, int i, boolean z) throws SubtitleDecoderException {
this.parsableByteArray.reset(bArr, i);
String readSubtitleText = readSubtitleText(this.parsableByteArray);
if (readSubtitleText.isEmpty()) {
return Tx3gSubtitle.EMPTY;
}
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(readSubtitleText);
attachFontFace(spannableStringBuilder, this.defaultFontFace, 0, 0, spannableStringBuilder.length(), SPAN_PRIORITY_LOW);
attachColor(spannableStringBuilder, this.defaultColorRgba, -1, 0, spannableStringBuilder.length(), SPAN_PRIORITY_LOW);
attachFontFamily(spannableStringBuilder, this.defaultFontFamily, "sans-serif", 0, spannableStringBuilder.length(), SPAN_PRIORITY_LOW);
float f = this.defaultVerticalPlacement;
while (this.parsableByteArray.bytesLeft() >= 8) {
int position = this.parsableByteArray.getPosition();
int readInt = this.parsableByteArray.readInt();
int readInt2 = this.parsableByteArray.readInt();
if (readInt2 == TYPE_STYL) {
assertTrue(this.parsableByteArray.bytesLeft() >= 2);
int readUnsignedShort = this.parsableByteArray.readUnsignedShort();
for (int i2 = 0; i2 < readUnsignedShort; i2++) {
applyStyleRecord(this.parsableByteArray, spannableStringBuilder);
}
} else if (readInt2 == TYPE_TBOX && this.customVerticalPlacement) {
assertTrue(this.parsableByteArray.bytesLeft() >= 2);
f = Util.constrainValue(this.parsableByteArray.readUnsignedShort() / this.calculatedVideoTrackHeight, 0.0f, 0.95f);
}
this.parsableByteArray.setPosition(position + readInt);
}
return new Tx3gSubtitle(new Cue(spannableStringBuilder, null, f, 0, 0, Float.MIN_VALUE, Integer.MIN_VALUE, Float.MIN_VALUE));
}
private static String readSubtitleText(ParsableByteArray parsableByteArray) throws SubtitleDecoderException {
char peekChar;
assertTrue(parsableByteArray.bytesLeft() >= 2);
int readUnsignedShort = parsableByteArray.readUnsignedShort();
if (readUnsignedShort == 0) {
return "";
}
if (parsableByteArray.bytesLeft() >= 2 && ((peekChar = parsableByteArray.peekChar()) == 65279 || peekChar == 65534)) {
return parsableByteArray.readString(readUnsignedShort, Charset.forName("UTF-16"));
}
return parsableByteArray.readString(readUnsignedShort, Charset.forName("UTF-8"));
}
private void applyStyleRecord(ParsableByteArray parsableByteArray, SpannableStringBuilder spannableStringBuilder) throws SubtitleDecoderException {
assertTrue(parsableByteArray.bytesLeft() >= 12);
int readUnsignedShort = parsableByteArray.readUnsignedShort();
int readUnsignedShort2 = parsableByteArray.readUnsignedShort();
parsableByteArray.skipBytes(2);
int readUnsignedByte = parsableByteArray.readUnsignedByte();
parsableByteArray.skipBytes(1);
int readInt = parsableByteArray.readInt();
attachFontFace(spannableStringBuilder, readUnsignedByte, this.defaultFontFace, readUnsignedShort, readUnsignedShort2, 0);
attachColor(spannableStringBuilder, readInt, this.defaultColorRgba, readUnsignedShort, readUnsignedShort2, 0);
}
private static void attachFontFace(SpannableStringBuilder spannableStringBuilder, int i, int i2, int i3, int i4, int i5) {
if (i != i2) {
int i6 = i5 | 33;
boolean z = (i & 1) != 0;
boolean z2 = (i & 2) != 0;
if (z) {
if (z2) {
spannableStringBuilder.setSpan(new StyleSpan(3), i3, i4, i6);
} else {
spannableStringBuilder.setSpan(new StyleSpan(1), i3, i4, i6);
}
} else if (z2) {
spannableStringBuilder.setSpan(new StyleSpan(2), i3, i4, i6);
}
boolean z3 = (i & 4) != 0;
if (z3) {
spannableStringBuilder.setSpan(new UnderlineSpan(), i3, i4, i6);
}
if (z3 || z || z2) {
return;
}
spannableStringBuilder.setSpan(new StyleSpan(0), i3, i4, i6);
}
}
private static void attachColor(SpannableStringBuilder spannableStringBuilder, int i, int i2, int i3, int i4, int i5) {
if (i != i2) {
spannableStringBuilder.setSpan(new ForegroundColorSpan((i >>> 8) | ((i & 255) << 24)), i3, i4, i5 | 33);
}
}
private static void attachFontFamily(SpannableStringBuilder spannableStringBuilder, String str, String str2, int i, int i2, int i3) {
if (str != str2) {
spannableStringBuilder.setSpan(new TypefaceSpan(str), i, i2, i3 | 33);
}
}
private static void assertTrue(boolean z) throws SubtitleDecoderException {
if (!z) {
throw new SubtitleDecoderException("Unexpected subtitle format.");
}
}
}

View File

@@ -0,0 +1,42 @@
package com.mbridge.msdk.playercommon.exoplayer2.text.tx3g;
import com.mbridge.msdk.playercommon.exoplayer2.text.Cue;
import com.mbridge.msdk.playercommon.exoplayer2.text.Subtitle;
import com.mbridge.msdk.playercommon.exoplayer2.util.Assertions;
import java.util.Collections;
import java.util.List;
/* loaded from: classes4.dex */
final class Tx3gSubtitle implements Subtitle {
public static final Tx3gSubtitle EMPTY = new Tx3gSubtitle();
private final List<Cue> cues;
@Override // com.mbridge.msdk.playercommon.exoplayer2.text.Subtitle
public final int getEventTimeCount() {
return 1;
}
@Override // com.mbridge.msdk.playercommon.exoplayer2.text.Subtitle
public final int getNextEventTimeIndex(long j) {
return j < 0 ? 0 : -1;
}
public Tx3gSubtitle(Cue cue) {
this.cues = Collections.singletonList(cue);
}
private Tx3gSubtitle() {
this.cues = Collections.emptyList();
}
@Override // com.mbridge.msdk.playercommon.exoplayer2.text.Subtitle
public final long getEventTime(int i) {
Assertions.checkArgument(i == 0);
return 0L;
}
@Override // com.mbridge.msdk.playercommon.exoplayer2.text.Subtitle
public final List<Cue> getCues(long j) {
return j >= 0 ? this.cues : Collections.emptyList();
}
}