SampleImpl.smali
.class public Lcom/googlecode/mp4parser/authoring/SampleImpl;
.super Ljava/lang/Object;
.source "SampleImpl.java"
# interfaces
.implements Lcom/googlecode/mp4parser/authoring/Sample;
# instance fields
.field private data:[Ljava/nio/ByteBuffer;
.field private final offset:J
.field private final parent:Lcom/coremedia/iso/boxes/Container;
.field private final size:J
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(JJLcom/coremedia/iso/boxes/Container;)V
.registers 7
.param p1, "offset" # J
.param p3, "sampleSize" # J
.param p5, "parent" # Lcom/coremedia/iso/boxes/Container;
.line 42
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 43
iput-wide p1, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->offset:J
.line 44
iput-wide p3, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->size:J
.line 45
const/4 v0, 0x0
iput-object v0, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->data:[Ljava/nio/ByteBuffer;
.line 46
iput-object p5, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->parent:Lcom/coremedia/iso/boxes/Container;
.line 47
return-void
.end method
.method public constructor <init>(JJLjava/nio/ByteBuffer;)V
.registers 8
.param p1, "offset" # J
.param p3, "sampleSize" # J
.param p5, "data" # Ljava/nio/ByteBuffer;
.line 35
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 36
iput-wide p1, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->offset:J
.line 37
iput-wide p3, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->size:J
.line 38
const/4 v0, 0x1
new-array v0, v0, [Ljava/nio/ByteBuffer;
const/4 v1, 0x0
aput-object p5, v0, v1
iput-object v0, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->data:[Ljava/nio/ByteBuffer;
.line 39
const/4 v0, 0x0
iput-object v0, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->parent:Lcom/coremedia/iso/boxes/Container;
.line 40
return-void
.end method
.method public constructor <init>(Ljava/nio/ByteBuffer;)V
.registers 4
.param p1, "buf" # Ljava/nio/ByteBuffer;
.line 17
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 18
const-wide/16 v0, -0x1
iput-wide v0, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->offset:J
.line 19
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->limit()I
move-result v0
int-to-long v0, v0
iput-wide v0, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->size:J
.line 20
const/4 v0, 0x1
new-array v0, v0, [Ljava/nio/ByteBuffer;
const/4 v1, 0x0
aput-object p1, v0, v1
iput-object v0, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->data:[Ljava/nio/ByteBuffer;
.line 21
const/4 v0, 0x0
iput-object v0, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->parent:Lcom/coremedia/iso/boxes/Container;
.line 22
return-void
.end method
.method public constructor <init>([Ljava/nio/ByteBuffer;)V
.registers 7
.param p1, "data" # [Ljava/nio/ByteBuffer;
.line 24
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 25
const-wide/16 v0, -0x1
iput-wide v0, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->offset:J
.line 26
const/4 v0, 0x0
.line 27
.local v0, "_size":I
array-length v1, p1
const/4 v2, 0x0
:goto_a
if-lt v2, v1, :cond_15
.line 30
int-to-long v1, v0
iput-wide v1, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->size:J
.line 31
iput-object p1, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->data:[Ljava/nio/ByteBuffer;
.line 32
const/4 v1, 0x0
iput-object v1, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->parent:Lcom/coremedia/iso/boxes/Container;
.line 33
return-void
.line 27
:cond_15
aget-object v3, p1, v2
.line 28
.local v3, "byteBuffer":Ljava/nio/ByteBuffer;
invoke-virtual {v3}, Ljava/nio/ByteBuffer;->remaining()I
move-result v4
add-int/2addr v0, v4
.line 27
.end local v3 # "byteBuffer":Ljava/nio/ByteBuffer;
add-int/lit8 v2, v2, 0x1
goto :goto_a
.end method
# virtual methods
.method public asByteBuffer()Ljava/nio/ByteBuffer;
.registers 8
.line 73
invoke-virtual {p0}, Lcom/googlecode/mp4parser/authoring/SampleImpl;->ensureData()V
.line 74
iget-wide v0, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->size:J
invoke-static {v0, v1}, Lcom/googlecode/mp4parser/util/CastUtils;->l2i(J)I
move-result v0
new-array v0, v0, [B
.line 75
.local v0, "bCopy":[B
invoke-static {v0}, Ljava/nio/ByteBuffer;->wrap([B)Ljava/nio/ByteBuffer;
move-result-object v1
.line 76
.local v1, "copy":Ljava/nio/ByteBuffer;
iget-object v2, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->data:[Ljava/nio/ByteBuffer;
array-length v3, v2
const/4 v4, 0x0
:goto_13
if-lt v4, v3, :cond_19
.line 79
invoke-virtual {v1}, Ljava/nio/ByteBuffer;->rewind()Ljava/nio/Buffer;
.line 80
return-object v1
.line 76
:cond_19
aget-object v5, v2, v4
.line 77
.local v5, "b":Ljava/nio/ByteBuffer;
invoke-virtual {v5}, Ljava/nio/ByteBuffer;->duplicate()Ljava/nio/ByteBuffer;
move-result-object v6
invoke-virtual {v1, v6}, Ljava/nio/ByteBuffer;->put(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
.line 76
.end local v5 # "b":Ljava/nio/ByteBuffer;
add-int/lit8 v4, v4, 0x1
goto :goto_13
.end method
.method protected ensureData()V
.registers 8
.line 50
iget-object v0, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->data:[Ljava/nio/ByteBuffer;
if-eqz v0, :cond_5
return-void
.line 51
:cond_5
iget-object v0, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->parent:Lcom/coremedia/iso/boxes/Container;
if-eqz v0, :cond_30
.line 55
const/4 v1, 0x1
:try_start_a
new-array v1, v1, [Ljava/nio/ByteBuffer;
const/4 v2, 0x0
iget-wide v3, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->offset:J
iget-wide v5, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->size:J
invoke-interface {v0, v3, v4, v5, v6}, Lcom/coremedia/iso/boxes/Container;->getByteBuffer(JJ)Ljava/nio/ByteBuffer;
move-result-object v0
aput-object v0, v1, v2
iput-object v1, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->data:[Ljava/nio/ByteBuffer;
:try_end_19
.catch Ljava/io/IOException; {:try_start_a .. :try_end_19} :catch_1b
.line 56
nop
.line 59
return-void
.line 56
:catch_1b
move-exception v0
.line 57
.local v0, "e":Ljava/io/IOException;
new-instance v1, Ljava/lang/RuntimeException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "couldn\'t read sample "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v2, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v1, v2, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 52
.end local v0 # "e":Ljava/io/IOException;
:cond_30
new-instance v0, Ljava/lang/RuntimeException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Missing parent container, can\'t read sample "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public getSize()J
.registers 3
.line 69
iget-wide v0, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->size:J
return-wide v0
.end method
.method public toString()Ljava/lang/String;
.registers 4
.line 85
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
.line 86
.local v0, "sb":Ljava/lang/StringBuilder;
const-string v1, "SampleImpl"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 87
const-string/jumbo v1, "{offset="
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-wide v1, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->offset:J
invoke-virtual {v0, v1, v2}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
.line 88
const-string/jumbo v1, "{size="
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-wide v1, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->size:J
invoke-virtual {v0, v1, v2}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
.line 89
const/16 v1, 0x7d
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
.line 90
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
return-object v1
.end method
.method public writeTo(Ljava/nio/channels/WritableByteChannel;)V
.registers 7
.param p1, "channel" # Ljava/nio/channels/WritableByteChannel;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 62
invoke-virtual {p0}, Lcom/googlecode/mp4parser/authoring/SampleImpl;->ensureData()V
.line 63
iget-object v0, p0, Lcom/googlecode/mp4parser/authoring/SampleImpl;->data:[Ljava/nio/ByteBuffer;
array-length v1, v0
const/4 v2, 0x0
:goto_7
if-lt v2, v1, :cond_a
.line 66
return-void
.line 63
:cond_a
aget-object v3, v0, v2
.line 64
.local v3, "b":Ljava/nio/ByteBuffer;
invoke-virtual {v3}, Ljava/nio/ByteBuffer;->duplicate()Ljava/nio/ByteBuffer;
move-result-object v4
invoke-interface {p1, v4}, Ljava/nio/channels/WritableByteChannel;->write(Ljava/nio/ByteBuffer;)I
.line 63
.end local v3 # "b":Ljava/nio/ByteBuffer;
add-int/lit8 v2, v2, 0x1
goto :goto_7
.end method