Rabbit-R1/android (non root)/smali/smali_classes2/androidx/media3/exoplayer/mediacodec/MediaCodecInfo.smali
2024-05-21 17:08:36 -04:00

2493 lines
57 KiB
Smali

.class public final Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;
.super Ljava/lang/Object;
.source "MediaCodecInfo.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo$Api29;
}
.end annotation
# static fields
.field private static final COVERAGE_RESULT_NO:I = 0x1
.field private static final COVERAGE_RESULT_NO_EMPTY_LIST:I = 0x0
.field private static final COVERAGE_RESULT_YES:I = 0x2
.field public static final MAX_SUPPORTED_INSTANCES_UNKNOWN:I = -0x1
.field public static final TAG:Ljava/lang/String; = "MediaCodecInfo"
# instance fields
.field public final adaptive:Z
.field public final capabilities:Landroid/media/MediaCodecInfo$CodecCapabilities;
.field public final codecMimeType:Ljava/lang/String;
.field public final hardwareAccelerated:Z
.field private final isVideo:Z
.field public final mimeType:Ljava/lang/String;
.field public final name:Ljava/lang/String;
.field public final secure:Z
.field public final softwareOnly:Z
.field public final tunneling:Z
.field public final vendor:Z
# direct methods
.method constructor <init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/media/MediaCodecInfo$CodecCapabilities;ZZZZZZ)V
.locals 0
.line 203
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 204
invoke-static {p1}, Landroidx/media3/common/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
check-cast p1, Ljava/lang/String;
iput-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->name:Ljava/lang/String;
iput-object p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->mimeType:Ljava/lang/String;
iput-object p3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->codecMimeType:Ljava/lang/String;
iput-object p4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->capabilities:Landroid/media/MediaCodecInfo$CodecCapabilities;
iput-boolean p5, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->hardwareAccelerated:Z
iput-boolean p6, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->softwareOnly:Z
iput-boolean p7, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->vendor:Z
iput-boolean p8, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->adaptive:Z
iput-boolean p9, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->tunneling:Z
iput-boolean p10, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->secure:Z
.line 214
invoke-static {p2}, Landroidx/media3/common/MimeTypes;->isVideo(Ljava/lang/String;)Z
move-result p1
iput-boolean p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->isVideo:Z
return-void
.end method
.method static synthetic access$000()Z
.locals 1
.line 64
invoke-static {}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->needsIgnorePerformancePointsWorkaround()Z
move-result v0
return v0
.end method
.method private static adjustMaxInputChannelCount(Ljava/lang/String;Ljava/lang/String;I)I
.locals 2
const/4 v0, 0x1
if-gt p2, v0, :cond_4
.line 655
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v1, 0x1a
if-lt v0, v1, :cond_0
if-lez p2, :cond_0
goto/16 :goto_1
:cond_0
const-string v0, "audio/mpeg"
.line 659
invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_4
const-string v0, "audio/3gpp"
.line 660
invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_4
const-string v0, "audio/amr-wb"
.line 661
invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_4
const-string v0, "audio/mp4a-latm"
.line 662
invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_4
const-string v0, "audio/vorbis"
.line 663
invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_4
const-string v0, "audio/opus"
.line 664
invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_4
const-string v0, "audio/raw"
.line 665
invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_4
const-string v0, "audio/flac"
.line 666
invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_4
const-string v0, "audio/g711-alaw"
.line 667
invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_4
const-string v0, "audio/g711-mlaw"
.line 668
invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_4
const-string v0, "audio/gsm"
.line 669
invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_1
goto :goto_1
:cond_1
const-string v0, "audio/ac3"
.line 675
invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_2
const/4 p1, 0x6
goto :goto_0
:cond_2
const-string v0, "audio/eac3"
.line 677
invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p1
if-eqz p1, :cond_3
const/16 p1, 0x10
goto :goto_0
:cond_3
const/16 p1, 0x1e
.line 683
:goto_0
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "AssumedMaxChannelAdjustment: "
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p0
const-string v0, ", ["
invoke-virtual {p0, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p0
invoke-virtual {p0, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object p0
const-string p2, " to "
invoke-virtual {p0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p0
invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object p0
const-string p2, "]"
invoke-virtual {p0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p0
invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
const-string p2, "MediaCodecInfo"
invoke-static {p2, p0}, Landroidx/media3/common/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V
return p1
:cond_4
:goto_1
return p2
.end method
.method private static alignVideoSizeV21(Landroid/media/MediaCodecInfo$VideoCapabilities;II)Landroid/graphics/Point;
.locals 2
.line 745
invoke-virtual {p0}, Landroid/media/MediaCodecInfo$VideoCapabilities;->getWidthAlignment()I
move-result v0
.line 746
invoke-virtual {p0}, Landroid/media/MediaCodecInfo$VideoCapabilities;->getHeightAlignment()I
move-result p0
.line 747
new-instance v1, Landroid/graphics/Point;
.line 748
invoke-static {p1, v0}, Landroidx/media3/common/util/Util;->ceilDivide(II)I
move-result p1
mul-int/2addr p1, v0
.line 749
invoke-static {p2, p0}, Landroidx/media3/common/util/Util;->ceilDivide(II)I
move-result p2
mul-int/2addr p2, p0
invoke-direct {v1, p1, p2}, Landroid/graphics/Point;-><init>(II)V
return-object v1
.end method
.method private static areSizeAndRateSupportedV21(Landroid/media/MediaCodecInfo$VideoCapabilities;IID)Z
.locals 2
.line 726
invoke-static {p0, p1, p2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->alignVideoSizeV21(Landroid/media/MediaCodecInfo$VideoCapabilities;II)Landroid/graphics/Point;
move-result-object p1
.line 727
iget p2, p1, Landroid/graphics/Point;->x:I
.line 728
iget p1, p1, Landroid/graphics/Point;->y:I
const-wide/high16 v0, -0x4010000000000000L # -1.0
cmpl-double v0, p3, v0
if-eqz v0, :cond_1
const-wide/high16 v0, 0x3ff0000000000000L # 1.0
cmpg-double v0, p3, v0
if-gez v0, :cond_0
goto :goto_0
.line 738
:cond_0
invoke-static {p3, p4}, Ljava/lang/Math;->floor(D)D
move-result-wide p3
.line 739
invoke-virtual {p0, p2, p1, p3, p4}, Landroid/media/MediaCodecInfo$VideoCapabilities;->areSizeAndRateSupported(IID)Z
move-result p0
return p0
.line 733
:cond_1
:goto_0
invoke-virtual {p0, p2, p1}, Landroid/media/MediaCodecInfo$VideoCapabilities;->isSizeSupported(II)Z
move-result p0
return p0
.end method
.method private static estimateLegacyVp9ProfileLevels(Landroid/media/MediaCodecInfo$CodecCapabilities;)[Landroid/media/MediaCodecInfo$CodecProfileLevel;
.locals 3
const/4 v0, 0x0
if-eqz p0, :cond_0
.line 771
invoke-virtual {p0}, Landroid/media/MediaCodecInfo$CodecCapabilities;->getVideoCapabilities()Landroid/media/MediaCodecInfo$VideoCapabilities;
move-result-object p0
if-eqz p0, :cond_0
.line 773
invoke-virtual {p0}, Landroid/media/MediaCodecInfo$VideoCapabilities;->getBitrateRange()Landroid/util/Range;
move-result-object p0
invoke-virtual {p0}, Landroid/util/Range;->getUpper()Ljava/lang/Comparable;
move-result-object p0
check-cast p0, Ljava/lang/Integer;
invoke-virtual {p0}, Ljava/lang/Integer;->intValue()I
move-result p0
goto :goto_0
:cond_0
move p0, v0
:goto_0
const v1, 0xaba9500
const/4 v2, 0x1
if-lt p0, v1, :cond_1
const/16 p0, 0x400
goto :goto_1
:cond_1
const v1, 0x7270e00
if-lt p0, v1, :cond_2
const/16 p0, 0x200
goto :goto_1
:cond_2
const v1, 0x3938700
if-lt p0, v1, :cond_3
const/16 p0, 0x100
goto :goto_1
:cond_3
const v1, 0x1c9c380
if-lt p0, v1, :cond_4
const/16 p0, 0x80
goto :goto_1
:cond_4
const v1, 0x112a880
if-lt p0, v1, :cond_5
const/16 p0, 0x40
goto :goto_1
:cond_5
const v1, 0xb71b00
if-lt p0, v1, :cond_6
const/16 p0, 0x20
goto :goto_1
:cond_6
const v1, 0x6ddd00
if-lt p0, v1, :cond_7
const/16 p0, 0x10
goto :goto_1
:cond_7
const v1, 0x36ee80
if-lt p0, v1, :cond_8
const/16 p0, 0x8
goto :goto_1
:cond_8
const v1, 0x1b7740
if-lt p0, v1, :cond_9
const/4 p0, 0x4
goto :goto_1
:cond_9
const v1, 0xc3500
if-lt p0, v1, :cond_a
const/4 p0, 0x2
goto :goto_1
:cond_a
move p0, v2
.line 803
:goto_1
new-instance v1, Landroid/media/MediaCodecInfo$CodecProfileLevel;
invoke-direct {v1}, Landroid/media/MediaCodecInfo$CodecProfileLevel;-><init>()V
.line 805
iput v2, v1, Landroid/media/MediaCodecInfo$CodecProfileLevel;->profile:I
.line 806
iput p0, v1, Landroid/media/MediaCodecInfo$CodecProfileLevel;->level:I
new-array p0, v2, [Landroid/media/MediaCodecInfo$CodecProfileLevel;
aput-object v1, p0, v0
return-object p0
.end method
.method private static getMaxSupportedInstancesV23(Landroid/media/MediaCodecInfo$CodecCapabilities;)I
.locals 0
.line 754
invoke-virtual {p0}, Landroid/media/MediaCodecInfo$CodecCapabilities;->getMaxSupportedInstances()I
move-result p0
return p0
.end method
.method private static isAdaptive(Landroid/media/MediaCodecInfo$CodecCapabilities;)Z
.locals 2
.line 696
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v1, 0x13
if-lt v0, v1, :cond_0
invoke-static {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->isAdaptiveV19(Landroid/media/MediaCodecInfo$CodecCapabilities;)Z
move-result p0
if-eqz p0, :cond_0
const/4 p0, 0x1
goto :goto_0
:cond_0
const/4 p0, 0x0
:goto_0
return p0
.end method
.method private static isAdaptiveV19(Landroid/media/MediaCodecInfo$CodecCapabilities;)Z
.locals 1
const-string v0, "adaptive-playback"
.line 701
invoke-virtual {p0, v0}, Landroid/media/MediaCodecInfo$CodecCapabilities;->isFeatureSupported(Ljava/lang/String;)Z
move-result p0
return p0
.end method
.method private isCodecProfileAndLevelSupported(Landroidx/media3/common/Format;Z)Z
.locals 9
.line 305
invoke-static {p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecUtil;->getCodecProfileAndLevel(Landroidx/media3/common/Format;)Landroid/util/Pair;
move-result-object v0
const/4 v1, 0x1
if-nez v0, :cond_0
return v1
.line 310
:cond_0
iget-object v2, v0, Landroid/util/Pair;->first:Ljava/lang/Object;
check-cast v2, Ljava/lang/Integer;
invoke-virtual {v2}, Ljava/lang/Integer;->intValue()I
move-result v2
.line 311
iget-object v0, v0, Landroid/util/Pair;->second:Ljava/lang/Object;
check-cast v0, Ljava/lang/Integer;
invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I
move-result v0
const-string v3, "video/dolby-vision"
.line 312
iget-object v4, p1, Landroidx/media3/common/Format;->sampleMimeType:Ljava/lang/String;
invoke-virtual {v3, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
const/4 v4, 0x0
if-eqz v3, :cond_2
const-string v3, "video/avc"
iget-object v5, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->mimeType:Ljava/lang/String;
.line 316
invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_1
const/16 v2, 0x8
:goto_0
move v0, v4
goto :goto_1
:cond_1
const-string v3, "video/hevc"
iget-object v5, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->mimeType:Ljava/lang/String;
.line 319
invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_2
const/4 v2, 0x2
goto :goto_0
:cond_2
:goto_1
iget-boolean v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->isVideo:Z
if-nez v3, :cond_3
const/16 v3, 0x2a
if-eq v2, v3, :cond_3
return v1
.line 331
:cond_3
invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->getProfileLevels()[Landroid/media/MediaCodecInfo$CodecProfileLevel;
move-result-object v3
.line 332
sget v5, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v6, 0x17
if-gt v5, v6, :cond_4
const-string v5, "video/x-vnd.on2.vp9"
iget-object v6, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->mimeType:Ljava/lang/String;
invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_4
array-length v5, v3
if-nez v5, :cond_4
iget-object v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->capabilities:Landroid/media/MediaCodecInfo$CodecCapabilities;
.line 335
invoke-static {v3}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->estimateLegacyVp9ProfileLevels(Landroid/media/MediaCodecInfo$CodecCapabilities;)[Landroid/media/MediaCodecInfo$CodecProfileLevel;
move-result-object v3
.line 338
:cond_4
array-length v5, v3
move v6, v4
:goto_2
if-ge v6, v5, :cond_7
aget-object v7, v3, v6
.line 339
iget v8, v7, Landroid/media/MediaCodecInfo$CodecProfileLevel;->profile:I
if-ne v8, v2, :cond_6
iget v7, v7, Landroid/media/MediaCodecInfo$CodecProfileLevel;->level:I
if-ge v7, v0, :cond_5
if-nez p2, :cond_6
:cond_5
iget-object v7, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->mimeType:Ljava/lang/String;
.line 341
invoke-static {v7, v2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->needsProfileExcludedWorkaround(Ljava/lang/String;I)Z
move-result v7
if-nez v7, :cond_6
return v1
:cond_6
add-int/lit8 v6, v6, 0x1
goto :goto_2
.line 345
:cond_7
new-instance p2, Ljava/lang/StringBuilder;
const-string v0, "codec.profileLevel, "
invoke-direct {p2, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object p1, p1, Landroidx/media3/common/Format;->codecs:Ljava/lang/String;
invoke-virtual {p2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p1
const-string p2, ", "
invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p1
iget-object p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->codecMimeType:Ljava/lang/String;
invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->logNoSupport(Ljava/lang/String;)V
return v4
.end method
.method private isSampleMimeTypeSupported(Landroidx/media3/common/Format;)Z
.locals 2
iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->mimeType:Ljava/lang/String;
.line 299
iget-object v1, p1, Landroidx/media3/common/Format;->sampleMimeType:Ljava/lang/String;
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_1
iget-object p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->mimeType:Ljava/lang/String;
.line 300
invoke-static {p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecUtil;->getAlternativeCodecMimeType(Landroidx/media3/common/Format;)Ljava/lang/String;
move-result-object p1
invoke-virtual {p0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p0
if-eqz p0, :cond_0
goto :goto_0
:cond_0
const/4 p0, 0x0
goto :goto_1
:cond_1
:goto_0
const/4 p0, 0x1
:goto_1
return p0
.end method
.method private static isSecure(Landroid/media/MediaCodecInfo$CodecCapabilities;)Z
.locals 2
.line 714
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v1, 0x15
if-lt v0, v1, :cond_0
invoke-static {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->isSecureV21(Landroid/media/MediaCodecInfo$CodecCapabilities;)Z
move-result p0
if-eqz p0, :cond_0
const/4 p0, 0x1
goto :goto_0
:cond_0
const/4 p0, 0x0
:goto_0
return p0
.end method
.method private static isSecureV21(Landroid/media/MediaCodecInfo$CodecCapabilities;)Z
.locals 1
const-string v0, "secure-playback"
.line 719
invoke-virtual {p0, v0}, Landroid/media/MediaCodecInfo$CodecCapabilities;->isFeatureSupported(Ljava/lang/String;)Z
move-result p0
return p0
.end method
.method private static isTunneling(Landroid/media/MediaCodecInfo$CodecCapabilities;)Z
.locals 2
.line 705
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v1, 0x15
if-lt v0, v1, :cond_0
invoke-static {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->isTunnelingV21(Landroid/media/MediaCodecInfo$CodecCapabilities;)Z
move-result p0
if-eqz p0, :cond_0
const/4 p0, 0x1
goto :goto_0
:cond_0
const/4 p0, 0x0
:goto_0
return p0
.end method
.method private static isTunnelingV21(Landroid/media/MediaCodecInfo$CodecCapabilities;)Z
.locals 1
const-string v0, "tunneled-playback"
.line 710
invoke-virtual {p0, v0}, Landroid/media/MediaCodecInfo$CodecCapabilities;->isFeatureSupported(Ljava/lang/String;)Z
move-result p0
return p0
.end method
.method private logAssumedSupport(Ljava/lang/String;)V
.locals 2
.line 641
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "AssumedSupport ["
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p1
const-string v0, "] ["
invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p1
iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->name:Ljava/lang/String;
invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p1
const-string v1, ", "
invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p1
iget-object p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->mimeType:Ljava/lang/String;
invoke-virtual {p1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p0
invoke-virtual {p0, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p0
sget-object p1, Landroidx/media3/common/util/Util;->DEVICE_DEBUG_INFO:Ljava/lang/String;
invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p0
const-string p1, "]"
invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p0
invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
const-string p1, "MediaCodecInfo"
invoke-static {p1, p0}, Landroidx/media3/common/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)V
return-void
.end method
.method private logNoSupport(Ljava/lang/String;)V
.locals 2
.line 627
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "NoSupport ["
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p1
const-string v0, "] ["
invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p1
iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->name:Ljava/lang/String;
invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p1
const-string v1, ", "
invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p1
iget-object p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->mimeType:Ljava/lang/String;
invoke-virtual {p1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p0
invoke-virtual {p0, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p0
sget-object p1, Landroidx/media3/common/util/Util;->DEVICE_DEBUG_INFO:Ljava/lang/String;
invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p0
const-string p1, "]"
invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p0
invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
const-string p1, "MediaCodecInfo"
invoke-static {p1, p0}, Landroidx/media3/common/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)V
return-void
.end method
.method private static needsAdaptationFlushWorkaround(Ljava/lang/String;)Z
.locals 1
const-string v0, "audio/opus"
.line 848
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p0
return p0
.end method
.method private static needsAdaptationReconfigureWorkaround(Ljava/lang/String;)Z
.locals 2
.line 833
sget-object v0, Landroidx/media3/common/util/Util;->MODEL:Ljava/lang/String;
const-string v1, "SM-T230"
invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_0
const-string v0, "OMX.MARVELL.VIDEO.HW.CODA7542DECODER"
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p0
if-eqz p0, :cond_0
const/4 p0, 0x1
goto :goto_0
:cond_0
const/4 p0, 0x0
:goto_0
return p0
.end method
.method private static needsDisableAdaptationWorkaround(Ljava/lang/String;)Z
.locals 2
.line 819
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v1, 0x16
if-gt v0, v1, :cond_2
const-string v0, "ODROID-XU3"
sget-object v1, Landroidx/media3/common/util/Util;->MODEL:Ljava/lang/String;
.line 820
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_0
const-string v0, "Nexus 10"
sget-object v1, Landroidx/media3/common/util/Util;->MODEL:Ljava/lang/String;
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_2
:cond_0
const-string v0, "OMX.Exynos.AVC.Decoder"
.line 821
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_1
const-string v0, "OMX.Exynos.AVC.Decoder.secure"
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p0
if-eqz p0, :cond_2
:cond_1
const/4 p0, 0x1
goto :goto_0
:cond_2
const/4 p0, 0x0
:goto_0
return p0
.end method
.method private static needsIgnorePerformancePointsWorkaround()Z
.locals 2
.line 882
sget-object v0, Landroidx/media3/common/util/Util;->DEVICE:Ljava/lang/String;
const-string v1, "sabrina"
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_1
sget-object v0, Landroidx/media3/common/util/Util;->DEVICE:Ljava/lang/String;
const-string v1, "boreal"
.line 883
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_1
sget-object v0, Landroidx/media3/common/util/Util;->MODEL:Ljava/lang/String;
const-string v1, "Lenovo TB-X605"
.line 885
invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_1
sget-object v0, Landroidx/media3/common/util/Util;->MODEL:Ljava/lang/String;
const-string v1, "Lenovo TB-X606"
.line 886
invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_1
sget-object v0, Landroidx/media3/common/util/Util;->MODEL:Ljava/lang/String;
const-string v1, "Lenovo TB-X616"
.line 887
invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_0
goto :goto_0
:cond_0
const/4 v0, 0x0
goto :goto_1
:cond_1
:goto_0
const/4 v0, 0x1
:goto_1
return v0
.end method
.method private static needsProfileExcludedWorkaround(Ljava/lang/String;I)Z
.locals 1
const-string v0, "video/hevc"
.line 874
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p0
if-eqz p0, :cond_1
const/4 p0, 0x2
if-ne p0, p1, :cond_1
const-string p0, "sailfish"
sget-object p1, Landroidx/media3/common/util/Util;->DEVICE:Ljava/lang/String;
.line 876
invoke-virtual {p0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p0
if-nez p0, :cond_0
const-string p0, "marlin"
sget-object p1, Landroidx/media3/common/util/Util;->DEVICE:Ljava/lang/String;
invoke-virtual {p0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p0
if-eqz p0, :cond_1
:cond_0
const/4 p0, 0x1
goto :goto_0
:cond_1
const/4 p0, 0x0
:goto_0
return p0
.end method
.method private static needsRotatedVerticalResolutionWorkaround(Ljava/lang/String;)Z
.locals 1
const-string v0, "OMX.MTK.VIDEO.DECODER.HEVC"
.line 861
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p0
if-eqz p0, :cond_0
const-string p0, "mcv5a"
sget-object v0, Landroidx/media3/common/util/Util;->DEVICE:Ljava/lang/String;
invoke-virtual {p0, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p0
if-eqz p0, :cond_0
const/4 p0, 0x0
return p0
:cond_0
const/4 p0, 0x1
return p0
.end method
.method public static newInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/media/MediaCodecInfo$CodecCapabilities;ZZZZZ)Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;
.locals 12
.line 176
new-instance v11, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;
const/4 v0, 0x1
const/4 v1, 0x0
if-nez p7, :cond_0
if-eqz p3, :cond_0
.line 186
invoke-static {p3}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->isAdaptive(Landroid/media/MediaCodecInfo$CodecCapabilities;)Z
move-result v2
if-eqz v2, :cond_0
.line 187
invoke-static {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->needsDisableAdaptationWorkaround(Ljava/lang/String;)Z
move-result v2
if-nez v2, :cond_0
move v8, v0
goto :goto_0
:cond_0
move v8, v1
:goto_0
if-eqz p3, :cond_1
.line 188
invoke-static {p3}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->isTunneling(Landroid/media/MediaCodecInfo$CodecCapabilities;)Z
move-result v2
if-eqz v2, :cond_1
move v9, v0
goto :goto_1
:cond_1
move v9, v1
:goto_1
if-nez p8, :cond_3
if-eqz p3, :cond_2
.line 189
invoke-static {p3}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->isSecure(Landroid/media/MediaCodecInfo$CodecCapabilities;)Z
move-result v2
if-eqz v2, :cond_2
goto :goto_2
:cond_2
move v10, v1
goto :goto_3
:cond_3
:goto_2
move v10, v0
:goto_3
move-object v0, v11
move-object v1, p0
move-object v2, p1
move-object v3, p2
move-object v4, p3
move/from16 v5, p4
move/from16 v6, p5
move/from16 v7, p6
invoke-direct/range {v0 .. v10}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/media/MediaCodecInfo$CodecCapabilities;ZZZZZZ)V
return-object v11
.end method
# virtual methods
.method public alignVideoSizeV21(II)Landroid/graphics/Point;
.locals 1
iget-object p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->capabilities:Landroid/media/MediaCodecInfo$CodecCapabilities;
const/4 v0, 0x0
if-nez p0, :cond_0
return-object v0
.line 565
:cond_0
invoke-virtual {p0}, Landroid/media/MediaCodecInfo$CodecCapabilities;->getVideoCapabilities()Landroid/media/MediaCodecInfo$VideoCapabilities;
move-result-object p0
if-nez p0, :cond_1
return-object v0
.line 569
:cond_1
invoke-static {p0, p1, p2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->alignVideoSizeV21(Landroid/media/MediaCodecInfo$VideoCapabilities;II)Landroid/graphics/Point;
move-result-object p0
return-object p0
.end method
.method public canReuseCodec(Landroidx/media3/common/Format;Landroidx/media3/common/Format;)Landroidx/media3/exoplayer/DecoderReuseEvaluation;
.locals 13
.line 420
iget-object v0, p1, Landroidx/media3/common/Format;->sampleMimeType:Ljava/lang/String;
iget-object v1, p2, Landroidx/media3/common/Format;->sampleMimeType:Ljava/lang/String;
invoke-static {v0, v1}, Landroidx/media3/common/util/Util;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_0
const/16 v0, 0x8
goto :goto_0
:cond_0
const/4 v0, 0x0
:goto_0
iget-boolean v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->isVideo:Z
if-eqz v1, :cond_8
.line 425
iget v1, p1, Landroidx/media3/common/Format;->rotationDegrees:I
iget v2, p2, Landroidx/media3/common/Format;->rotationDegrees:I
if-eq v1, v2, :cond_1
or-int/lit16 v0, v0, 0x400
:cond_1
iget-boolean v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->adaptive:Z
if-nez v1, :cond_3
.line 428
iget v1, p1, Landroidx/media3/common/Format;->width:I
iget v2, p2, Landroidx/media3/common/Format;->width:I
if-ne v1, v2, :cond_2
iget v1, p1, Landroidx/media3/common/Format;->height:I
iget v2, p2, Landroidx/media3/common/Format;->height:I
if-eq v1, v2, :cond_3
:cond_2
or-int/lit16 v0, v0, 0x200
.line 432
:cond_3
iget-object v1, p1, Landroidx/media3/common/Format;->colorInfo:Landroidx/media3/common/ColorInfo;
iget-object v2, p2, Landroidx/media3/common/Format;->colorInfo:Landroidx/media3/common/ColorInfo;
invoke-static {v1, v2}, Landroidx/media3/common/util/Util;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_4
or-int/lit16 v0, v0, 0x800
:cond_4
iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->name:Ljava/lang/String;
.line 435
invoke-static {v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->needsAdaptationReconfigureWorkaround(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_5
.line 436
invoke-virtual {p1, p2}, Landroidx/media3/common/Format;->initializationDataEquals(Landroidx/media3/common/Format;)Z
move-result v1
if-nez v1, :cond_5
or-int/lit8 v0, v0, 0x2
:cond_5
if-nez v0, :cond_7
.line 441
new-instance v0, Landroidx/media3/exoplayer/DecoderReuseEvaluation;
iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->name:Ljava/lang/String;
.line 445
invoke-virtual {p1, p2}, Landroidx/media3/common/Format;->initializationDataEquals(Landroidx/media3/common/Format;)Z
move-result p0
if-eqz p0, :cond_6
const/4 p0, 0x3
goto :goto_1
:cond_6
const/4 p0, 0x2
:goto_1
move v5, p0
const/4 v6, 0x0
move-object v1, v0
move-object v3, p1
move-object v4, p2
.line 447
invoke-direct/range {v1 .. v6}, Landroidx/media3/exoplayer/DecoderReuseEvaluation;-><init>(Ljava/lang/String;Landroidx/media3/common/Format;Landroidx/media3/common/Format;II)V
return-object v0
:cond_7
move v12, v0
goto/16 :goto_2
.line 451
:cond_8
iget v1, p1, Landroidx/media3/common/Format;->channelCount:I
iget v2, p2, Landroidx/media3/common/Format;->channelCount:I
if-eq v1, v2, :cond_9
or-int/lit16 v0, v0, 0x1000
.line 454
:cond_9
iget v1, p1, Landroidx/media3/common/Format;->sampleRate:I
iget v2, p2, Landroidx/media3/common/Format;->sampleRate:I
if-eq v1, v2, :cond_a
or-int/lit16 v0, v0, 0x2000
.line 457
:cond_a
iget v1, p1, Landroidx/media3/common/Format;->pcmEncoding:I
iget v2, p2, Landroidx/media3/common/Format;->pcmEncoding:I
if-eq v1, v2, :cond_b
or-int/lit16 v0, v0, 0x4000
:cond_b
if-nez v0, :cond_c
const-string v1, "audio/mp4a-latm"
iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->mimeType:Ljava/lang/String;
.line 463
invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_c
.line 466
invoke-static {p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecUtil;->getCodecProfileAndLevel(Landroidx/media3/common/Format;)Landroid/util/Pair;
move-result-object v1
.line 469
invoke-static {p2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecUtil;->getCodecProfileAndLevel(Landroidx/media3/common/Format;)Landroid/util/Pair;
move-result-object v2
if-eqz v1, :cond_c
if-eqz v2, :cond_c
.line 471
iget-object v1, v1, Landroid/util/Pair;->first:Ljava/lang/Object;
check-cast v1, Ljava/lang/Integer;
invoke-virtual {v1}, Ljava/lang/Integer;->intValue()I
move-result v1
.line 472
iget-object v2, v2, Landroid/util/Pair;->first:Ljava/lang/Object;
check-cast v2, Ljava/lang/Integer;
invoke-virtual {v2}, Ljava/lang/Integer;->intValue()I
move-result v2
const/16 v3, 0x2a
if-ne v1, v3, :cond_c
if-ne v2, v3, :cond_c
.line 475
new-instance v0, Landroidx/media3/exoplayer/DecoderReuseEvaluation;
iget-object v5, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->name:Ljava/lang/String;
const/4 v8, 0x3
const/4 v9, 0x0
move-object v4, v0
move-object v6, p1
move-object v7, p2
invoke-direct/range {v4 .. v9}, Landroidx/media3/exoplayer/DecoderReuseEvaluation;-><init>(Ljava/lang/String;Landroidx/media3/common/Format;Landroidx/media3/common/Format;II)V
return-object v0
.line 485
:cond_c
invoke-virtual {p1, p2}, Landroidx/media3/common/Format;->initializationDataEquals(Landroidx/media3/common/Format;)Z
move-result v1
if-nez v1, :cond_d
or-int/lit8 v0, v0, 0x20
:cond_d
iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->mimeType:Ljava/lang/String;
.line 488
invoke-static {v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->needsAdaptationFlushWorkaround(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_e
or-int/lit8 v0, v0, 0x2
:cond_e
if-nez v0, :cond_7
.line 493
new-instance v0, Landroidx/media3/exoplayer/DecoderReuseEvaluation;
iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->name:Ljava/lang/String;
const/4 v5, 0x1
const/4 v6, 0x0
move-object v1, v0
move-object v3, p1
move-object v4, p2
invoke-direct/range {v1 .. v6}, Landroidx/media3/exoplayer/DecoderReuseEvaluation;-><init>(Ljava/lang/String;Landroidx/media3/common/Format;Landroidx/media3/common/Format;II)V
return-object v0
.line 498
:goto_2
new-instance v0, Landroidx/media3/exoplayer/DecoderReuseEvaluation;
iget-object v8, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->name:Ljava/lang/String;
const/4 v11, 0x0
move-object v7, v0
move-object v9, p1
move-object v10, p2
invoke-direct/range {v7 .. v12}, Landroidx/media3/exoplayer/DecoderReuseEvaluation;-><init>(Ljava/lang/String;Landroidx/media3/common/Format;Landroidx/media3/common/Format;II)V
return-object v0
.end method
.method public getMaxSupportedInstances()I
.locals 2
.line 241
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v1, 0x17
if-lt v0, v1, :cond_1
iget-object p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->capabilities:Landroid/media/MediaCodecInfo$CodecCapabilities;
if-nez p0, :cond_0
goto :goto_0
.line 244
:cond_0
invoke-static {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->getMaxSupportedInstancesV23(Landroid/media/MediaCodecInfo$CodecCapabilities;)I
move-result p0
return p0
:cond_1
:goto_0
const/4 p0, -0x1
return p0
.end method
.method public getProfileLevels()[Landroid/media/MediaCodecInfo$CodecProfileLevel;
.locals 1
iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->capabilities:Landroid/media/MediaCodecInfo$CodecCapabilities;
if-eqz v0, :cond_1
.line 228
iget-object v0, v0, Landroid/media/MediaCodecInfo$CodecCapabilities;->profileLevels:[Landroid/media/MediaCodecInfo$CodecProfileLevel;
if-nez v0, :cond_0
goto :goto_0
:cond_0
iget-object p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->capabilities:Landroid/media/MediaCodecInfo$CodecCapabilities;
.line 230
iget-object p0, p0, Landroid/media/MediaCodecInfo$CodecCapabilities;->profileLevels:[Landroid/media/MediaCodecInfo$CodecProfileLevel;
goto :goto_1
:cond_1
:goto_0
const/4 p0, 0x0
new-array p0, p0, [Landroid/media/MediaCodecInfo$CodecProfileLevel;
:goto_1
return-object p0
.end method
.method public isAudioChannelCountSupportedV21(I)Z
.locals 4
iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->capabilities:Landroid/media/MediaCodecInfo$CodecCapabilities;
const/4 v1, 0x0
if-nez v0, :cond_0
const-string p1, "channelCount.caps"
.line 609
invoke-direct {p0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->logNoSupport(Ljava/lang/String;)V
return v1
.line 612
:cond_0
invoke-virtual {v0}, Landroid/media/MediaCodecInfo$CodecCapabilities;->getAudioCapabilities()Landroid/media/MediaCodecInfo$AudioCapabilities;
move-result-object v0
if-nez v0, :cond_1
const-string p1, "channelCount.aCaps"
.line 614
invoke-direct {p0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->logNoSupport(Ljava/lang/String;)V
return v1
:cond_1
iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->name:Ljava/lang/String;
iget-object v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->mimeType:Ljava/lang/String;
.line 618
invoke-virtual {v0}, Landroid/media/MediaCodecInfo$AudioCapabilities;->getMaxInputChannelCount()I
move-result v0
invoke-static {v2, v3, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->adjustMaxInputChannelCount(Ljava/lang/String;Ljava/lang/String;I)I
move-result v0
if-ge v0, p1, :cond_2
.line 620
new-instance v0, Ljava/lang/StringBuilder;
const-string v2, "channelCount.support, "
invoke-direct {v0, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->logNoSupport(Ljava/lang/String;)V
return v1
:cond_2
const/4 p0, 0x1
return p0
.end method
.method public isAudioSampleRateSupportedV21(I)Z
.locals 3
iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->capabilities:Landroid/media/MediaCodecInfo$CodecCapabilities;
const/4 v1, 0x0
if-nez v0, :cond_0
const-string p1, "sampleRate.caps"
.line 583
invoke-direct {p0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->logNoSupport(Ljava/lang/String;)V
return v1
.line 586
:cond_0
invoke-virtual {v0}, Landroid/media/MediaCodecInfo$CodecCapabilities;->getAudioCapabilities()Landroid/media/MediaCodecInfo$AudioCapabilities;
move-result-object v0
if-nez v0, :cond_1
const-string p1, "sampleRate.aCaps"
.line 588
invoke-direct {p0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->logNoSupport(Ljava/lang/String;)V
return v1
.line 591
:cond_1
invoke-virtual {v0, p1}, Landroid/media/MediaCodecInfo$AudioCapabilities;->isSampleRateSupported(I)Z
move-result v0
if-nez v0, :cond_2
.line 592
new-instance v0, Ljava/lang/StringBuilder;
const-string v2, "sampleRate.support, "
invoke-direct {v0, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->logNoSupport(Ljava/lang/String;)V
return v1
:cond_2
const/4 p0, 0x1
return p0
.end method
.method public isFormatFunctionallySupported(Landroidx/media3/common/Format;)Z
.locals 2
.line 294
invoke-direct {p0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->isSampleMimeTypeSupported(Landroidx/media3/common/Format;)Z
move-result v0
const/4 v1, 0x0
if-eqz v0, :cond_0
.line 295
invoke-direct {p0, p1, v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->isCodecProfileAndLevelSupported(Landroidx/media3/common/Format;Z)Z
move-result p0
if-eqz p0, :cond_0
const/4 v1, 0x1
:cond_0
return v1
.end method
.method public isFormatSupported(Landroidx/media3/common/Format;)Z
.locals 4
.annotation system Ldalvik/annotation/Throws;
value = {
Landroidx/media3/exoplayer/mediacodec/MediaCodecUtil$DecoderQueryException;
}
.end annotation
.line 256
invoke-direct {p0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->isSampleMimeTypeSupported(Landroidx/media3/common/Format;)Z
move-result v0
const/4 v1, 0x0
if-nez v0, :cond_0
return v1
:cond_0
const/4 v0, 0x1
.line 260
invoke-direct {p0, p1, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->isCodecProfileAndLevelSupported(Landroidx/media3/common/Format;Z)Z
move-result v2
if-nez v2, :cond_1
return v1
:cond_1
iget-boolean v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->isVideo:Z
const/16 v3, 0x15
if-eqz v2, :cond_7
.line 265
iget v2, p1, Landroidx/media3/common/Format;->width:I
if-lez v2, :cond_6
iget v2, p1, Landroidx/media3/common/Format;->height:I
if-gtz v2, :cond_2
goto :goto_0
.line 268
:cond_2
sget v2, Landroidx/media3/common/util/Util;->SDK_INT:I
if-lt v2, v3, :cond_3
.line 269
iget v0, p1, Landroidx/media3/common/Format;->width:I
iget v1, p1, Landroidx/media3/common/Format;->height:I
iget p1, p1, Landroidx/media3/common/Format;->frameRate:F
float-to-double v2, p1
invoke-virtual {p0, v0, v1, v2, v3}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->isVideoSizeAndRateSupportedV21(IID)Z
move-result p0
return p0
.line 271
:cond_3
iget v2, p1, Landroidx/media3/common/Format;->width:I
iget v3, p1, Landroidx/media3/common/Format;->height:I
mul-int/2addr v2, v3
.line 272
invoke-static {}, Landroidx/media3/exoplayer/mediacodec/MediaCodecUtil;->maxH264DecodableFrameSize()I
move-result v3
if-gt v2, v3, :cond_4
move v1, v0
:cond_4
if-nez v1, :cond_5
.line 274
new-instance v0, Ljava/lang/StringBuilder;
const-string v2, "legacyFrameSize, "
invoke-direct {v0, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget v2, p1, Landroidx/media3/common/Format;->width:I
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v2, "x"
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
iget p1, p1, Landroidx/media3/common/Format;->height:I
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->logNoSupport(Ljava/lang/String;)V
:cond_5
return v1
:cond_6
:goto_0
return v0
.line 279
:cond_7
sget v2, Landroidx/media3/common/util/Util;->SDK_INT:I
if-lt v2, v3, :cond_9
iget v2, p1, Landroidx/media3/common/Format;->sampleRate:I
const/4 v3, -0x1
if-eq v2, v3, :cond_8
iget v2, p1, Landroidx/media3/common/Format;->sampleRate:I
.line 281
invoke-virtual {p0, v2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->isAudioSampleRateSupportedV21(I)Z
move-result v2
if-eqz v2, :cond_a
:cond_8
iget v2, p1, Landroidx/media3/common/Format;->channelCount:I
if-eq v2, v3, :cond_9
iget p1, p1, Landroidx/media3/common/Format;->channelCount:I
.line 283
invoke-virtual {p0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->isAudioChannelCountSupportedV21(I)Z
move-result p0
if-eqz p0, :cond_a
:cond_9
move v1, v0
:cond_a
return v1
.end method
.method public isHdr10PlusOutOfBandMetadataSupported()Z
.locals 5
.line 351
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v1, 0x1d
const/4 v2, 0x0
if-lt v0, v1, :cond_1
const-string v0, "video/x-vnd.on2.vp9"
iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->mimeType:Ljava/lang/String;
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_1
.line 352
invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->getProfileLevels()[Landroid/media/MediaCodecInfo$CodecProfileLevel;
move-result-object p0
array-length v0, p0
move v1, v2
:goto_0
if-ge v1, v0, :cond_1
aget-object v3, p0, v1
.line 353
iget v3, v3, Landroid/media/MediaCodecInfo$CodecProfileLevel;->profile:I
const/16 v4, 0x4000
if-ne v3, v4, :cond_0
const/4 p0, 0x1
return p0
:cond_0
add-int/lit8 v1, v1, 0x1
goto :goto_0
:cond_1
return v2
.end method
.method public isSeamlessAdaptationSupported(Landroidx/media3/common/Format;)Z
.locals 1
iget-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->isVideo:Z
if-eqz v0, :cond_0
iget-boolean p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->adaptive:Z
return p0
.line 376
:cond_0
invoke-static {p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecUtil;->getCodecProfileAndLevel(Landroidx/media3/common/Format;)Landroid/util/Pair;
move-result-object p0
if-eqz p0, :cond_1
.line 377
iget-object p0, p0, Landroid/util/Pair;->first:Ljava/lang/Object;
check-cast p0, Ljava/lang/Integer;
invoke-virtual {p0}, Ljava/lang/Integer;->intValue()I
move-result p0
const/16 p1, 0x2a
if-ne p0, p1, :cond_1
const/4 p0, 0x1
goto :goto_0
:cond_1
const/4 p0, 0x0
:goto_0
return p0
.end method
.method public isSeamlessAdaptationSupported(Landroidx/media3/common/Format;Landroidx/media3/common/Format;Z)Z
.locals 0
.annotation runtime Ljava/lang/Deprecated;
.end annotation
if-nez p3, :cond_0
.line 399
iget-object p3, p1, Landroidx/media3/common/Format;->colorInfo:Landroidx/media3/common/ColorInfo;
if-eqz p3, :cond_0
iget-object p3, p2, Landroidx/media3/common/Format;->colorInfo:Landroidx/media3/common/ColorInfo;
if-nez p3, :cond_0
.line 400
invoke-virtual {p2}, Landroidx/media3/common/Format;->buildUpon()Landroidx/media3/common/Format$Builder;
move-result-object p2
iget-object p3, p1, Landroidx/media3/common/Format;->colorInfo:Landroidx/media3/common/ColorInfo;
invoke-virtual {p2, p3}, Landroidx/media3/common/Format$Builder;->setColorInfo(Landroidx/media3/common/ColorInfo;)Landroidx/media3/common/Format$Builder;
move-result-object p2
invoke-virtual {p2}, Landroidx/media3/common/Format$Builder;->build()Landroidx/media3/common/Format;
move-result-object p2
.line 402
:cond_0
invoke-virtual {p0, p1, p2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->canReuseCodec(Landroidx/media3/common/Format;Landroidx/media3/common/Format;)Landroidx/media3/exoplayer/DecoderReuseEvaluation;
move-result-object p0
iget p0, p0, Landroidx/media3/exoplayer/DecoderReuseEvaluation;->result:I
const/4 p1, 0x2
if-eq p0, p1, :cond_2
const/4 p1, 0x3
if-ne p0, p1, :cond_1
goto :goto_0
:cond_1
const/4 p0, 0x0
goto :goto_1
:cond_2
:goto_0
const/4 p0, 0x1
:goto_1
return p0
.end method
.method public isVideoSizeAndRateSupportedV21(IID)Z
.locals 7
iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->capabilities:Landroid/media/MediaCodecInfo$CodecCapabilities;
const/4 v1, 0x0
if-nez v0, :cond_0
const-string p1, "sizeAndRate.caps"
.line 513
invoke-direct {p0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->logNoSupport(Ljava/lang/String;)V
return v1
.line 516
:cond_0
invoke-virtual {v0}, Landroid/media/MediaCodecInfo$CodecCapabilities;->getVideoCapabilities()Landroid/media/MediaCodecInfo$VideoCapabilities;
move-result-object v0
if-nez v0, :cond_1
const-string p1, "sizeAndRate.vCaps"
.line 518
invoke-direct {p0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->logNoSupport(Ljava/lang/String;)V
return v1
.line 522
:cond_1
sget v2, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v3, 0x1d
const-string v4, "@"
const-string v5, "x"
const/4 v6, 0x1
if-lt v2, v3, :cond_3
.line 525
invoke-static {v0, p1, p2, p3, p4}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo$Api29;->areResolutionAndFrameRateCovered(Landroid/media/MediaCodecInfo$VideoCapabilities;IID)I
move-result v2
const/4 v3, 0x2
if-ne v2, v3, :cond_2
return v6
:cond_2
if-ne v2, v6, :cond_3
.line 529
new-instance v0, Ljava/lang/StringBuilder;
const-string v2, "sizeAndRate.cover, "
invoke-direct {v0, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1, p3, p4}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->logNoSupport(Ljava/lang/String;)V
return v1
.line 535
:cond_3
invoke-static {v0, p1, p2, p3, p4}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->areSizeAndRateSupportedV21(Landroid/media/MediaCodecInfo$VideoCapabilities;IID)Z
move-result v2
if-nez v2, :cond_6
if-ge p1, p2, :cond_5
iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->name:Ljava/lang/String;
.line 537
invoke-static {v2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->needsRotatedVerticalResolutionWorkaround(Ljava/lang/String;)Z
move-result v2
if-eqz v2, :cond_5
.line 538
invoke-static {v0, p2, p1, p3, p4}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->areSizeAndRateSupportedV21(Landroid/media/MediaCodecInfo$VideoCapabilities;IID)Z
move-result v0
if-nez v0, :cond_4
goto :goto_0
.line 542
:cond_4
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "sizeAndRate.rotated, "
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1, p3, p4}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->logAssumedSupport(Ljava/lang/String;)V
goto :goto_1
.line 539
:cond_5
:goto_0
new-instance v0, Ljava/lang/StringBuilder;
const-string v2, "sizeAndRate.support, "
invoke-direct {v0, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1, p3, p4}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->logNoSupport(Ljava/lang/String;)V
return v1
:cond_6
:goto_1
return v6
.end method
.method public toString()Ljava/lang/String;
.locals 0
iget-object p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->name:Ljava/lang/String;
return-object p0
.end method