.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 (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;->()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;->(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;->(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;->()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;->(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;->(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;->(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;->(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;->(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;->(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;->(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;->(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;->(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;->(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;->(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;->(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;->(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;->(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