AbstractContainerBox.smali
.class public Lcom/googlecode/mp4parser/AbstractContainerBox;
.super Lcom/googlecode/mp4parser/BasicContainer;
.source "AbstractContainerBox.java"
# interfaces
.implements Lcom/coremedia/iso/boxes/Box;
# instance fields
.field protected largeBox:Z
.field private offset:J
.field parent:Lcom/coremedia/iso/boxes/Container;
.field protected type:Ljava/lang/String;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(Ljava/lang/String;)V
.registers 2
.param p1, "type" # Ljava/lang/String;
.line 40
invoke-direct {p0}, Lcom/googlecode/mp4parser/BasicContainer;-><init>()V
.line 41
iput-object p1, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->type:Ljava/lang/String;
.line 42
return-void
.end method
# virtual methods
.method public getBox(Ljava/nio/channels/WritableByteChannel;)V
.registers 3
.param p1, "writableByteChannel" # Ljava/nio/channels/WritableByteChannel;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 87
invoke-virtual {p0}, Lcom/googlecode/mp4parser/AbstractContainerBox;->getHeader()Ljava/nio/ByteBuffer;
move-result-object v0
invoke-interface {p1, v0}, Ljava/nio/channels/WritableByteChannel;->write(Ljava/nio/ByteBuffer;)I
.line 88
invoke-virtual {p0, p1}, Lcom/googlecode/mp4parser/AbstractContainerBox;->writeContainer(Ljava/nio/channels/WritableByteChannel;)V
.line 89
return-void
.end method
.method protected getHeader()Ljava/nio/ByteBuffer;
.registers 15
.line 67
iget-boolean v0, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->largeBox:Z
const/16 v1, 0x8
const/4 v2, 0x7
const/4 v3, 0x2
const/4 v4, 0x6
const/4 v5, 0x5
const/4 v6, 0x0
const/4 v7, 0x4
const/4 v8, 0x1
const/4 v9, 0x3
if-nez v0, :cond_52
invoke-virtual {p0}, Lcom/googlecode/mp4parser/AbstractContainerBox;->getSize()J
move-result-wide v10
const-wide v12, 0x100000000L
cmp-long v0, v10, v12
if-ltz v0, :cond_1c
goto :goto_52
.line 72
:cond_1c
new-array v0, v1, [B
iget-object v1, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->type:Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->getBytes()[B
move-result-object v1
aget-byte v1, v1, v6
aput-byte v1, v0, v7
iget-object v1, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->type:Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->getBytes()[B
move-result-object v1
aget-byte v1, v1, v8
aput-byte v1, v0, v5
iget-object v1, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->type:Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->getBytes()[B
move-result-object v1
aget-byte v1, v1, v3
aput-byte v1, v0, v4
iget-object v1, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->type:Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->getBytes()[B
move-result-object v1
aget-byte v1, v1, v9
aput-byte v1, v0, v2
invoke-static {v0}, Ljava/nio/ByteBuffer;->wrap([B)Ljava/nio/ByteBuffer;
move-result-object v0
.line 73
.local v0, "header":Ljava/nio/ByteBuffer;
invoke-virtual {p0}, Lcom/googlecode/mp4parser/AbstractContainerBox;->getSize()J
move-result-wide v1
invoke-static {v0, v1, v2}, Lcom/coremedia/iso/IsoTypeWriter;->writeUInt32(Ljava/nio/ByteBuffer;J)V
goto :goto_8f
.line 68
.end local v0 # "header":Ljava/nio/ByteBuffer;
:cond_52
:goto_52
const/16 v0, 0x10
new-array v0, v0, [B
aput-byte v8, v0, v9
iget-object v10, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->type:Ljava/lang/String;
invoke-virtual {v10}, Ljava/lang/String;->getBytes()[B
move-result-object v10
aget-byte v6, v10, v6
aput-byte v6, v0, v7
iget-object v6, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->type:Ljava/lang/String;
invoke-virtual {v6}, Ljava/lang/String;->getBytes()[B
move-result-object v6
aget-byte v6, v6, v8
aput-byte v6, v0, v5
iget-object v5, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->type:Ljava/lang/String;
invoke-virtual {v5}, Ljava/lang/String;->getBytes()[B
move-result-object v5
aget-byte v3, v5, v3
aput-byte v3, v0, v4
iget-object v3, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->type:Ljava/lang/String;
invoke-virtual {v3}, Ljava/lang/String;->getBytes()[B
move-result-object v3
aget-byte v3, v3, v9
aput-byte v3, v0, v2
invoke-static {v0}, Ljava/nio/ByteBuffer;->wrap([B)Ljava/nio/ByteBuffer;
move-result-object v0
.line 69
.restart local v0 # "header":Ljava/nio/ByteBuffer;
invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;
.line 70
invoke-virtual {p0}, Lcom/googlecode/mp4parser/AbstractContainerBox;->getSize()J
move-result-wide v1
invoke-static {v0, v1, v2}, Lcom/coremedia/iso/IsoTypeWriter;->writeUInt64(Ljava/nio/ByteBuffer;J)V
.line 71
nop
.line 75
:goto_8f
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->rewind()Ljava/nio/Buffer;
.line 76
return-object v0
.end method
.method public getOffset()J
.registers 3
.line 49
iget-wide v0, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->offset:J
return-wide v0
.end method
.method public getParent()Lcom/coremedia/iso/boxes/Container;
.registers 2
.line 45
iget-object v0, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->parent:Lcom/coremedia/iso/boxes/Container;
return-object v0
.end method
.method public getSize()J
.registers 8
.line 57
invoke-virtual {p0}, Lcom/googlecode/mp4parser/AbstractContainerBox;->getContainerSize()J
move-result-wide v0
.line 58
.local v0, "s":J
iget-boolean v2, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->largeBox:Z
if-nez v2, :cond_18
const-wide/16 v2, 0x8
add-long/2addr v2, v0
const-wide v4, 0x100000000L
cmp-long v6, v2, v4
if-ltz v6, :cond_15
goto :goto_18
:cond_15
const/16 v2, 0x8
goto :goto_1a
:cond_18
:goto_18
const/16 v2, 0x10
:goto_1a
int-to-long v2, v2
add-long/2addr v2, v0
return-wide v2
.end method
.method public getType()Ljava/lang/String;
.registers 2
.line 62
iget-object v0, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->type:Ljava/lang/String;
return-object v0
.end method
.method public initContainer(Lcom/googlecode/mp4parser/DataSource;JLcom/coremedia/iso/BoxParser;)V
.registers 12
.param p1, "dataSource" # Lcom/googlecode/mp4parser/DataSource;
.param p2, "containerSize" # J
.param p4, "boxParser" # Lcom/coremedia/iso/BoxParser;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 92
iput-object p1, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->dataSource:Lcom/googlecode/mp4parser/DataSource;
.line 93
invoke-interface {p1}, Lcom/googlecode/mp4parser/DataSource;->position()J
move-result-wide v0
iput-wide v0, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->parsePosition:J
.line 94
iget-wide v0, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->parsePosition:J
iget-boolean v2, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->largeBox:Z
if-nez v2, :cond_1e
const-wide/16 v2, 0x8
add-long/2addr v2, p2
const-wide v4, 0x100000000L
cmp-long v6, v2, v4
if-ltz v6, :cond_1b
goto :goto_1e
:cond_1b
const/16 v2, 0x8
goto :goto_20
:cond_1e
:goto_1e
const/16 v2, 0x10
:goto_20
int-to-long v2, v2
sub-long/2addr v0, v2
iput-wide v0, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->startPosition:J
.line 95
invoke-interface {p1}, Lcom/googlecode/mp4parser/DataSource;->position()J
move-result-wide v0
add-long/2addr v0, p2
invoke-interface {p1, v0, v1}, Lcom/googlecode/mp4parser/DataSource;->position(J)V
.line 96
invoke-interface {p1}, Lcom/googlecode/mp4parser/DataSource;->position()J
move-result-wide v0
iput-wide v0, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->endPosition:J
.line 97
iput-object p4, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->boxParser:Lcom/coremedia/iso/BoxParser;
.line 98
return-void
.end method
.method public parse(Lcom/googlecode/mp4parser/DataSource;Ljava/nio/ByteBuffer;JLcom/coremedia/iso/BoxParser;)V
.registers 10
.param p1, "dataSource" # Lcom/googlecode/mp4parser/DataSource;
.param p2, "header" # Ljava/nio/ByteBuffer;
.param p3, "contentSize" # J
.param p5, "boxParser" # Lcom/coremedia/iso/BoxParser;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 80
invoke-interface {p1}, Lcom/googlecode/mp4parser/DataSource;->position()J
move-result-wide v0
invoke-virtual {p2}, Ljava/nio/ByteBuffer;->remaining()I
move-result v2
int-to-long v2, v2
sub-long/2addr v0, v2
iput-wide v0, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->offset:J
.line 81
invoke-virtual {p2}, Ljava/nio/ByteBuffer;->remaining()I
move-result v0
const/16 v1, 0x10
if-ne v0, v1, :cond_16
const/4 v0, 0x1
goto :goto_17
:cond_16
const/4 v0, 0x0
:goto_17
iput-boolean v0, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->largeBox:Z
.line 82
invoke-virtual {p0, p1, p3, p4, p5}, Lcom/googlecode/mp4parser/AbstractContainerBox;->initContainer(Lcom/googlecode/mp4parser/DataSource;JLcom/coremedia/iso/BoxParser;)V
.line 83
return-void
.end method
.method public setParent(Lcom/coremedia/iso/boxes/Container;)V
.registers 2
.param p1, "parent" # Lcom/coremedia/iso/boxes/Container;
.line 53
iput-object p1, p0, Lcom/googlecode/mp4parser/AbstractContainerBox;->parent:Lcom/coremedia/iso/boxes/Container;
.line 54
return-void
.end method