DirectFileReadDataSource.smali
.class public Lcom/googlecode/mp4parser/DirectFileReadDataSource;
.super Ljava/lang/Object;
.source "DirectFileReadDataSource.java"
# interfaces
.implements Lcom/googlecode/mp4parser/DataSource;
# static fields
.field private static final TRANSFER_SIZE:I
# instance fields
.field private filename:Ljava/lang/String;
.field private raf:Ljava/io/RandomAccessFile;
# direct methods
.method static constructor <clinit>()V
.registers 1
const v0, 0x356f
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/googlecode/mp4parser/DirectFileReadDataSource;->TRANSFER_SIZE:I
return-void
.end method
.method public constructor <init>(Ljava/io/File;)V
.registers 4
.param p1, "f" # Ljava/io/File;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 26
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 27
new-instance v0, Ljava/io/RandomAccessFile;
const-string/jumbo v1, "r"
invoke-direct {v0, p1, v1}, Ljava/io/RandomAccessFile;-><init>(Ljava/io/File;Ljava/lang/String;)V
iput-object v0, p0, Lcom/googlecode/mp4parser/DirectFileReadDataSource;->raf:Ljava/io/RandomAccessFile;
.line 28
invoke-virtual {p1}, Ljava/io/File;->getName()Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lcom/googlecode/mp4parser/DirectFileReadDataSource;->filename:Ljava/lang/String;
.line 29
return-void
.end method
# virtual methods
.method public close()V
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 80
iget-object v0, p0, Lcom/googlecode/mp4parser/DirectFileReadDataSource;->raf:Ljava/io/RandomAccessFile;
invoke-virtual {v0}, Ljava/io/RandomAccessFile;->close()V
.line 81
return-void
.end method
.method public map(JJ)Ljava/nio/ByteBuffer;
.registers 7
.param p1, "startPosition" # J
.param p3, "size" # J
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 73
iget-object v0, p0, Lcom/googlecode/mp4parser/DirectFileReadDataSource;->raf:Ljava/io/RandomAccessFile;
invoke-virtual {v0, p1, p2}, Ljava/io/RandomAccessFile;->seek(J)V
.line 74
invoke-static {p3, p4}, Lcom/googlecode/mp4parser/util/CastUtils;->l2i(J)I
move-result v0
new-array v0, v0, [B
.line 75
.local v0, "payload":[B
iget-object v1, p0, Lcom/googlecode/mp4parser/DirectFileReadDataSource;->raf:Ljava/io/RandomAccessFile;
invoke-virtual {v1, v0}, Ljava/io/RandomAccessFile;->readFully([B)V
.line 76
invoke-static {v0}, Ljava/nio/ByteBuffer;->wrap([B)Ljava/nio/ByteBuffer;
move-result-object v1
return-object v1
.end method
.method public position()J
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 61
iget-object v0, p0, Lcom/googlecode/mp4parser/DirectFileReadDataSource;->raf:Ljava/io/RandomAccessFile;
invoke-virtual {v0}, Ljava/io/RandomAccessFile;->getFilePointer()J
move-result-wide v0
return-wide v0
.end method
.method public position(J)V
.registers 4
.param p1, "nuPos" # J
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 65
iget-object v0, p0, Lcom/googlecode/mp4parser/DirectFileReadDataSource;->raf:Ljava/io/RandomAccessFile;
invoke-virtual {v0, p1, p2}, Ljava/io/RandomAccessFile;->seek(J)V
.line 66
return-void
.end method
.method public read(Ljava/nio/ByteBuffer;)I
.registers 10
.param p1, "byteBuffer" # Ljava/nio/ByteBuffer;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 32
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->remaining()I
move-result v0
.line 33
.local v0, "len":I
const/4 v1, 0x0
.line 34
.local v1, "totalRead":I
const/4 v2, 0x0
.line 35
.local v2, "bytesRead":I
const/16 v3, 0x2000
new-array v4, v3, [B
.line 36
.local v4, "buf":[B
nop
:goto_b
if-lt v1, v0, :cond_e
goto :goto_1e
.line 37
:cond_e
sub-int v5, v0, v1
invoke-static {v5, v3}, Ljava/lang/Math;->min(II)I
move-result v5
.line 38
.local v5, "bytesToRead":I
iget-object v6, p0, Lcom/googlecode/mp4parser/DirectFileReadDataSource;->raf:Ljava/io/RandomAccessFile;
const/4 v7, 0x0
invoke-virtual {v6, v4, v7, v5}, Ljava/io/RandomAccessFile;->read([BII)I
move-result v2
.line 39
if-gez v2, :cond_26
.line 40
nop
.line 46
.end local v5 # "bytesToRead":I
:goto_1e
if-gez v2, :cond_24
if-nez v1, :cond_24
const/4 v3, -0x1
goto :goto_25
:cond_24
move v3, v1
:goto_25
return v3
.line 42
.restart local v5 # "bytesToRead":I
:cond_26
add-int/2addr v1, v2
.line 44
invoke-virtual {p1, v4, v7, v2}, Ljava/nio/ByteBuffer;->put([BII)Ljava/nio/ByteBuffer;
goto :goto_b
.end method
.method public readAllInOnce(Ljava/nio/ByteBuffer;)I
.registers 5
.param p1, "byteBuffer" # Ljava/nio/ByteBuffer;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 50
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->remaining()I
move-result v0
new-array v0, v0, [B
.line 51
.local v0, "buf":[B
iget-object v1, p0, Lcom/googlecode/mp4parser/DirectFileReadDataSource;->raf:Ljava/io/RandomAccessFile;
invoke-virtual {v1, v0}, Ljava/io/RandomAccessFile;->read([B)I
move-result v1
.line 52
.local v1, "read":I
const/4 v2, 0x0
invoke-virtual {p1, v0, v2, v1}, Ljava/nio/ByteBuffer;->put([BII)Ljava/nio/ByteBuffer;
.line 53
return v1
.end method
.method public size()J
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 57
iget-object v0, p0, Lcom/googlecode/mp4parser/DirectFileReadDataSource;->raf:Ljava/io/RandomAccessFile;
invoke-virtual {v0}, Ljava/io/RandomAccessFile;->length()J
move-result-wide v0
return-wide v0
.end method
.method public toString()Ljava/lang/String;
.registers 2
.line 86
iget-object v0, p0, Lcom/googlecode/mp4parser/DirectFileReadDataSource;->filename:Ljava/lang/String;
return-object v0
.end method
.method public transferTo(JJLjava/nio/channels/WritableByteChannel;)J
.registers 8
.param p1, "position" # J
.param p3, "count" # J
.param p5, "target" # Ljava/nio/channels/WritableByteChannel;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 69
invoke-virtual {p0, p1, p2, p3, p4}, Lcom/googlecode/mp4parser/DirectFileReadDataSource;->map(JJ)Ljava/nio/ByteBuffer;
move-result-object v0
invoke-interface {p5, v0}, Ljava/nio/channels/WritableByteChannel;->write(Ljava/nio/ByteBuffer;)I
move-result v0
int-to-long v0, v0
return-wide v0
.end method