- Added realracing3-community.apk (71.57 MB) - Removed 32-bit support (armeabi-v7a) - Only includes arm64-v8a libraries - Decompiled source code included - Added README-community.md with analysis
347 lines
13 KiB
Java
347 lines
13 KiB
Java
package com.applovin.impl;
|
|
|
|
import android.graphics.Point;
|
|
import android.media.MediaCodecInfo;
|
|
import android.util.Pair;
|
|
import com.ironsource.v8;
|
|
import com.mbridge.msdk.playercommon.exoplayer2.util.MimeTypes;
|
|
|
|
/* loaded from: classes.dex */
|
|
public final class kd {
|
|
public final String a;
|
|
public final String b;
|
|
public final String c;
|
|
public final MediaCodecInfo.CodecCapabilities d;
|
|
public final boolean e;
|
|
public final boolean f;
|
|
public final boolean g;
|
|
public final boolean h;
|
|
public final boolean i;
|
|
public final boolean j;
|
|
private final boolean k;
|
|
|
|
private static boolean d(MediaCodecInfo.CodecCapabilities codecCapabilities) {
|
|
return xp.a >= 21 && e(codecCapabilities);
|
|
}
|
|
|
|
private static boolean f(MediaCodecInfo.CodecCapabilities codecCapabilities) {
|
|
return xp.a >= 21 && g(codecCapabilities);
|
|
}
|
|
|
|
public String toString() {
|
|
return this.a;
|
|
}
|
|
|
|
private static boolean d(String str) {
|
|
return xp.d.startsWith("SM-T230") && "OMX.MARVELL.VIDEO.HW.CODA7542DECODER".equals(str);
|
|
}
|
|
|
|
private static final boolean f(String str) {
|
|
return ("OMX.MTK.VIDEO.DECODER.HEVC".equals(str) && "mcv5a".equals(xp.b)) ? false : true;
|
|
}
|
|
|
|
public kd(String str, String str2, String str3, MediaCodecInfo.CodecCapabilities codecCapabilities, boolean z, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6) {
|
|
this.a = (String) b1.a((Object) str);
|
|
this.b = str2;
|
|
this.c = str3;
|
|
this.d = codecCapabilities;
|
|
this.h = z;
|
|
this.i = z2;
|
|
this.j = z3;
|
|
this.e = z4;
|
|
this.f = z5;
|
|
this.g = z6;
|
|
this.k = Cif.i(str2);
|
|
}
|
|
|
|
public boolean b(int i) {
|
|
MediaCodecInfo.CodecCapabilities codecCapabilities = this.d;
|
|
if (codecCapabilities == null) {
|
|
b("sampleRate.caps");
|
|
return false;
|
|
}
|
|
MediaCodecInfo.AudioCapabilities audioCapabilities = codecCapabilities.getAudioCapabilities();
|
|
if (audioCapabilities == null) {
|
|
b("sampleRate.aCaps");
|
|
return false;
|
|
}
|
|
if (audioCapabilities.isSampleRateSupported(i)) {
|
|
return true;
|
|
}
|
|
b("sampleRate.support, " + i);
|
|
return false;
|
|
}
|
|
|
|
private static int a(String str, String str2, int i) {
|
|
int i2;
|
|
if (i > 1 || ((xp.a >= 26 && i > 0) || MimeTypes.AUDIO_MPEG.equals(str2) || MimeTypes.AUDIO_AMR_NB.equals(str2) || MimeTypes.AUDIO_AMR_WB.equals(str2) || MimeTypes.AUDIO_AAC.equals(str2) || MimeTypes.AUDIO_VORBIS.equals(str2) || MimeTypes.AUDIO_OPUS.equals(str2) || MimeTypes.AUDIO_RAW.equals(str2) || MimeTypes.AUDIO_FLAC.equals(str2) || MimeTypes.AUDIO_ALAW.equals(str2) || MimeTypes.AUDIO_MLAW.equals(str2) || MimeTypes.AUDIO_MSGSM.equals(str2))) {
|
|
return i;
|
|
}
|
|
if (MimeTypes.AUDIO_AC3.equals(str2)) {
|
|
i2 = 6;
|
|
} else {
|
|
i2 = MimeTypes.AUDIO_E_AC3.equals(str2) ? 16 : 30;
|
|
}
|
|
pc.d(com.mbridge.msdk.playercommon.exoplayer2.mediacodec.MediaCodecInfo.TAG, "AssumedMaxChannelAdjustment: " + str + ", [" + i + " to " + i2 + v8.i.e);
|
|
return i2;
|
|
}
|
|
|
|
private static boolean c(MediaCodecInfo.CodecCapabilities codecCapabilities) {
|
|
return codecCapabilities.isFeatureSupported("adaptive-playback");
|
|
}
|
|
|
|
private static boolean g(MediaCodecInfo.CodecCapabilities codecCapabilities) {
|
|
return codecCapabilities.isFeatureSupported("tunneled-playback");
|
|
}
|
|
|
|
private static boolean e(MediaCodecInfo.CodecCapabilities codecCapabilities) {
|
|
return codecCapabilities.isFeatureSupported("secure-playback");
|
|
}
|
|
|
|
private static boolean e(String str) {
|
|
if (xp.a <= 22) {
|
|
String str2 = xp.d;
|
|
if (("ODROID-XU3".equals(str2) || "Nexus 10".equals(str2)) && ("OMX.Exynos.AVC.Decoder".equals(str) || "OMX.Exynos.AVC.Decoder.secure".equals(str))) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public boolean b(f9 f9Var) {
|
|
int i;
|
|
if (!a(f9Var)) {
|
|
return false;
|
|
}
|
|
if (this.k) {
|
|
int i2 = f9Var.r;
|
|
if (i2 <= 0 || (i = f9Var.s) <= 0) {
|
|
return true;
|
|
}
|
|
if (xp.a >= 21) {
|
|
return a(i2, i, f9Var.t);
|
|
}
|
|
boolean z = i2 * i <= nd.b();
|
|
if (!z) {
|
|
b("legacyFrameSize, " + f9Var.r + "x" + f9Var.s);
|
|
}
|
|
return z;
|
|
}
|
|
if (xp.a >= 21) {
|
|
int i3 = f9Var.A;
|
|
if (i3 != -1 && !b(i3)) {
|
|
return false;
|
|
}
|
|
int i4 = f9Var.z;
|
|
if (i4 != -1 && !a(i4)) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public boolean b() {
|
|
if (xp.a >= 29 && MimeTypes.VIDEO_VP9.equals(this.b)) {
|
|
for (MediaCodecInfo.CodecProfileLevel codecProfileLevel : a()) {
|
|
if (codecProfileLevel.profile == 16384) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private void b(String str) {
|
|
pc.a(com.mbridge.msdk.playercommon.exoplayer2.mediacodec.MediaCodecInfo.TAG, "NoSupport [" + str + "] [" + this.a + ", " + this.b + "] [" + xp.e + v8.i.e);
|
|
}
|
|
|
|
private static boolean b(MediaCodecInfo.CodecCapabilities codecCapabilities) {
|
|
return xp.a >= 19 && c(codecCapabilities);
|
|
}
|
|
|
|
public boolean c(f9 f9Var) {
|
|
if (this.k) {
|
|
return this.e;
|
|
}
|
|
Pair a = nd.a(f9Var);
|
|
return a != null && ((Integer) a.first).intValue() == 42;
|
|
}
|
|
|
|
private static boolean c(String str) {
|
|
return MimeTypes.AUDIO_OPUS.equals(str);
|
|
}
|
|
|
|
public Point a(int i, int i2) {
|
|
MediaCodecInfo.VideoCapabilities videoCapabilities;
|
|
MediaCodecInfo.CodecCapabilities codecCapabilities = this.d;
|
|
if (codecCapabilities == null || (videoCapabilities = codecCapabilities.getVideoCapabilities()) == null) {
|
|
return null;
|
|
}
|
|
return a(videoCapabilities, i, i2);
|
|
}
|
|
|
|
private static Point a(MediaCodecInfo.VideoCapabilities videoCapabilities, int i, int i2) {
|
|
int widthAlignment = videoCapabilities.getWidthAlignment();
|
|
int heightAlignment = videoCapabilities.getHeightAlignment();
|
|
return new Point(xp.a(i, widthAlignment) * widthAlignment, xp.a(i2, heightAlignment) * heightAlignment);
|
|
}
|
|
|
|
private static boolean a(MediaCodecInfo.VideoCapabilities videoCapabilities, int i, int i2, double d) {
|
|
Point a = a(videoCapabilities, i, i2);
|
|
int i3 = a.x;
|
|
int i4 = a.y;
|
|
if (d != -1.0d && d >= 1.0d) {
|
|
return videoCapabilities.areSizeAndRateSupported(i3, i4, Math.floor(d));
|
|
}
|
|
return videoCapabilities.isSizeSupported(i3, i4);
|
|
}
|
|
|
|
public q5 a(f9 f9Var, f9 f9Var2) {
|
|
int i = !xp.a((Object) f9Var.m, (Object) f9Var2.m) ? 8 : 0;
|
|
if (this.k) {
|
|
if (f9Var.u != f9Var2.u) {
|
|
i |= 1024;
|
|
}
|
|
if (!this.e && (f9Var.r != f9Var2.r || f9Var.s != f9Var2.s)) {
|
|
i |= 512;
|
|
}
|
|
if (!xp.a(f9Var.y, f9Var2.y)) {
|
|
i |= 2048;
|
|
}
|
|
if (d(this.a) && !f9Var.a(f9Var2)) {
|
|
i |= 2;
|
|
}
|
|
if (i == 0) {
|
|
return new q5(this.a, f9Var, f9Var2, f9Var.a(f9Var2) ? 3 : 2, 0);
|
|
}
|
|
} else {
|
|
if (f9Var.z != f9Var2.z) {
|
|
i |= 4096;
|
|
}
|
|
if (f9Var.A != f9Var2.A) {
|
|
i |= 8192;
|
|
}
|
|
if (f9Var.B != f9Var2.B) {
|
|
i |= 16384;
|
|
}
|
|
if (i == 0 && MimeTypes.AUDIO_AAC.equals(this.b)) {
|
|
Pair a = nd.a(f9Var);
|
|
Pair a2 = nd.a(f9Var2);
|
|
if (a != null && a2 != null) {
|
|
int intValue = ((Integer) a.first).intValue();
|
|
int intValue2 = ((Integer) a2.first).intValue();
|
|
if (intValue == 42 && intValue2 == 42) {
|
|
return new q5(this.a, f9Var, f9Var2, 3, 0);
|
|
}
|
|
}
|
|
}
|
|
if (!f9Var.a(f9Var2)) {
|
|
i |= 32;
|
|
}
|
|
if (c(this.b)) {
|
|
i |= 2;
|
|
}
|
|
if (i == 0) {
|
|
return new q5(this.a, f9Var, f9Var2, 1, 0);
|
|
}
|
|
}
|
|
return new q5(this.a, f9Var, f9Var2, 0, i);
|
|
}
|
|
|
|
private static MediaCodecInfo.CodecProfileLevel[] a(MediaCodecInfo.CodecCapabilities codecCapabilities) {
|
|
MediaCodecInfo.VideoCapabilities videoCapabilities;
|
|
int intValue = (codecCapabilities == null || (videoCapabilities = codecCapabilities.getVideoCapabilities()) == null) ? 0 : videoCapabilities.getBitrateRange().getUpper().intValue();
|
|
int i = intValue >= 180000000 ? 1024 : intValue >= 120000000 ? 512 : intValue >= 60000000 ? 256 : intValue >= 30000000 ? 128 : intValue >= 18000000 ? 64 : intValue >= 12000000 ? 32 : intValue >= 7200000 ? 16 : intValue >= 3600000 ? 8 : intValue >= 1800000 ? 4 : intValue >= 800000 ? 2 : 1;
|
|
MediaCodecInfo.CodecProfileLevel codecProfileLevel = new MediaCodecInfo.CodecProfileLevel();
|
|
codecProfileLevel.profile = 1;
|
|
codecProfileLevel.level = i;
|
|
return new MediaCodecInfo.CodecProfileLevel[]{codecProfileLevel};
|
|
}
|
|
|
|
public MediaCodecInfo.CodecProfileLevel[] a() {
|
|
MediaCodecInfo.CodecProfileLevel[] codecProfileLevelArr;
|
|
MediaCodecInfo.CodecCapabilities codecCapabilities = this.d;
|
|
return (codecCapabilities == null || (codecProfileLevelArr = codecCapabilities.profileLevels) == null) ? new MediaCodecInfo.CodecProfileLevel[0] : codecProfileLevelArr;
|
|
}
|
|
|
|
public boolean a(int i) {
|
|
MediaCodecInfo.CodecCapabilities codecCapabilities = this.d;
|
|
if (codecCapabilities == null) {
|
|
b("channelCount.caps");
|
|
return false;
|
|
}
|
|
MediaCodecInfo.AudioCapabilities audioCapabilities = codecCapabilities.getAudioCapabilities();
|
|
if (audioCapabilities == null) {
|
|
b("channelCount.aCaps");
|
|
return false;
|
|
}
|
|
if (a(this.a, this.b, audioCapabilities.getMaxInputChannelCount()) >= i) {
|
|
return true;
|
|
}
|
|
b("channelCount.support, " + i);
|
|
return false;
|
|
}
|
|
|
|
public boolean a(f9 f9Var) {
|
|
String b;
|
|
String str = f9Var.j;
|
|
if (str == null || this.b == null || (b = Cif.b(str)) == null) {
|
|
return true;
|
|
}
|
|
if (!this.b.equals(b)) {
|
|
b("codec.mime " + f9Var.j + ", " + b);
|
|
return false;
|
|
}
|
|
Pair a = nd.a(f9Var);
|
|
if (a == null) {
|
|
return true;
|
|
}
|
|
int intValue = ((Integer) a.first).intValue();
|
|
int intValue2 = ((Integer) a.second).intValue();
|
|
if (!this.k && intValue != 42) {
|
|
return true;
|
|
}
|
|
MediaCodecInfo.CodecProfileLevel[] a2 = a();
|
|
if (xp.a <= 23 && MimeTypes.VIDEO_VP9.equals(this.b) && a2.length == 0) {
|
|
a2 = a(this.d);
|
|
}
|
|
for (MediaCodecInfo.CodecProfileLevel codecProfileLevel : a2) {
|
|
if (codecProfileLevel.profile == intValue && codecProfileLevel.level >= intValue2) {
|
|
return true;
|
|
}
|
|
}
|
|
b("codec.profileLevel, " + f9Var.j + ", " + b);
|
|
return false;
|
|
}
|
|
|
|
public boolean a(int i, int i2, double d) {
|
|
MediaCodecInfo.CodecCapabilities codecCapabilities = this.d;
|
|
if (codecCapabilities == null) {
|
|
b("sizeAndRate.caps");
|
|
return false;
|
|
}
|
|
MediaCodecInfo.VideoCapabilities videoCapabilities = codecCapabilities.getVideoCapabilities();
|
|
if (videoCapabilities == null) {
|
|
b("sizeAndRate.vCaps");
|
|
return false;
|
|
}
|
|
if (a(videoCapabilities, i, i2, d)) {
|
|
return true;
|
|
}
|
|
if (i < i2 && f(this.a) && a(videoCapabilities, i2, i, d)) {
|
|
a("sizeAndRate.rotated, " + i + "x" + i2 + "x" + d);
|
|
return true;
|
|
}
|
|
b("sizeAndRate.support, " + i + "x" + i2 + "x" + d);
|
|
return false;
|
|
}
|
|
|
|
public static kd a(String str, String str2, String str3, MediaCodecInfo.CodecCapabilities codecCapabilities, boolean z, boolean z2, boolean z3, boolean z4, boolean z5) {
|
|
return new kd(str, str2, str3, codecCapabilities, z, z2, z3, (z4 || codecCapabilities == null || !b(codecCapabilities) || e(str)) ? false : true, codecCapabilities != null && f(codecCapabilities), z5 || (codecCapabilities != null && d(codecCapabilities)));
|
|
}
|
|
|
|
private void a(String str) {
|
|
pc.a(com.mbridge.msdk.playercommon.exoplayer2.mediacodec.MediaCodecInfo.TAG, "AssumedSupport [" + str + "] [" + this.a + ", " + this.b + "] [" + xp.e + v8.i.e);
|
|
}
|
|
}
|