MP3Frame$Header.smali
.class public Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;
.super Ljava/lang/Object;
.source "MP3Frame.java"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x9
name = "Header"
.end annotation
# static fields
.field private static final BITRATES:[[I
.field private static final BITRATES_COLUMN:[[I
.field private static final FREQUENCIES:[[I
.field private static final MPEG_BITRATE_FREE:I = 0x0
.field private static final MPEG_BITRATE_RESERVED:I = 0xf
.field public static final MPEG_CHANNEL_MODE_MONO:I = 0x3
.field private static final MPEG_FRQUENCY_RESERVED:I = 0x3
.field public static final MPEG_LAYER_1:I = 0x3
.field public static final MPEG_LAYER_2:I = 0x2
.field public static final MPEG_LAYER_3:I = 0x1
.field private static final MPEG_LAYER_RESERVED:I = 0x0
.field public static final MPEG_PROTECTION_CRC:I = 0x0
.field public static final MPEG_VERSION_1:I = 0x3
.field public static final MPEG_VERSION_2:I = 0x2
.field public static final MPEG_VERSION_2_5:I = 0x0
.field private static final MPEG_VERSION_RESERVED:I = 0x1
.field private static final SIDE_INFO_SIZES:[[I
.field private static final SIZE_COEFFICIENTS:[[I
.field private static final SLOT_SIZES:[I
# instance fields
.field private final bitrate:I
.field private final channelMode:I
.field private final frequency:I
.field private final layer:I
.field private final padding:I
.field private final protection:I
.field private final version:I
# direct methods
.method static constructor <clinit>()V
.registers 9
.line 56
const/4 v0, 0x4
new-array v1, v0, [[I
new-array v2, v0, [I
fill-array-data v2, :array_116
const/4 v3, 0x0
aput-object v2, v1, v3
new-array v2, v0, [I
fill-array-data v2, :array_122
const/4 v4, 0x1
aput-object v2, v1, v4
new-array v2, v0, [I
fill-array-data v2, :array_12e
const/4 v5, 0x2
aput-object v2, v1, v5
new-array v2, v0, [I
fill-array-data v2, :array_13a
const/4 v6, 0x3
aput-object v2, v1, v6
sput-object v1, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->FREQUENCIES:[[I
.line 65
const/16 v1, 0x10
new-array v1, v1, [[I
const/4 v2, 0x5
new-array v7, v2, [I
fill-array-data v7, :array_146
aput-object v7, v1, v3
new-array v7, v2, [I
fill-array-data v7, :array_154
aput-object v7, v1, v4
new-array v7, v2, [I
fill-array-data v7, :array_162
aput-object v7, v1, v5
new-array v7, v2, [I
fill-array-data v7, :array_170
aput-object v7, v1, v6
new-array v7, v2, [I
fill-array-data v7, :array_17e
aput-object v7, v1, v0
new-array v7, v2, [I
fill-array-data v7, :array_18c
aput-object v7, v1, v2
new-array v7, v2, [I
fill-array-data v7, :array_19a
const/4 v8, 0x6
aput-object v7, v1, v8
new-array v7, v2, [I
fill-array-data v7, :array_1a8
const/4 v8, 0x7
aput-object v7, v1, v8
new-array v7, v2, [I
fill-array-data v7, :array_1b6
const/16 v8, 0x8
aput-object v7, v1, v8
new-array v7, v2, [I
fill-array-data v7, :array_1c4
const/16 v8, 0x9
aput-object v7, v1, v8
new-array v7, v2, [I
fill-array-data v7, :array_1d2
const/16 v8, 0xa
aput-object v7, v1, v8
new-array v7, v2, [I
fill-array-data v7, :array_1e0
const/16 v8, 0xb
aput-object v7, v1, v8
new-array v7, v2, [I
fill-array-data v7, :array_1ee
const/16 v8, 0xc
aput-object v7, v1, v8
new-array v7, v2, [I
fill-array-data v7, :array_1fc
const/16 v8, 0xd
aput-object v7, v1, v8
new-array v7, v2, [I
fill-array-data v7, :array_20a
const/16 v8, 0xe
aput-object v7, v1, v8
new-array v2, v2, [I
fill-array-data v2, :array_218
const/16 v7, 0xf
aput-object v2, v1, v7
sput-object v1, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->BITRATES:[[I
.line 85
new-array v1, v0, [[I
new-array v2, v0, [I
fill-array-data v2, :array_226
aput-object v2, v1, v3
new-array v2, v0, [I
fill-array-data v2, :array_232
aput-object v2, v1, v4
new-array v2, v0, [I
fill-array-data v2, :array_23e
aput-object v2, v1, v5
new-array v2, v0, [I
fill-array-data v2, :array_24a
aput-object v2, v1, v6
sput-object v1, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->BITRATES_COLUMN:[[I
.line 94
new-array v1, v0, [[I
new-array v2, v0, [I
fill-array-data v2, :array_256
aput-object v2, v1, v3
new-array v2, v0, [I
fill-array-data v2, :array_262
aput-object v2, v1, v4
new-array v2, v0, [I
fill-array-data v2, :array_26e
aput-object v2, v1, v5
new-array v2, v0, [I
fill-array-data v2, :array_27a
aput-object v2, v1, v6
sput-object v1, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->SIZE_COEFFICIENTS:[[I
.line 103
new-array v1, v0, [I
fill-array-data v1, :array_286
sput-object v1, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->SLOT_SIZES:[I
.line 109
new-array v1, v0, [[I
new-array v2, v0, [I
fill-array-data v2, :array_292
aput-object v2, v1, v3
new-array v2, v0, [I
fill-array-data v2, :array_29e
aput-object v2, v1, v4
new-array v2, v0, [I
fill-array-data v2, :array_2aa
aput-object v2, v1, v5
new-array v0, v0, [I
fill-array-data v0, :array_2b6
aput-object v0, v1, v6
sput-object v1, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->SIDE_INFO_SIZES:[[I
return-void
:array_116
.array-data 4
0x2b11
-0x1
0x5622
0xac44
.end array-data
:array_122
.array-data 4
0x2ee0
-0x1
0x5dc0
0xbb80
.end array-data
:array_12e
.array-data 4
0x1f40
-0x1
0x3e80
0x7d00
.end array-data
:array_13a
.array-data 4
-0x1
-0x1
-0x1
-0x1
.end array-data
:array_146
.array-data 4
0x0
0x0
0x0
0x0
0x0
.end array-data
:array_154
.array-data 4
0x7d00
0x7d00
0x7d00
0x7d00
0x1f40
.end array-data
:array_162
.array-data 4
0xfa00
0xbb80
0x9c40
0xbb80
0x3e80
.end array-data
:array_170
.array-data 4
0x17700
0xdac0
0xbb80
0xdac0
0x5dc0
.end array-data
:array_17e
.array-data 4
0x1f400
0xfa00
0xdac0
0xfa00
0x7d00
.end array-data
:array_18c
.array-data 4
0x27100
0x13880
0xfa00
0x13880
0x9c40
.end array-data
:array_19a
.array-data 4
0x2ee00
0x17700
0x13880
0x17700
0xbb80
.end array-data
:array_1a8
.array-data 4
0x36b00
0x1b580
0x17700
0x1b580
0xdac0
.end array-data
:array_1b6
.array-data 4
0x3e800
0x1f400
0x1b580
0x1f400
0xfa00
.end array-data
:array_1c4
.array-data 4
0x46500
0x27100
0x1f400
0x23280
0x13880
.end array-data
:array_1d2
.array-data 4
0x4e200
0x2ee00
0x27100
0x27100
0x17700
.end array-data
:array_1e0
.array-data 4
0x55f00
0x36b00
0x2ee00
0x2af80
0x1b580
.end array-data
:array_1ee
.array-data 4
0x5dc00
0x3e800
0x36b00
0x2ee00
0x1f400
.end array-data
:array_1fc
.array-data 4
0x65900
0x4e200
0x3e800
0x36b00
0x23280
.end array-data
:array_20a
.array-data 4
0x6d600
0x5dc00
0x4e200
0x3e800
0x27100
.end array-data
:array_218
.array-data 4
-0x1
-0x1
-0x1
-0x1
-0x1
.end array-data
:array_226
.array-data 4
-0x1
0x4
0x4
0x3
.end array-data
:array_232
.array-data 4
-0x1
-0x1
-0x1
-0x1
.end array-data
:array_23e
.array-data 4
-0x1
0x4
0x4
0x3
.end array-data
:array_24a
.array-data 4
-0x1
0x2
0x1
0x0
.end array-data
:array_256
.array-data 4
-0x1
0x48
0x90
0xc
.end array-data
:array_262
.array-data 4
-0x1
-0x1
-0x1
-0x1
.end array-data
:array_26e
.array-data 4
-0x1
0x48
0x90
0xc
.end array-data
:array_27a
.array-data 4
-0x1
0x90
0x90
0xc
.end array-data
:array_286
.array-data 4
-0x1
0x1
0x1
0x4
.end array-data
:array_292
.array-data 4
0x11
-0x1
0x11
0x20
.end array-data
:array_29e
.array-data 4
0x11
-0x1
0x11
0x20
.end array-data
:array_2aa
.array-data 4
0x11
-0x1
0x11
0x20
.end array-data
:array_2b6
.array-data 4
0x9
-0x1
0x9
0x11
.end array-data
.end method
.method public constructor <init>(III)V
.registers 8
.param p1, "b1" # I
.param p2, "b2" # I
.param p3, "b3" # I
.annotation system Ldalvik/annotation/Throws;
value = {
Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Exception;
}
.end annotation
.line 136
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 137
shr-int/lit8 v0, p1, 0x3
const/4 v1, 0x3
and-int/2addr v0, v1
iput v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->version:I
.line 138
const/4 v2, 0x1
if-eq v0, v2, :cond_7f
.line 141
shr-int/lit8 v0, p1, 0x1
and-int/2addr v0, v1
iput v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->layer:I
.line 142
if-eqz v0, :cond_77
.line 145
shr-int/lit8 v0, p2, 0x4
const/16 v3, 0xf
and-int/2addr v0, v3
iput v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->bitrate:I
.line 146
if-eq v0, v3, :cond_6f
.line 149
if-eqz v0, :cond_67
.line 152
shr-int/lit8 v0, p2, 0x2
and-int/2addr v0, v1
iput v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->frequency:I
.line 153
if-eq v0, v1, :cond_5f
.line 156
shr-int/lit8 v0, p3, 0x6
and-int/2addr v0, v1
iput v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->channelMode:I
.line 157
shr-int/lit8 v0, p2, 0x1
and-int/2addr v0, v2
iput v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->padding:I
.line 158
and-int/lit8 v0, p1, 0x1
iput v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->protection:I
.line 160
const/4 v1, 0x4
.line 161
.local v1, "minFrameSize":I
if-nez v0, :cond_38
.line 162
add-int/lit8 v1, v1, 0x2
.line 164
:cond_38
iget v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->layer:I
if-ne v0, v2, :cond_41
.line 165
invoke-virtual {p0}, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->getSideInfoSize()I
move-result v0
add-int/2addr v1, v0
.line 167
:cond_41
invoke-virtual {p0}, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->getFrameSize()I
move-result v0
if-lt v0, v1, :cond_48
.line 170
return-void
.line 168
:cond_48
new-instance v0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Exception;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "Frame size must be at least "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v0, v2}, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Exception;-><init>(Ljava/lang/String;)V
throw v0
.line 154
.end local v1 # "minFrameSize":I
:cond_5f
new-instance v0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Exception;
const-string v1, "Reserved frequency"
invoke-direct {v0, v1}, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Exception;-><init>(Ljava/lang/String;)V
throw v0
.line 150
:cond_67
new-instance v0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Exception;
const-string v1, "Free bitrate"
invoke-direct {v0, v1}, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Exception;-><init>(Ljava/lang/String;)V
throw v0
.line 147
:cond_6f
new-instance v0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Exception;
const-string v1, "Reserved bitrate"
invoke-direct {v0, v1}, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Exception;-><init>(Ljava/lang/String;)V
throw v0
.line 143
:cond_77
new-instance v0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Exception;
const-string v1, "Reserved layer"
invoke-direct {v0, v1}, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Exception;-><init>(Ljava/lang/String;)V
throw v0
.line 139
:cond_7f
new-instance v0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Exception;
const-string v1, "Reserved version"
invoke-direct {v0, v1}, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Exception;-><init>(Ljava/lang/String;)V
throw v0
.end method
# virtual methods
.method public getBitrate()I
.registers 4
.line 205
sget-object v0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->BITRATES:[[I
iget v1, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->bitrate:I
aget-object v0, v0, v1
sget-object v1, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->BITRATES_COLUMN:[[I
iget v2, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->version:I
aget-object v1, v1, v2
iget v2, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->layer:I
aget v1, v1, v2
aget v0, v0, v1
return v0
.end method
.method public getChannelMode()I
.registers 2
.line 185
iget v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->channelMode:I
return v0
.end method
.method public getDuration()I
.registers 3
.line 209
invoke-virtual {p0}, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->getFrameSize()I
move-result v0
int-to-long v0, v0
invoke-virtual {p0, v0, v1}, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->getTotalDuration(J)J
move-result-wide v0
long-to-int v1, v0
return v1
.end method
.method public getFrameSize()I
.registers 4
.line 201
sget-object v0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->SIZE_COEFFICIENTS:[[I
iget v1, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->version:I
aget-object v0, v0, v1
iget v1, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->layer:I
aget v0, v0, v1
invoke-virtual {p0}, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->getBitrate()I
move-result v1
mul-int v0, v0, v1
invoke-virtual {p0}, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->getFrequency()I
move-result v1
div-int/2addr v0, v1
iget v1, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->padding:I
add-int/2addr v0, v1
sget-object v1, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->SLOT_SIZES:[I
iget v2, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->layer:I
aget v1, v1, v2
mul-int v0, v0, v1
return v0
.end method
.method public getFrequency()I
.registers 3
.line 181
sget-object v0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->FREQUENCIES:[[I
iget v1, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->frequency:I
aget-object v0, v0, v1
iget v1, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->version:I
aget v0, v0, v1
return v0
.end method
.method public getLayer()I
.registers 2
.line 177
iget v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->layer:I
return v0
.end method
.method public getProtection()I
.registers 2
.line 189
iget v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->protection:I
return v0
.end method
.method public getSampleCount()I
.registers 3
.line 193
iget v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->layer:I
const/4 v1, 0x3
if-ne v0, v1, :cond_8
.line 194
const/16 v0, 0x180
return v0
.line 196
:cond_8
const/16 v0, 0x480
return v0
.end method
.method public getSideInfoSize()I
.registers 3
.line 225
sget-object v0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->SIDE_INFO_SIZES:[[I
iget v1, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->channelMode:I
aget-object v0, v0, v1
iget v1, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->version:I
aget v0, v0, v1
return v0
.end method
.method public getTotalDuration(J)J
.registers 7
.param p1, "totalSize" # J
.line 213
invoke-virtual {p0}, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->getSampleCount()I
move-result v0
int-to-long v0, v0
mul-long v0, v0, p1
const-wide/16 v2, 0x3e8
mul-long v0, v0, v2
invoke-virtual {p0}, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->getFrameSize()I
move-result v2
invoke-virtual {p0}, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->getFrequency()I
move-result v3
mul-int v2, v2, v3
int-to-long v2, v2
div-long/2addr v0, v2
.line 214
.local v0, "duration":J
invoke-virtual {p0}, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->getVersion()I
move-result v2
const/4 v3, 0x3
if-eq v2, v3, :cond_27
invoke-virtual {p0}, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->getChannelMode()I
move-result v2
if-ne v2, v3, :cond_27
.line 215
const-wide/16 v2, 0x2
div-long/2addr v0, v2
.line 217
:cond_27
return-wide v0
.end method
.method public getVBRIOffset()I
.registers 2
.line 233
const/16 v0, 0x24
return v0
.end method
.method public getVersion()I
.registers 2
.line 173
iget v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->version:I
return v0
.end method
.method public getXingOffset()I
.registers 2
.line 229
invoke-virtual {p0}, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->getSideInfoSize()I
move-result v0
add-int/lit8 v0, v0, 0x4
return v0
.end method
.method public isCompatible(Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;)Z
.registers 4
.param p1, "header" # Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;
.line 221
iget v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->layer:I
iget v1, p1, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->layer:I
if-ne v0, v1, :cond_1a
iget v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->version:I
iget v1, p1, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->version:I
if-ne v0, v1, :cond_1a
iget v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->frequency:I
iget v1, p1, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->frequency:I
if-ne v0, v1, :cond_1a
iget v0, p0, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->channelMode:I
iget v1, p1, Lim/tpelyyftgw/messenger/audioinfo/mp3/MP3Frame$Header;->channelMode:I
if-ne v0, v1, :cond_1a
const/4 v0, 0x1
goto :goto_1b
:cond_1a
const/4 v0, 0x0
:goto_1b
return v0
.end method