MP4Box.smali
.class public Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;
.super Ljava/lang/Object;
.source "MP4Box.java"
# annotations
.annotation system Ldalvik/annotation/Signature;
value = {
"<I:",
"Lim/tpelyyftgw/messenger/audioinfo/util/PositionInputStream;",
">",
"Ljava/lang/Object;"
}
.end annotation
# static fields
.field protected static final ASCII:Ljava/lang/String; = "ISO8859_1"
# instance fields
.field private child:Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Atom;
.field protected final data:Ljava/io/DataInput;
.field private final input:Lim/tpelyyftgw/messenger/audioinfo/util/PositionInputStream;
.annotation system Ldalvik/annotation/Signature;
value = {
"TI;"
}
.end annotation
.end field
.field private final parent:Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box<",
"*>;"
}
.end annotation
.end field
.field private final type:Ljava/lang/String;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(Lim/tpelyyftgw/messenger/audioinfo/util/PositionInputStream;Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;Ljava/lang/String;)V
.registers 5
.param p3, "type" # Ljava/lang/String;
.annotation system Ldalvik/annotation/Signature;
value = {
"(TI;",
"Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box<",
"*>;",
"Ljava/lang/String;",
")V"
}
.end annotation
.line 36
.local p0, "this":Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;, "Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box<TI;>;"
.local p1, "input":Lim/tpelyyftgw/messenger/audioinfo/util/PositionInputStream;, "TI;"
.local p2, "parent":Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;, "Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box<*>;"
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 37
iput-object p1, p0, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;->input:Lim/tpelyyftgw/messenger/audioinfo/util/PositionInputStream;
.line 38
iput-object p2, p0, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;->parent:Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;
.line 39
iput-object p3, p0, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;->type:Ljava/lang/String;
.line 40
new-instance v0, Ljava/io/DataInputStream;
invoke-direct {v0, p1}, Ljava/io/DataInputStream;-><init>(Ljava/io/InputStream;)V
iput-object v0, p0, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;->data:Ljava/io/DataInput;
.line 41
return-void
.end method
# virtual methods
.method protected getChild()Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Atom;
.registers 2
.line 60
.local p0, "this":Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;, "Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box<TI;>;"
iget-object v0, p0, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;->child:Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Atom;
return-object v0
.end method
.method public getInput()Lim/tpelyyftgw/messenger/audioinfo/util/PositionInputStream;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()TI;"
}
.end annotation
.line 56
.local p0, "this":Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;, "Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box<TI;>;"
iget-object v0, p0, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;->input:Lim/tpelyyftgw/messenger/audioinfo/util/PositionInputStream;
return-object v0
.end method
.method public getParent()Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box<",
"*>;"
}
.end annotation
.line 48
.local p0, "this":Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;, "Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box<TI;>;"
iget-object v0, p0, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;->parent:Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;
return-object v0
.end method
.method public getPosition()J
.registers 3
.line 52
.local p0, "this":Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;, "Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box<TI;>;"
iget-object v0, p0, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;->input:Lim/tpelyyftgw/messenger/audioinfo/util/PositionInputStream;
invoke-virtual {v0}, Lim/tpelyyftgw/messenger/audioinfo/util/PositionInputStream;->getPosition()J
move-result-wide v0
return-wide v0
.end method
.method public getType()Ljava/lang/String;
.registers 2
.line 44
.local p0, "this":Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;, "Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box<TI;>;"
iget-object v0, p0, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;->type:Ljava/lang/String;
return-object v0
.end method
.method public nextChild()Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Atom;
.registers 13
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 64
.local p0, "this":Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;, "Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box<TI;>;"
iget-object v0, p0, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;->child:Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Atom;
if-eqz v0, :cond_7
.line 65
invoke-virtual {v0}, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Atom;->skip()V
.line 67
:cond_7
iget-object v0, p0, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;->data:Ljava/io/DataInput;
invoke-interface {v0}, Ljava/io/DataInput;->readInt()I
move-result v0
.line 68
.local v0, "atomLength":I
const/4 v1, 0x4
new-array v1, v1, [B
.line 69
.local v1, "typeBytes":[B
iget-object v2, p0, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;->data:Ljava/io/DataInput;
invoke-interface {v2, v1}, Ljava/io/DataInput;->readFully([B)V
.line 70
new-instance v2, Ljava/lang/String;
const-string v3, "ISO8859_1"
invoke-direct {v2, v1, v3}, Ljava/lang/String;-><init>([BLjava/lang/String;)V
.line 72
.local v2, "atomType":Ljava/lang/String;
const/4 v3, 0x1
if-ne v0, v3, :cond_33
.line 73
new-instance v3, Lim/tpelyyftgw/messenger/audioinfo/util/RangeInputStream;
iget-object v5, p0, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;->input:Lim/tpelyyftgw/messenger/audioinfo/util/PositionInputStream;
const-wide/16 v6, 0x10
iget-object v4, p0, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;->data:Ljava/io/DataInput;
invoke-interface {v4}, Ljava/io/DataInput;->readLong()J
move-result-wide v8
const-wide/16 v10, 0x10
sub-long/2addr v8, v10
move-object v4, v3
invoke-direct/range {v4 .. v9}, Lim/tpelyyftgw/messenger/audioinfo/util/RangeInputStream;-><init>(Ljava/io/InputStream;JJ)V
.local v3, "atomInput":Lim/tpelyyftgw/messenger/audioinfo/util/RangeInputStream;
goto :goto_40
.line 75
.end local v3 # "atomInput":Lim/tpelyyftgw/messenger/audioinfo/util/RangeInputStream;
:cond_33
new-instance v3, Lim/tpelyyftgw/messenger/audioinfo/util/RangeInputStream;
iget-object v5, p0, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;->input:Lim/tpelyyftgw/messenger/audioinfo/util/PositionInputStream;
const-wide/16 v6, 0x8
add-int/lit8 v4, v0, -0x8
int-to-long v8, v4
move-object v4, v3
invoke-direct/range {v4 .. v9}, Lim/tpelyyftgw/messenger/audioinfo/util/RangeInputStream;-><init>(Ljava/io/InputStream;JJ)V
.line 77
.restart local v3 # "atomInput":Lim/tpelyyftgw/messenger/audioinfo/util/RangeInputStream;
:goto_40
new-instance v4, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Atom;
invoke-direct {v4, v3, p0, v2}, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Atom;-><init>(Lim/tpelyyftgw/messenger/audioinfo/util/RangeInputStream;Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;Ljava/lang/String;)V
iput-object v4, p0, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;->child:Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Atom;
return-object v4
.end method
.method public nextChild(Ljava/lang/String;)Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Atom;
.registers 6
.param p1, "expectedTypeExpression" # Ljava/lang/String;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 81
.local p0, "this":Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;, "Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box<TI;>;"
invoke-virtual {p0}, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Box;->nextChild()Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Atom;
move-result-object v0
.line 82
.local v0, "atom":Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Atom;
invoke-virtual {v0}, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Atom;->getType()Ljava/lang/String;
move-result-object v1
invoke-virtual {v1, p1}, Ljava/lang/String;->matches(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_f
.line 83
return-object v0
.line 85
:cond_f
new-instance v1, Ljava/io/IOException;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "atom type mismatch, expected "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v3, ", got "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Lim/tpelyyftgw/messenger/audioinfo/m4a/MP4Atom;->getType()Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, 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/io/IOException;-><init>(Ljava/lang/String;)V
throw v1
.end method