MediaCodecHelper.smali
.class public Lcom/yysdk/mobile/vpsdk/MediaCodecHelper;
.super Ljava/lang/Object;
.source "SourceFile"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/yysdk/mobile/vpsdk/MediaCodecHelper$a;
}
.end annotation
# static fields
.field private static final TAG:Ljava/lang/String;
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 9
const-class v0, Lcom/yysdk/mobile/vpsdk/MediaCodecHelper;
invoke-virtual {v0}, Ljava/lang/Class;->getSimpleName()Ljava/lang/String;
move-result-object v0
sput-object v0, Lcom/yysdk/mobile/vpsdk/MediaCodecHelper;->TAG:Ljava/lang/String;
return-void
.end method
.method public constructor <init>()V
.registers 1
.line 8
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static getHardMediaCodecType(Ljava/lang/String;Z)Ljava/lang/String;
.registers 10
.line 73
invoke-static {}, Landroid/media/MediaCodecList;->getCodecCount()I
move-result v0
const/4 v1, 0x0
const/4 v2, 0x0
:goto_6
if-ge v2, v0, :cond_43
.line 75
invoke-static {v2}, Landroid/media/MediaCodecList;->getCodecInfoAt(I)Landroid/media/MediaCodecInfo;
move-result-object v3
.line 78
invoke-virtual {v3}, Landroid/media/MediaCodecInfo;->getName()Ljava/lang/String;
move-result-object v4
invoke-virtual {v4}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;
move-result-object v4
invoke-virtual {v4}, Ljava/lang/String;->trim()Ljava/lang/String;
move-result-object v4
const-string v5, "omx.google"
invoke-virtual {v4, v5}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v4
if-nez v4, :cond_40
.line 82
invoke-virtual {v3}, Landroid/media/MediaCodecInfo;->isEncoder()Z
move-result v4
if-ne p1, v4, :cond_40
.line 86
invoke-virtual {v3}, Landroid/media/MediaCodecInfo;->getSupportedTypes()[Ljava/lang/String;
move-result-object v4
if-eqz v4, :cond_40
.line 91
array-length v5, v4
const/4 v6, 0x0
:goto_2e
if-ge v6, v5, :cond_40
aget-object v7, v4, v6
.line 92
invoke-virtual {v7, p0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v7
if-eqz v7, :cond_3d
.line 93
invoke-virtual {v3}, Landroid/media/MediaCodecInfo;->getName()Ljava/lang/String;
move-result-object p0
return-object p0
:cond_3d
add-int/lit8 v6, v6, 0x1
goto :goto_2e
:cond_40
add-int/lit8 v2, v2, 0x1
goto :goto_6
:cond_43
const/4 p0, 0x0
return-object p0
.end method
.method private static isRecognizedFormat(I)Z
.registers 2
const/16 v0, 0x15
if-eq p0, v0, :cond_6
const/4 p0, 0x0
return p0
:cond_6
const/4 p0, 0x1
return p0
.end method
.method private isSupportEncoderAndDecoder(Ljava/lang/String;)Z
.registers 13
.line 40
invoke-static {}, Landroid/media/MediaCodecList;->getCodecCount()I
move-result v0
const/4 v1, 0x0
const/4 v2, 0x0
const/4 v3, 0x0
const/4 v4, 0x0
:goto_8
const/4 v5, 0x1
if-ge v2, v0, :cond_45
.line 42
invoke-static {v2}, Landroid/media/MediaCodecList;->getCodecInfoAt(I)Landroid/media/MediaCodecInfo;
move-result-object v6
.line 44
invoke-virtual {v6}, Landroid/media/MediaCodecInfo;->getName()Ljava/lang/String;
move-result-object v7
invoke-virtual {v7}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;
move-result-object v7
invoke-virtual {v7}, Ljava/lang/String;->trim()Ljava/lang/String;
move-result-object v7
const-string v8, "omx.google"
invoke-virtual {v7, v8}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v7
if-nez v7, :cond_42
.line 48
invoke-virtual {v6}, Landroid/media/MediaCodecInfo;->getSupportedTypes()[Ljava/lang/String;
move-result-object v7
if-eqz v7, :cond_42
.line 53
array-length v8, v7
const/4 v9, 0x0
:goto_2b
if-ge v9, v8, :cond_42
aget-object v10, v7, v9
.line 54
invoke-virtual {v10, p1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v10
if-eqz v10, :cond_3f
.line 55
invoke-virtual {v6}, Landroid/media/MediaCodecInfo;->isEncoder()Z
move-result v6
if-eqz v6, :cond_3d
const/4 v4, 0x1
goto :goto_42
:cond_3d
const/4 v3, 0x1
goto :goto_42
:cond_3f
add-int/lit8 v9, v9, 0x1
goto :goto_2b
:cond_42
:goto_42
add-int/lit8 v2, v2, 0x1
goto :goto_8
:cond_45
if-eqz v3, :cond_4a
if-eqz v4, :cond_4a
return v5
:cond_4a
return v1
.end method
.method private static selectCodec(Ljava/lang/String;)Landroid/media/MediaCodecInfo;
.registers 8
.line 128
invoke-static {}, Landroid/media/MediaCodecList;->getCodecCount()I
move-result v0
const/4 v1, 0x0
const/4 v2, 0x0
:goto_6
if-ge v2, v0, :cond_37
.line 130
invoke-static {v2}, Landroid/media/MediaCodecList;->getCodecInfoAt(I)Landroid/media/MediaCodecInfo;
move-result-object v3
.line 131
new-instance v4, Ljava/lang/StringBuilder;
const-string v5, "codecName:"
invoke-direct {v4, v5}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v3}, Landroid/media/MediaCodecInfo;->getName()Ljava/lang/String;
move-result-object v5
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 132
invoke-virtual {v3}, Landroid/media/MediaCodecInfo;->isEncoder()Z
move-result v4
if-eqz v4, :cond_34
.line 135
invoke-virtual {v3}, Landroid/media/MediaCodecInfo;->getSupportedTypes()[Ljava/lang/String;
move-result-object v4
const/4 v5, 0x0
.line 136
:goto_25
array-length v6, v4
if-ge v5, v6, :cond_34
.line 137
aget-object v6, v4, v5
invoke-virtual {v6, p0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v6
if-eqz v6, :cond_31
return-object v3
:cond_31
add-int/lit8 v5, v5, 0x1
goto :goto_25
:cond_34
add-int/lit8 v2, v2, 0x1
goto :goto_6
:cond_37
const/4 p0, 0x0
return-object p0
.end method
.method private static selectColorFormat(Ljava/lang/String;)I
.registers 5
.line 103
invoke-static {p0}, Lcom/yysdk/mobile/vpsdk/MediaCodecHelper;->selectCodec(Ljava/lang/String;)Landroid/media/MediaCodecInfo;
move-result-object v0
.line 105
invoke-virtual {v0, p0}, Landroid/media/MediaCodecInfo;->getCapabilitiesForType(Ljava/lang/String;)Landroid/media/MediaCodecInfo$CodecCapabilities;
move-result-object p0
const/4 v0, 0x0
const/4 v1, 0x0
.line 106
:goto_a
iget-object v2, p0, Landroid/media/MediaCodecInfo$CodecCapabilities;->colorFormats:[I
array-length v2, v2
if-ge v1, v2, :cond_1d
.line 107
iget-object v2, p0, Landroid/media/MediaCodecInfo$CodecCapabilities;->colorFormats:[I
aget v2, v2, v1
.line 108
invoke-static {v2}, Lcom/yysdk/mobile/vpsdk/MediaCodecHelper;->isRecognizedFormat(I)Z
move-result v3
if-eqz v3, :cond_1a
return v2
:cond_1a
add-int/lit8 v1, v1, 0x1
goto :goto_a
:cond_1d
return v0
.end method