ID3v2FrameHeader.smali
.class public Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;
.super Ljava/lang/Object;
.source "ID3v2FrameHeader.java"
# instance fields
.field private bodySize:I
.field private compression:Z
.field private dataLengthIndicator:I
.field private encryption:Z
.field private frameId:Ljava/lang/String;
.field private headerSize:I
.field private unsynchronization:Z
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagBody;)V
.registers 16
.param p1, "input" # Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagBody;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2Exception;
}
.end annotation
.line 29
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 30
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagBody;->getPosition()J
move-result-wide v0
.line 32
.local v0, "startPosition":J
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagBody;->getData()Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2DataInput;
move-result-object v2
.line 37
.local v2, "data":Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2DataInput;
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagBody;->getTagHeader()Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagHeader;
move-result-object v3
invoke-virtual {v3}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagHeader;->getVersion()I
move-result v3
const-string v4, "ISO-8859-1"
const/4 v5, 0x4
const/4 v6, 0x2
const/4 v7, 0x3
if-ne v3, v6, :cond_26
.line 38
new-instance v3, Ljava/lang/String;
invoke-virtual {v2, v7}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2DataInput;->readFully(I)[B
move-result-object v8
invoke-direct {v3, v8, v4}, Ljava/lang/String;-><init>([BLjava/lang/String;)V
iput-object v3, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->frameId:Ljava/lang/String;
goto :goto_31
.line 40
:cond_26
new-instance v3, Ljava/lang/String;
invoke-virtual {v2, v5}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2DataInput;->readFully(I)[B
move-result-object v8
invoke-direct {v3, v8, v4}, Ljava/lang/String;-><init>([BLjava/lang/String;)V
iput-object v3, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->frameId:Ljava/lang/String;
.line 46
:goto_31
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagBody;->getTagHeader()Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagHeader;
move-result-object v3
invoke-virtual {v3}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagHeader;->getVersion()I
move-result v3
if-ne v3, v6, :cond_56
.line 47
invoke-virtual {v2}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2DataInput;->readByte()B
move-result v3
and-int/lit16 v3, v3, 0xff
shl-int/lit8 v3, v3, 0x10
invoke-virtual {v2}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2DataInput;->readByte()B
move-result v4
and-int/lit16 v4, v4, 0xff
shl-int/lit8 v4, v4, 0x8
or-int/2addr v3, v4
invoke-virtual {v2}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2DataInput;->readByte()B
move-result v4
and-int/lit16 v4, v4, 0xff
or-int/2addr v3, v4
iput v3, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->bodySize:I
goto :goto_6d
.line 48
:cond_56
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagBody;->getTagHeader()Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagHeader;
move-result-object v3
invoke-virtual {v3}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagHeader;->getVersion()I
move-result v3
if-ne v3, v7, :cond_67
.line 49
invoke-virtual {v2}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2DataInput;->readInt()I
move-result v3
iput v3, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->bodySize:I
goto :goto_6d
.line 51
:cond_67
invoke-virtual {v2}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2DataInput;->readSyncsafeInt()I
move-result v3
iput v3, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->bodySize:I
.line 57
:goto_6d
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagBody;->getTagHeader()Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagHeader;
move-result-object v3
invoke-virtual {v3}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagHeader;->getVersion()I
move-result v3
if-le v3, v6, :cond_10c
.line 58
invoke-virtual {v2}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2DataInput;->readByte()B
.line 59
invoke-virtual {v2}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2DataInput;->readByte()B
move-result v3
.line 63
.local v3, "formatFlags":B
const/4 v4, 0x0
.line 64
.local v4, "unsynchronizationMask":I
const/4 v6, 0x0
.line 65
.local v6, "dataLengthIndicatorMask":I
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagBody;->getTagHeader()Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagHeader;
move-result-object v8
invoke-virtual {v8}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagHeader;->getVersion()I
move-result v8
if-ne v8, v7, :cond_91
.line 66
const/16 v8, 0x80
.line 67
.local v8, "compressionMask":I
const/16 v9, 0x40
.line 68
.local v9, "encryptionMask":I
const/16 v10, 0x20
.local v10, "groupingIdentityMask":I
goto :goto_98
.line 70
.end local v8 # "compressionMask":I
.end local v9 # "encryptionMask":I
.end local v10 # "groupingIdentityMask":I
:cond_91
const/16 v10, 0x40
.line 71
.restart local v10 # "groupingIdentityMask":I
const/16 v8, 0x8
.line 72
.restart local v8 # "compressionMask":I
const/4 v9, 0x4
.line 73
.restart local v9 # "encryptionMask":I
const/4 v4, 0x2
.line 74
const/4 v6, 0x1
.line 76
:goto_98
and-int v11, v3, v8
const/4 v12, 0x0
const/4 v13, 0x1
if-eqz v11, :cond_a0
const/4 v11, 0x1
goto :goto_a1
:cond_a0
const/4 v11, 0x0
:goto_a1
iput-boolean v11, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->compression:Z
.line 77
and-int v11, v3, v4
if-eqz v11, :cond_a9
const/4 v11, 0x1
goto :goto_aa
:cond_a9
const/4 v11, 0x0
:goto_aa
iput-boolean v11, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->unsynchronization:Z
.line 78
and-int v11, v3, v9
if-eqz v11, :cond_b1
const/4 v12, 0x1
:cond_b1
iput-boolean v12, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->encryption:Z
.line 83
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagBody;->getTagHeader()Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagHeader;
move-result-object v11
invoke-virtual {v11}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagHeader;->getVersion()I
move-result v11
if-ne v11, v7, :cond_e5
.line 84
iget-boolean v7, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->compression:Z
if-eqz v7, :cond_cc
.line 85
invoke-virtual {v2}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2DataInput;->readInt()I
move-result v7
iput v7, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->dataLengthIndicator:I
.line 86
iget v7, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->bodySize:I
sub-int/2addr v7, v5
iput v7, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->bodySize:I
.line 88
:cond_cc
iget-boolean v5, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->encryption:Z
if-eqz v5, :cond_d8
.line 89
invoke-virtual {v2}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2DataInput;->readByte()B
.line 90
iget v5, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->bodySize:I
sub-int/2addr v5, v13
iput v5, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->bodySize:I
.line 92
:cond_d8
and-int v5, v3, v10
if-eqz v5, :cond_10c
.line 93
invoke-virtual {v2}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2DataInput;->readByte()B
.line 94
iget v5, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->bodySize:I
sub-int/2addr v5, v13
iput v5, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->bodySize:I
goto :goto_10c
.line 97
:cond_e5
and-int v7, v3, v10
if-eqz v7, :cond_f1
.line 98
invoke-virtual {v2}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2DataInput;->readByte()B
.line 99
iget v7, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->bodySize:I
sub-int/2addr v7, v13
iput v7, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->bodySize:I
.line 101
:cond_f1
iget-boolean v7, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->encryption:Z
if-eqz v7, :cond_fd
.line 102
invoke-virtual {v2}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2DataInput;->readByte()B
.line 103
iget v7, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->bodySize:I
sub-int/2addr v7, v13
iput v7, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->bodySize:I
.line 105
:cond_fd
and-int v7, v3, v6
if-eqz v7, :cond_10c
.line 106
invoke-virtual {v2}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2DataInput;->readSyncsafeInt()I
move-result v7
iput v7, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->dataLengthIndicator:I
.line 107
iget v7, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->bodySize:I
sub-int/2addr v7, v5
iput v7, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->bodySize:I
.line 112
.end local v3 # "formatFlags":B
.end local v4 # "unsynchronizationMask":I
.end local v6 # "dataLengthIndicatorMask":I
.end local v8 # "compressionMask":I
.end local v9 # "encryptionMask":I
.end local v10 # "groupingIdentityMask":I
:cond_10c
:goto_10c
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2TagBody;->getPosition()J
move-result-wide v3
sub-long/2addr v3, v0
long-to-int v4, v3
iput v4, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->headerSize:I
.line 113
return-void
.end method
# virtual methods
.method public getBodySize()I
.registers 2
.line 124
iget v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->bodySize:I
return v0
.end method
.method public getDataLengthIndicator()I
.registers 2
.line 140
iget v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->dataLengthIndicator:I
return v0
.end method
.method public getFrameId()Ljava/lang/String;
.registers 2
.line 116
iget-object v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->frameId:Ljava/lang/String;
return-object v0
.end method
.method public getHeaderSize()I
.registers 2
.line 120
iget v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->headerSize:I
return v0
.end method
.method public isCompression()Z
.registers 2
.line 128
iget-boolean v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->compression:Z
return v0
.end method
.method public isEncryption()Z
.registers 2
.line 132
iget-boolean v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->encryption:Z
return v0
.end method
.method public isPadding()Z
.registers 4
.line 153
const/4 v0, 0x0
.local v0, "i":I
:goto_1
iget-object v1, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->frameId:Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v1
const/4 v2, 0x0
if-ge v0, v1, :cond_16
.line 154
iget-object v1, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->frameId:Ljava/lang/String;
invoke-virtual {v1, v2}, Ljava/lang/String;->charAt(I)C
move-result v1
if-eqz v1, :cond_13
.line 155
return v2
.line 153
:cond_13
add-int/lit8 v0, v0, 0x1
goto :goto_1
.line 158
.end local v0 # "i":I
:cond_16
iget v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->bodySize:I
if-nez v0, :cond_1b
const/4 v2, 0x1
:cond_1b
return v2
.end method
.method public isUnsynchronization()Z
.registers 2
.line 136
iget-boolean v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->unsynchronization:Z
return v0
.end method
.method public isValid()Z
.registers 5
.line 144
const/4 v0, 0x0
.local v0, "i":I
:goto_1
iget-object v1, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->frameId:Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v1
const/4 v2, 0x0
if-ge v0, v1, :cond_37
.line 145
iget-object v1, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->frameId:Ljava/lang/String;
invoke-virtual {v1, v0}, Ljava/lang/String;->charAt(I)C
move-result v1
const/16 v3, 0x41
if-lt v1, v3, :cond_1e
iget-object v1, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->frameId:Ljava/lang/String;
invoke-virtual {v1, v0}, Ljava/lang/String;->charAt(I)C
move-result v1
const/16 v3, 0x5a
if-le v1, v3, :cond_33
:cond_1e
iget-object v1, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->frameId:Ljava/lang/String;
invoke-virtual {v1, v0}, Ljava/lang/String;->charAt(I)C
move-result v1
const/16 v3, 0x30
if-lt v1, v3, :cond_36
iget-object v1, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->frameId:Ljava/lang/String;
invoke-virtual {v1, v0}, Ljava/lang/String;->charAt(I)C
move-result v1
const/16 v3, 0x39
if-le v1, v3, :cond_33
goto :goto_36
.line 144
:cond_33
add-int/lit8 v0, v0, 0x1
goto :goto_1
.line 146
:cond_36
:goto_36
return v2
.line 149
.end local v0 # "i":I
:cond_37
iget v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->bodySize:I
if-lez v0, :cond_3c
const/4 v2, 0x1
:cond_3c
return v2
.end method
.method public toString()Ljava/lang/String;
.registers 4
.line 163
const/4 v0, 0x3
new-array v0, v0, [Ljava/lang/Object;
invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Class;->getSimpleName()Ljava/lang/String;
move-result-object v1
const/4 v2, 0x0
aput-object v1, v0, v2
iget-object v1, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->frameId:Ljava/lang/String;
const/4 v2, 0x1
aput-object v1, v0, v2
iget v1, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/ID3v2FrameHeader;->bodySize:I
invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v1
const/4 v2, 0x2
aput-object v1, v0, v2
const-string v1, "%s[id=%s, bodysize=%d]"
invoke-static {v1, v0}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object v0
return-object v0
.end method