IcyDecoder.smali
.class public final Lcom/google/android/exoplayer2/metadata/icy/IcyDecoder;
.super Ljava/lang/Object;
.source "IcyDecoder.java"
# interfaces
.implements Lcom/google/android/exoplayer2/metadata/MetadataDecoder;
# static fields
.field private static final METADATA_ELEMENT:Ljava/util/regex/Pattern;
.field private static final STREAM_KEY_NAME:Ljava/lang/String; = "streamtitle"
.field private static final STREAM_KEY_URL:Ljava/lang/String; = "streamurl"
.field private static final TAG:Ljava/lang/String; = "IcyDecoder"
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 34
const-string v0, "(.+?)=\'(.+?)\';"
invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
move-result-object v0
sput-object v0, Lcom/google/android/exoplayer2/metadata/icy/IcyDecoder;->METADATA_ELEMENT:Ljava/util/regex/Pattern;
return-void
.end method
.method public constructor <init>()V
.registers 1
.line 30
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public decode(Lcom/google/android/exoplayer2/metadata/MetadataInputBuffer;)Lcom/google/android/exoplayer2/metadata/Metadata;
.registers 6
.param p1, "inputBuffer" # Lcom/google/android/exoplayer2/metadata/MetadataInputBuffer;
.line 42
iget-object v0, p1, Lcom/google/android/exoplayer2/metadata/MetadataInputBuffer;->data:Ljava/nio/ByteBuffer;
.line 43
.local v0, "buffer":Ljava/nio/ByteBuffer;
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->array()[B
move-result-object v1
.line 44
.local v1, "data":[B
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->limit()I
move-result v2
.line 45
.local v2, "length":I
const/4 v3, 0x0
invoke-static {v1, v3, v2}, Lcom/google/android/exoplayer2/util/Util;->fromUtf8Bytes([BII)Ljava/lang/String;
move-result-object v3
invoke-virtual {p0, v3}, Lcom/google/android/exoplayer2/metadata/icy/IcyDecoder;->decode(Ljava/lang/String;)Lcom/google/android/exoplayer2/metadata/Metadata;
move-result-object v3
return-object v3
.end method
.method decode(Ljava/lang/String;)Lcom/google/android/exoplayer2/metadata/Metadata;
.registers 13
.param p1, "metadata" # Ljava/lang/String;
.line 51
const/4 v0, 0x0
.line 52
.local v0, "name":Ljava/lang/String;
const/4 v1, 0x0
.line 53
.local v1, "url":Ljava/lang/String;
const/4 v2, 0x0
.line 54
.local v2, "index":I
sget-object v3, Lcom/google/android/exoplayer2/metadata/icy/IcyDecoder;->METADATA_ELEMENT:Ljava/util/regex/Pattern;
invoke-virtual {v3, p1}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
move-result-object v3
.line 55
.local v3, "matcher":Ljava/util/regex/Matcher;
:goto_9
invoke-virtual {v3, v2}, Ljava/util/regex/Matcher;->find(I)Z
move-result v4
const/4 v5, 0x0
const/4 v6, 0x1
if-eqz v4, :cond_68
.line 56
invoke-virtual {v3, v6}, Ljava/util/regex/Matcher;->group(I)Ljava/lang/String;
move-result-object v4
invoke-static {v4}, Lcom/google/android/exoplayer2/util/Util;->toLowerInvariant(Ljava/lang/String;)Ljava/lang/String;
move-result-object v4
.line 57
.local v4, "key":Ljava/lang/String;
const/4 v7, 0x2
invoke-virtual {v3, v7}, Ljava/util/regex/Matcher;->group(I)Ljava/lang/String;
move-result-object v7
.line 58
.local v7, "value":Ljava/lang/String;
const/4 v8, -0x1
invoke-virtual {v4}, Ljava/lang/String;->hashCode()I
move-result v9
const v10, -0x12cfba11
if-eq v9, v10, :cond_38
const v10, 0x622482d8
if-eq v9, v10, :cond_2e
:cond_2d
goto :goto_43
:cond_2e
const-string/jumbo v9, "streamtitle"
invoke-virtual {v4, v9}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v9
if-eqz v9, :cond_2d
goto :goto_44
:cond_38
const-string/jumbo v5, "streamurl"
invoke-virtual {v4, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_2d
const/4 v5, 0x1
goto :goto_44
:goto_43
const/4 v5, -0x1
:goto_44
if-eqz v5, :cond_61
if-eq v5, v6, :cond_5f
.line 66
new-instance v5, Ljava/lang/StringBuilder;
invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
const-string v6, "Unrecognized ICY tag: "
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v5
const-string v6, "IcyDecoder"
invoke-static {v6, v5}, Lcom/google/android/exoplayer2/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_63
.line 63
:cond_5f
move-object v1, v7
.line 64
goto :goto_63
.line 60
:cond_61
move-object v0, v7
.line 61
nop
.line 69
:goto_63
invoke-virtual {v3}, Ljava/util/regex/Matcher;->end()I
move-result v2
.line 70
.end local v4 # "key":Ljava/lang/String;
.end local v7 # "value":Ljava/lang/String;
goto :goto_9
.line 71
:cond_68
if-nez v0, :cond_6f
if-eqz v1, :cond_6d
goto :goto_6f
:cond_6d
const/4 v4, 0x0
goto :goto_7d
:cond_6f
:goto_6f
new-instance v4, Lcom/google/android/exoplayer2/metadata/Metadata;
new-array v6, v6, [Lcom/google/android/exoplayer2/metadata/Metadata$Entry;
new-instance v7, Lcom/google/android/exoplayer2/metadata/icy/IcyInfo;
invoke-direct {v7, v0, v1}, Lcom/google/android/exoplayer2/metadata/icy/IcyInfo;-><init>(Ljava/lang/String;Ljava/lang/String;)V
aput-object v7, v6, v5
invoke-direct {v4, v6}, Lcom/google/android/exoplayer2/metadata/Metadata;-><init>([Lcom/google/android/exoplayer2/metadata/Metadata$Entry;)V
:goto_7d
return-object v4
.end method