MimeTypes.smali

.class public final Lcom/google/android/exoplayer2/util/MimeTypes;
.super Ljava/lang/Object;
.source "MimeTypes.java"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lcom/google/android/exoplayer2/util/MimeTypes$CustomMimeType;
    }
.end annotation


# static fields
.field public static final APPLICATION_CAMERA_MOTION:Ljava/lang/String; = "application/x-camera-motion"

.field public static final APPLICATION_CEA608:Ljava/lang/String; = "application/cea-608"

.field public static final APPLICATION_CEA708:Ljava/lang/String; = "application/cea-708"

.field public static final APPLICATION_DVBSUBS:Ljava/lang/String; = "application/dvbsubs"

.field public static final APPLICATION_EMSG:Ljava/lang/String; = "application/x-emsg"

.field public static final APPLICATION_EXIF:Ljava/lang/String; = "application/x-exif"

.field public static final APPLICATION_ICY:Ljava/lang/String; = "application/x-icy"

.field public static final APPLICATION_ID3:Ljava/lang/String; = "application/id3"

.field public static final APPLICATION_M3U8:Ljava/lang/String; = "application/x-mpegURL"

.field public static final APPLICATION_MP4:Ljava/lang/String; = "application/mp4"

.field public static final APPLICATION_MP4CEA608:Ljava/lang/String; = "application/x-mp4-cea-608"

.field public static final APPLICATION_MP4VTT:Ljava/lang/String; = "application/x-mp4-vtt"

.field public static final APPLICATION_MPD:Ljava/lang/String; = "application/dash+xml"

.field public static final APPLICATION_PGS:Ljava/lang/String; = "application/pgs"

.field public static final APPLICATION_RAWCC:Ljava/lang/String; = "application/x-rawcc"

.field public static final APPLICATION_SCTE35:Ljava/lang/String; = "application/x-scte35"

.field public static final APPLICATION_SS:Ljava/lang/String; = "application/vnd.ms-sstr+xml"

.field public static final APPLICATION_SUBRIP:Ljava/lang/String; = "application/x-subrip"

.field public static final APPLICATION_TTML:Ljava/lang/String; = "application/ttml+xml"

.field public static final APPLICATION_TX3G:Ljava/lang/String; = "application/x-quicktime-tx3g"

.field public static final APPLICATION_VOBSUB:Ljava/lang/String; = "application/vobsub"

.field public static final APPLICATION_WEBM:Ljava/lang/String; = "application/webm"

.field public static final AUDIO_AAC:Ljava/lang/String; = "audio/mp4a-latm"

.field public static final AUDIO_AC3:Ljava/lang/String; = "audio/ac3"

.field public static final AUDIO_ALAC:Ljava/lang/String; = "audio/alac"

.field public static final AUDIO_ALAW:Ljava/lang/String; = "audio/g711-alaw"

.field public static final AUDIO_AMR_NB:Ljava/lang/String; = "audio/3gpp"

.field public static final AUDIO_AMR_WB:Ljava/lang/String; = "audio/amr-wb"

.field public static final AUDIO_DTS:Ljava/lang/String; = "audio/vnd.dts"

.field public static final AUDIO_DTS_EXPRESS:Ljava/lang/String; = "audio/vnd.dts.hd;profile=lbr"

.field public static final AUDIO_DTS_HD:Ljava/lang/String; = "audio/vnd.dts.hd"

.field public static final AUDIO_E_AC3:Ljava/lang/String; = "audio/eac3"

.field public static final AUDIO_E_AC3_JOC:Ljava/lang/String; = "audio/eac3-joc"

.field public static final AUDIO_FLAC:Ljava/lang/String; = "audio/flac"

.field public static final AUDIO_MLAW:Ljava/lang/String; = "audio/g711-mlaw"

.field public static final AUDIO_MP4:Ljava/lang/String; = "audio/mp4"

.field public static final AUDIO_MPEG:Ljava/lang/String; = "audio/mpeg"

.field public static final AUDIO_MPEG_L1:Ljava/lang/String; = "audio/mpeg-L1"

.field public static final AUDIO_MPEG_L2:Ljava/lang/String; = "audio/mpeg-L2"

.field public static final AUDIO_MSGSM:Ljava/lang/String; = "audio/gsm"

.field public static final AUDIO_OPUS:Ljava/lang/String; = "audio/opus"

.field public static final AUDIO_RAW:Ljava/lang/String; = "audio/raw"

.field public static final AUDIO_TRUEHD:Ljava/lang/String; = "audio/true-hd"

.field public static final AUDIO_UNKNOWN:Ljava/lang/String; = "audio/x-unknown"

.field public static final AUDIO_VORBIS:Ljava/lang/String; = "audio/vorbis"

.field public static final AUDIO_WEBM:Ljava/lang/String; = "audio/webm"

.field public static final BASE_TYPE_APPLICATION:Ljava/lang/String; = "application"

.field public static final BASE_TYPE_AUDIO:Ljava/lang/String; = "audio"

.field public static final BASE_TYPE_TEXT:Ljava/lang/String; = "text"

.field public static final BASE_TYPE_VIDEO:Ljava/lang/String; = "video"

.field public static final TEXT_SSA:Ljava/lang/String; = "text/x-ssa"

.field public static final TEXT_VTT:Ljava/lang/String; = "text/vtt"

.field public static final VIDEO_H263:Ljava/lang/String; = "video/3gpp"

.field public static final VIDEO_H264:Ljava/lang/String; = "video/avc"

.field public static final VIDEO_H265:Ljava/lang/String; = "video/hevc"

.field public static final VIDEO_MP4:Ljava/lang/String; = "video/mp4"

.field public static final VIDEO_MP4V:Ljava/lang/String; = "video/mp4v-es"

.field public static final VIDEO_MPEG:Ljava/lang/String; = "video/mpeg"

.field public static final VIDEO_MPEG2:Ljava/lang/String; = "video/mpeg2"

.field public static final VIDEO_UNKNOWN:Ljava/lang/String; = "video/x-unknown"

.field public static final VIDEO_VC1:Ljava/lang/String; = "video/wvc1"

.field public static final VIDEO_VP8:Ljava/lang/String; = "video/x-vnd.on2.vp8"

.field public static final VIDEO_VP9:Ljava/lang/String; = "video/x-vnd.on2.vp9"

.field public static final VIDEO_WEBM:Ljava/lang/String; = "video/webm"

.field private static final customMimeTypes:Ljava/util/ArrayList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/ArrayList<",
            "Lcom/google/android/exoplayer2/util/MimeTypes$CustomMimeType;",
            ">;"
        }
    .end annotation
.end field


# direct methods
.method static constructor <clinit>()V
    .registers 1

    .line 97
    new-instance v0, Ljava/util/ArrayList;

    invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V

    sput-object v0, Lcom/google/android/exoplayer2/util/MimeTypes;->customMimeTypes:Ljava/util/ArrayList;

    return-void
.end method

.method private constructor <init>()V
    .registers 1

    .line 418
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 420
    return-void
.end method

.method public static getAudioMediaMimeType(Ljava/lang/String;)Ljava/lang/String;
    .registers 8
    .param p0, "codecs"    # Ljava/lang/String;

    .line 188
    const/4 v0, 0x0

    if-nez p0, :cond_4

    .line 189
    return-object v0

    .line 191
    :cond_4
    invoke-static {p0}, Lcom/google/android/exoplayer2/util/Util;->splitCodecs(Ljava/lang/String;)[Ljava/lang/String;

    move-result-object v1

    .line 192
    .local v1, "codecList":[Ljava/lang/String;
    array-length v2, v1

    const/4 v3, 0x0

    :goto_a
    if-ge v3, v2, :cond_1e

    aget-object v4, v1, v3

    .line 193
    .local v4, "codec":Ljava/lang/String;
    invoke-static {v4}, Lcom/google/android/exoplayer2/util/MimeTypes;->getMediaMimeType(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v5

    .line 194
    .local v5, "mimeType":Ljava/lang/String;
    if-eqz v5, :cond_1b

    invoke-static {v5}, Lcom/google/android/exoplayer2/util/MimeTypes;->isAudio(Ljava/lang/String;)Z

    move-result v6

    if-eqz v6, :cond_1b

    .line 195
    return-object v5

    .line 192
    .end local v4    # "codec":Ljava/lang/String;
    .end local v5    # "mimeType":Ljava/lang/String;
    :cond_1b
    add-int/lit8 v3, v3, 0x1

    goto :goto_a

    .line 198
    :cond_1e
    return-object v0
.end method

.method private static getCustomMimeTypeForCodec(Ljava/lang/String;)Ljava/lang/String;
    .registers 5
    .param p0, "codec"    # Ljava/lang/String;

    .line 397
    sget-object v0, Lcom/google/android/exoplayer2/util/MimeTypes;->customMimeTypes:Ljava/util/ArrayList;

    invoke-virtual {v0}, Ljava/util/ArrayList;->size()I

    move-result v0

    .line 398
    .local v0, "customMimeTypeCount":I
    const/4 v1, 0x0

    .local v1, "i":I
    :goto_7
    if-ge v1, v0, :cond_1f

    .line 399
    sget-object v2, Lcom/google/android/exoplayer2/util/MimeTypes;->customMimeTypes:Ljava/util/ArrayList;

    invoke-virtual {v2, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Lcom/google/android/exoplayer2/util/MimeTypes$CustomMimeType;

    .line 400
    .local v2, "customMimeType":Lcom/google/android/exoplayer2/util/MimeTypes$CustomMimeType;
    iget-object v3, v2, Lcom/google/android/exoplayer2/util/MimeTypes$CustomMimeType;->codecPrefix:Ljava/lang/String;

    invoke-virtual {p0, v3}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v3

    if-eqz v3, :cond_1c

    .line 401
    iget-object v3, v2, Lcom/google/android/exoplayer2/util/MimeTypes$CustomMimeType;->mimeType:Ljava/lang/String;

    return-object v3

    .line 398
    .end local v2    # "customMimeType":Lcom/google/android/exoplayer2/util/MimeTypes$CustomMimeType;
    :cond_1c
    add-int/lit8 v1, v1, 0x1

    goto :goto_7

    .line 404
    .end local v1    # "i":I
    :cond_1f
    const/4 v1, 0x0

    return-object v1
.end method

.method public static getEncoding(Ljava/lang/String;)I
    .registers 8
    .param p0, "mimeType"    # Ljava/lang/String;

    .line 352
    invoke-virtual {p0}, Ljava/lang/String;->hashCode()I

    move-result v0

    const/4 v1, 0x0

    const/4 v2, 0x4

    const/4 v3, 0x3

    const/4 v4, 0x2

    const/4 v5, 0x1

    const/4 v6, 0x5

    sparse-switch v0, :sswitch_data_64

    :cond_d
    goto :goto_4a

    :sswitch_e
    const-string v0, "audio/true-hd"

    invoke-virtual {p0, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_d

    const/4 v0, 0x5

    goto :goto_4b

    :sswitch_18
    const-string v0, "audio/vnd.dts.hd"

    invoke-virtual {p0, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_d

    const/4 v0, 0x4

    goto :goto_4b

    :sswitch_22
    const-string v0, "audio/eac3"

    invoke-virtual {p0, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_d

    const/4 v0, 0x1

    goto :goto_4b

    :sswitch_2c
    const-string v0, "audio/ac3"

    invoke-virtual {p0, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_d

    const/4 v0, 0x0

    goto :goto_4b

    :sswitch_36
    const-string v0, "audio/vnd.dts"

    invoke-virtual {p0, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_d

    const/4 v0, 0x3

    goto :goto_4b

    :sswitch_40
    const-string v0, "audio/eac3-joc"

    invoke-virtual {p0, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_d

    const/4 v0, 0x2

    goto :goto_4b

    :goto_4a
    const/4 v0, -0x1

    :goto_4b
    if-eqz v0, :cond_62

    if-eq v0, v5, :cond_60

    if-eq v0, v4, :cond_60

    if-eq v0, v3, :cond_5e

    if-eq v0, v2, :cond_5b

    if-eq v0, v6, :cond_58

    .line 365
    return v1

    .line 363
    :cond_58
    const/16 v0, 0xe

    return v0

    .line 361
    :cond_5b
    const/16 v0, 0x8

    return v0

    .line 359
    :cond_5e
    const/4 v0, 0x7

    return v0

    .line 357
    :cond_60
    const/4 v0, 0x6

    return v0

    .line 354
    :cond_62
    return v6

    nop

    :sswitch_data_64
    .sparse-switch
        -0x7e929daa -> :sswitch_40
        -0x41455b98 -> :sswitch_36
        0xb269698 -> :sswitch_2c
        0x59ae0c65 -> :sswitch_22
        0x59c2dc42 -> :sswitch_18
        0x5cc95062 -> :sswitch_e
    .end sparse-switch
.end method

.method public static getMediaMimeType(Ljava/lang/String;)Ljava/lang/String;
    .registers 6
    .param p0, "codec"    # Ljava/lang/String;

    .line 208
    if-nez p0, :cond_4

    .line 209
    const/4 v0, 0x0

    return-object v0

    .line 211
    :cond_4
    invoke-virtual {p0}, Ljava/lang/String;->trim()Ljava/lang/String;

    move-result-object v0

    invoke-static {v0}, Lcom/google/android/exoplayer2/util/Util;->toLowerInvariant(Ljava/lang/String;)Ljava/lang/String;

    move-result-object p0

    .line 212
    const-string v0, "avc1"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-nez v0, :cond_121

    const-string v0, "avc3"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_1e

    goto/16 :goto_121

    .line 214
    :cond_1e
    const-string v0, "hev1"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-nez v0, :cond_11d

    const-string v0, "hvc1"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_30

    goto/16 :goto_11d

    .line 216
    :cond_30
    const-string/jumbo v0, "vp9"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-nez v0, :cond_119

    const-string/jumbo v0, "vp09"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_44

    goto/16 :goto_119

    .line 218
    :cond_44
    const-string/jumbo v0, "vp8"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-nez v0, :cond_115

    const-string/jumbo v0, "vp08"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_58

    goto/16 :goto_115

    .line 220
    :cond_58
    const-string v0, "mp4a"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_92

    .line 221
    const/4 v0, 0x0

    .line 222
    .local v0, "mimeType":Ljava/lang/String;
    const-string v1, "mp4a."

    invoke-virtual {p0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v1

    if-eqz v1, :cond_8b

    .line 223
    const/4 v1, 0x5

    invoke-virtual {p0, v1}, Ljava/lang/String;->substring(I)Ljava/lang/String;

    move-result-object v1

    .line 224
    .local v1, "objectTypeString":Ljava/lang/String;
    invoke-virtual {v1}, Ljava/lang/String;->length()I

    move-result v2

    const/4 v3, 0x2

    if-lt v2, v3, :cond_8b

    .line 226
    const/4 v2, 0x0

    :try_start_76
    invoke-virtual {v1, v2, v3}, Ljava/lang/String;->substring(II)Ljava/lang/String;

    move-result-object v2

    invoke-static {v2}, Lcom/google/android/exoplayer2/util/Util;->toUpperInvariant(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v2

    .line 227
    .local v2, "objectTypeHexString":Ljava/lang/String;
    const/16 v3, 0x10

    invoke-static {v2, v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;I)I

    move-result v3

    .line 228
    .local v3, "objectTypeInt":I
    invoke-static {v3}, Lcom/google/android/exoplayer2/util/MimeTypes;->getMimeTypeFromMp4ObjectType(I)Ljava/lang/String;

    move-result-object v4
    :try_end_88
    .catch Ljava/lang/NumberFormatException; {:try_start_76 .. :try_end_88} :catch_8a

    move-object v0, v4

    .line 231
    .end local v2    # "objectTypeHexString":Ljava/lang/String;
    .end local v3    # "objectTypeInt":I
    goto :goto_8b

    .line 229
    :catch_8a
    move-exception v2

    .line 234
    .end local v1    # "objectTypeString":Ljava/lang/String;
    :cond_8b
    :goto_8b
    if-nez v0, :cond_90

    const-string v1, "audio/mp4a-latm"

    goto :goto_91

    :cond_90
    move-object v1, v0

    :goto_91
    return-object v1

    .line 235
    .end local v0    # "mimeType":Ljava/lang/String;
    :cond_92
    const-string v0, "ac-3"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-nez v0, :cond_112

    const-string v0, "dac3"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_a4

    goto/16 :goto_112

    .line 237
    :cond_a4
    const-string v0, "ec-3"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-nez v0, :cond_10f

    const-string v0, "dec3"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_b5

    goto :goto_10f

    .line 239
    :cond_b5
    const-string v0, "ec+3"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_c0

    .line 240
    const-string v0, "audio/eac3-joc"

    return-object v0

    .line 241
    :cond_c0
    const-string v0, "dtsc"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-nez v0, :cond_10c

    const-string v0, "dtse"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_d1

    goto :goto_10c

    .line 243
    :cond_d1
    const-string v0, "dtsh"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-nez v0, :cond_109

    const-string v0, "dtsl"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_e2

    goto :goto_109

    .line 245
    :cond_e2
    const-string v0, "opus"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_ed

    .line 246
    const-string v0, "audio/opus"

    return-object v0

    .line 247
    :cond_ed
    const-string/jumbo v0, "vorbis"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_f9

    .line 248
    const-string v0, "audio/vorbis"

    return-object v0

    .line 249
    :cond_f9
    const-string v0, "flac"

    invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_104

    .line 250
    const-string v0, "audio/flac"

    return-object v0

    .line 252
    :cond_104
    invoke-static {p0}, Lcom/google/android/exoplayer2/util/MimeTypes;->getCustomMimeTypeForCodec(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    return-object v0

    .line 244
    :cond_109
    :goto_109
    const-string v0, "audio/vnd.dts.hd"

    return-object v0

    .line 242
    :cond_10c
    :goto_10c
    const-string v0, "audio/vnd.dts"

    return-object v0

    .line 238
    :cond_10f
    :goto_10f
    const-string v0, "audio/eac3"

    return-object v0

    .line 236
    :cond_112
    :goto_112
    const-string v0, "audio/ac3"

    return-object v0

    .line 219
    :cond_115
    :goto_115
    const-string/jumbo v0, "video/x-vnd.on2.vp8"

    return-object v0

    .line 217
    :cond_119
    :goto_119
    const-string/jumbo v0, "video/x-vnd.on2.vp9"

    return-object v0

    .line 215
    :cond_11d
    :goto_11d
    const-string/jumbo v0, "video/hevc"

    return-object v0

    .line 213
    :cond_121
    :goto_121
    const-string/jumbo v0, "video/avc"

    return-object v0
.end method

.method public static getMimeTypeFromMp4ObjectType(I)Ljava/lang/String;
    .registers 2
    .param p0, "objectType"    # I

    .line 265
    const/16 v0, 0x20

    if-eq p0, v0, :cond_55

    const/16 v0, 0x21

    if-eq p0, v0, :cond_51

    const/16 v0, 0x23

    if-eq p0, v0, :cond_4d

    const/16 v0, 0x40

    if-eq p0, v0, :cond_4a

    const/16 v0, 0xa3

    if-eq p0, v0, :cond_46

    const/16 v0, 0xb1

    if-eq p0, v0, :cond_42

    const/16 v0, 0xa5

    if-eq p0, v0, :cond_3f

    const/16 v0, 0xa6

    if-eq p0, v0, :cond_3c

    packed-switch p0, :pswitch_data_5a

    packed-switch p0, :pswitch_data_76

    .line 306
    const/4 v0, 0x0

    return-object v0

    .line 304
    :pswitch_28
    const-string v0, "audio/opus"

    return-object v0

    .line 302
    :pswitch_2b
    const-string v0, "audio/vnd.dts.hd"

    return-object v0

    .line 299
    :pswitch_2e
    const-string v0, "audio/vnd.dts"

    return-object v0

    .line 280
    :pswitch_31
    const-string/jumbo v0, "video/mpeg"

    return-object v0

    .line 283
    :pswitch_35
    const-string v0, "audio/mpeg"

    return-object v0

    .line 278
    :pswitch_38
    const-string/jumbo v0, "video/mpeg2"

    return-object v0

    .line 296
    :cond_3c
    const-string v0, "audio/eac3"

    return-object v0

    .line 294
    :cond_3f
    const-string v0, "audio/ac3"

    return-object v0

    .line 287
    :cond_42
    const-string/jumbo v0, "video/x-vnd.on2.vp9"

    return-object v0

    .line 285
    :cond_46
    const-string/jumbo v0, "video/wvc1"

    return-object v0

    .line 292
    :cond_4a
    :pswitch_4a
    const-string v0, "audio/mp4a-latm"

    return-object v0

    .line 271
    :cond_4d
    const-string/jumbo v0, "video/hevc"

    return-object v0

    .line 269
    :cond_51
    const-string/jumbo v0, "video/avc"

    return-object v0

    .line 267
    :cond_55
    const-string/jumbo v0, "video/mp4v-es"

    return-object v0

    nop

    :pswitch_data_5a
    .packed-switch 0x60
        :pswitch_38
        :pswitch_38
        :pswitch_38
        :pswitch_38
        :pswitch_38
        :pswitch_38
        :pswitch_4a
        :pswitch_4a
        :pswitch_4a
        :pswitch_35
        :pswitch_31
        :pswitch_35
    .end packed-switch

    :pswitch_data_76
    .packed-switch 0xa9
        :pswitch_2e
        :pswitch_2b
        :pswitch_2b
        :pswitch_2e
        :pswitch_28
    .end packed-switch
.end method

.method private static getTopLevelType(Ljava/lang/String;)Ljava/lang/String;
    .registers 5
    .param p0, "mimeType"    # Ljava/lang/String;

    .line 386
    if-nez p0, :cond_4

    .line 387
    const/4 v0, 0x0

    return-object v0

    .line 389
    :cond_4
    const/16 v0, 0x2f

    invoke-virtual {p0, v0}, Ljava/lang/String;->indexOf(I)I

    move-result v0

    .line 390
    .local v0, "indexOfSlash":I
    const/4 v1, -0x1

    if-eq v0, v1, :cond_13

    .line 393
    const/4 v1, 0x0

    invoke-virtual {p0, v1, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String;

    move-result-object v1

    return-object v1

    .line 391
    :cond_13
    new-instance v1, Ljava/lang/IllegalArgumentException;

    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    const-string v3, "Invalid mime type: "

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v2, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

    invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V

    throw v1
.end method

.method public static getTrackType(Ljava/lang/String;)I
    .registers 2
    .param p0, "mimeType"    # Ljava/lang/String;

    .line 319
    invoke-static {p0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v0

    if-eqz v0, :cond_8

    .line 320
    const/4 v0, -0x1

    return v0

    .line 321
    :cond_8
    invoke-static {p0}, Lcom/google/android/exoplayer2/util/MimeTypes;->isAudio(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_10

    .line 322
    const/4 v0, 0x1

    return v0

    .line 323
    :cond_10
    invoke-static {p0}, Lcom/google/android/exoplayer2/util/MimeTypes;->isVideo(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_18

    .line 324
    const/4 v0, 0x2

    return v0

    .line 325
    :cond_18
    invoke-static {p0}, Lcom/google/android/exoplayer2/util/MimeTypes;->isText(Ljava/lang/String;)Z

    move-result v0

    if-nez v0, :cond_a1

    const-string v0, "application/cea-608"

    invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_a1

    .line 326
    const-string v0, "application/cea-708"

    invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_a1

    const-string v0, "application/x-mp4-cea-608"

    invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_a1

    .line 327
    const-string v0, "application/x-subrip"

    invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_a1

    const-string v0, "application/ttml+xml"

    invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_a1

    .line 328
    const-string v0, "application/x-quicktime-tx3g"

    invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_a1

    const-string v0, "application/x-mp4-vtt"

    invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_a1

    .line 329
    const-string v0, "application/x-rawcc"

    invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_a1

    const-string v0, "application/vobsub"

    invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_a1

    .line 330
    const-string v0, "application/pgs"

    invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_a1

    const-string v0, "application/dvbsubs"

    invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_77

    goto :goto_a1

    .line 332
    :cond_77
    const-string v0, "application/id3"

    invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_9f

    .line 333
    const-string v0, "application/x-emsg"

    invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_9f

    .line 334
    const-string v0, "application/x-scte35"

    invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_90

    goto :goto_9f

    .line 336
    :cond_90
    const-string v0, "application/x-camera-motion"

    invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_9a

    .line 337
    const/4 v0, 0x5

    return v0

    .line 339
    :cond_9a
    invoke-static {p0}, Lcom/google/android/exoplayer2/util/MimeTypes;->getTrackTypeForCustomMimeType(Ljava/lang/String;)I

    move-result v0

    return v0

    .line 335
    :cond_9f
    :goto_9f
    const/4 v0, 0x4

    return v0

    .line 331
    :cond_a1
    :goto_a1
    const/4 v0, 0x3

    return v0
.end method

.method private static getTrackTypeForCustomMimeType(Ljava/lang/String;)I
    .registers 5
    .param p0, "mimeType"    # Ljava/lang/String;

    .line 408
    sget-object v0, Lcom/google/android/exoplayer2/util/MimeTypes;->customMimeTypes:Ljava/util/ArrayList;

    invoke-virtual {v0}, Ljava/util/ArrayList;->size()I

    move-result v0

    .line 409
    .local v0, "customMimeTypeCount":I
    const/4 v1, 0x0

    .local v1, "i":I
    :goto_7
    if-ge v1, v0, :cond_1f

    .line 410
    sget-object v2, Lcom/google/android/exoplayer2/util/MimeTypes;->customMimeTypes:Ljava/util/ArrayList;

    invoke-virtual {v2, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Lcom/google/android/exoplayer2/util/MimeTypes$CustomMimeType;

    .line 411
    .local v2, "customMimeType":Lcom/google/android/exoplayer2/util/MimeTypes$CustomMimeType;
    iget-object v3, v2, Lcom/google/android/exoplayer2/util/MimeTypes$CustomMimeType;->mimeType:Ljava/lang/String;

    invoke-virtual {p0, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v3

    if-eqz v3, :cond_1c

    .line 412
    iget v3, v2, Lcom/google/android/exoplayer2/util/MimeTypes$CustomMimeType;->trackType:I

    return v3

    .line 409
    .end local v2    # "customMimeType":Lcom/google/android/exoplayer2/util/MimeTypes$CustomMimeType;
    :cond_1c
    add-int/lit8 v1, v1, 0x1

    goto :goto_7

    .line 415
    .end local v1    # "i":I
    :cond_1f
    const/4 v1, -0x1

    return v1
.end method

.method public static getTrackTypeOfCodec(Ljava/lang/String;)I
    .registers 2
    .param p0, "codec"    # Ljava/lang/String;

    .line 376
    invoke-static {p0}, Lcom/google/android/exoplayer2/util/MimeTypes;->getMediaMimeType(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    invoke-static {v0}, Lcom/google/android/exoplayer2/util/MimeTypes;->getTrackType(Ljava/lang/String;)I

    move-result v0

    return v0
.end method

.method public static getVideoMediaMimeType(Ljava/lang/String;)Ljava/lang/String;
    .registers 8
    .param p0, "codecs"    # Ljava/lang/String;

    .line 168
    const/4 v0, 0x0

    if-nez p0, :cond_4

    .line 169
    return-object v0

    .line 171
    :cond_4
    invoke-static {p0}, Lcom/google/android/exoplayer2/util/Util;->splitCodecs(Ljava/lang/String;)[Ljava/lang/String;

    move-result-object v1

    .line 172
    .local v1, "codecList":[Ljava/lang/String;
    array-length v2, v1

    const/4 v3, 0x0

    :goto_a
    if-ge v3, v2, :cond_1e

    aget-object v4, v1, v3

    .line 173
    .local v4, "codec":Ljava/lang/String;
    invoke-static {v4}, Lcom/google/android/exoplayer2/util/MimeTypes;->getMediaMimeType(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v5

    .line 174
    .local v5, "mimeType":Ljava/lang/String;
    if-eqz v5, :cond_1b

    invoke-static {v5}, Lcom/google/android/exoplayer2/util/MimeTypes;->isVideo(Ljava/lang/String;)Z

    move-result v6

    if-eqz v6, :cond_1b

    .line 175
    return-object v5

    .line 172
    .end local v4    # "codec":Ljava/lang/String;
    .end local v5    # "mimeType":Ljava/lang/String;
    :cond_1b
    add-int/lit8 v3, v3, 0x1

    goto :goto_a

    .line 178
    :cond_1e
    return-object v0
.end method

.method public static isApplication(Ljava/lang/String;)Z
    .registers 3
    .param p0, "mimeType"    # Ljava/lang/String;

    .line 158
    invoke-static {p0}, Lcom/google/android/exoplayer2/util/MimeTypes;->getTopLevelType(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    const-string v1, "application"

    invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    return v0
.end method

.method public static isAudio(Ljava/lang/String;)Z
    .registers 3
    .param p0, "mimeType"    # Ljava/lang/String;

    .line 128
    invoke-static {p0}, Lcom/google/android/exoplayer2/util/MimeTypes;->getTopLevelType(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    const-string v1, "audio"

    invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    return v0
.end method

.method public static isText(Ljava/lang/String;)Z
    .registers 3
    .param p0, "mimeType"    # Ljava/lang/String;

    .line 148
    invoke-static {p0}, Lcom/google/android/exoplayer2/util/MimeTypes;->getTopLevelType(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    const-string/jumbo v1, "text"

    invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    return v0
.end method

.method public static isVideo(Ljava/lang/String;)Z
    .registers 3
    .param p0, "mimeType"    # Ljava/lang/String;

    .line 138
    invoke-static {p0}, Lcom/google/android/exoplayer2/util/MimeTypes;->getTopLevelType(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    const-string/jumbo v1, "video"

    invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    return v0
.end method

.method public static registerCustomMimeType(Ljava/lang/String;Ljava/lang/String;I)V
    .registers 7
    .param p0, "mimeType"    # Ljava/lang/String;
    .param p1, "codecPrefix"    # Ljava/lang/String;
    .param p2, "trackType"    # I

    .line 110
    new-instance v0, Lcom/google/android/exoplayer2/util/MimeTypes$CustomMimeType;

    invoke-direct {v0, p0, p1, p2}, Lcom/google/android/exoplayer2/util/MimeTypes$CustomMimeType;-><init>(Ljava/lang/String;Ljava/lang/String;I)V

    .line 111
    .local v0, "customMimeType":Lcom/google/android/exoplayer2/util/MimeTypes$CustomMimeType;
    sget-object v1, Lcom/google/android/exoplayer2/util/MimeTypes;->customMimeTypes:Ljava/util/ArrayList;

    invoke-virtual {v1}, Ljava/util/ArrayList;->size()I

    move-result v1

    .line 112
    .local v1, "customMimeTypeCount":I
    const/4 v2, 0x0

    .local v2, "i":I
    :goto_c
    if-ge v2, v1, :cond_27

    .line 113
    sget-object v3, Lcom/google/android/exoplayer2/util/MimeTypes;->customMimeTypes:Ljava/util/ArrayList;

    invoke-virtual {v3, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Lcom/google/android/exoplayer2/util/MimeTypes$CustomMimeType;

    iget-object v3, v3, Lcom/google/android/exoplayer2/util/MimeTypes$CustomMimeType;->mimeType:Ljava/lang/String;

    invoke-virtual {p0, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v3

    if-eqz v3, :cond_24

    .line 114
    sget-object v3, Lcom/google/android/exoplayer2/util/MimeTypes;->customMimeTypes:Ljava/util/ArrayList;

    invoke-virtual {v3, v2}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;

    .line 115
    goto :goto_27

    .line 112
    :cond_24
    add-int/lit8 v2, v2, 0x1

    goto :goto_c

    .line 118
    .end local v2    # "i":I
    :cond_27
    :goto_27
    sget-object v2, Lcom/google/android/exoplayer2/util/MimeTypes;->customMimeTypes:Ljava/util/ArrayList;

    invoke-virtual {v2, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    .line 119
    return-void
.end method