BitstreamWriter.smali
.class public Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;
.super Ljava/lang/Object;
.source "BitstreamWriter.java"
# instance fields
.field private curBit:I
.field private curByte:[I
.field private final os:Ljava/io/OutputStream;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(Ljava/io/OutputStream;)V
.registers 3
.param p1, "out" # Ljava/io/OutputStream;
.line 39
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 36
const/16 v0, 0x8
new-array v0, v0, [I
iput-object v0, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->curByte:[I
.line 40
iput-object p1, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->os:Ljava/io/OutputStream;
.line 41
return-void
.end method
.method private writeCurByte()V
.registers 11
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 57
iget-object v0, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->curByte:[I
const/4 v1, 0x0
aget v1, v0, v1
const/4 v2, 0x7
shl-int/2addr v1, v2
const/4 v3, 0x1
aget v4, v0, v3
const/4 v5, 0x6
shl-int/2addr v4, v5
or-int/2addr v1, v4
const/4 v4, 0x2
aget v6, v0, v4
const/4 v7, 0x5
shl-int/2addr v6, v7
or-int/2addr v1, v6
.line 58
const/4 v6, 0x3
aget v8, v0, v6
const/4 v9, 0x4
shl-int/2addr v8, v9
.line 57
or-int/2addr v1, v8
.line 58
aget v8, v0, v9
shl-int/lit8 v6, v8, 0x3
.line 57
or-int/2addr v1, v6
.line 58
aget v6, v0, v7
shl-int/lit8 v4, v6, 0x2
.line 57
or-int/2addr v1, v4
.line 59
aget v4, v0, v5
shl-int/lit8 v3, v4, 0x1
.line 57
or-int/2addr v1, v3
.line 59
aget v0, v0, v2
.line 57
or-int/2addr v0, v1
.line 60
.local v0, "toWrite":I
iget-object v1, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->os:Ljava/io/OutputStream;
invoke-virtual {v1, v0}, Ljava/io/OutputStream;->write(I)V
.line 61
return-void
.end method
# virtual methods
.method public flush()V
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 49
iget v0, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->curBit:I
.local v0, "i":I
:goto_2
const/16 v1, 0x8
const/4 v2, 0x0
if-lt v0, v1, :cond_d
.line 52
.end local v0 # "i":I
iput v2, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->curBit:I
.line 53
invoke-direct {p0}, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->writeCurByte()V
.line 54
return-void
.line 50
.restart local v0 # "i":I
:cond_d
iget-object v1, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->curByte:[I
aput v2, v1, v0
.line 49
add-int/lit8 v0, v0, 0x1
goto :goto_2
.end method
.method public write1Bit(I)V
.registers 5
.param p1, "value" # I
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 69
invoke-static {p1}, Lcom/googlecode/mp4parser/h264/Debug;->print(I)V
.line 70
iget v0, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->curBit:I
const/16 v1, 0x8
if-ne v0, v1, :cond_f
.line 71
const/4 v0, 0x0
iput v0, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->curBit:I
.line 72
invoke-direct {p0}, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->writeCurByte()V
.line 74
:cond_f
iget-object v0, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->curByte:[I
iget v1, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->curBit:I
add-int/lit8 v2, v1, 0x1
iput v2, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->curBit:I
aput p1, v0, v1
.line 75
return-void
.end method
.method public writeByte(I)V
.registers 3
.param p1, "b" # I
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 105
iget-object v0, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->os:Ljava/io/OutputStream;
invoke-virtual {v0, p1}, Ljava/io/OutputStream;->write(I)V
.line 107
return-void
.end method
.method public writeNBit(JI)V
.registers 7
.param p1, "value" # J
.param p3, "n" # I
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 84
const/4 v0, 0x0
.local v0, "i":I
:goto_1
if-lt v0, p3, :cond_4
.line 87
.end local v0 # "i":I
return-void
.line 85
.restart local v0 # "i":I
:cond_4
sub-int v1, p3, v0
add-int/lit8 v1, v1, -0x1
shr-long v1, p1, v1
long-to-int v2, v1
and-int/lit8 v1, v2, 0x1
invoke-virtual {p0, v1}, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->write1Bit(I)V
.line 84
add-int/lit8 v0, v0, 0x1
goto :goto_1
.end method
.method public writeRemainingZero()V
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 96
iget v0, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->curBit:I
rsub-int/lit8 v0, v0, 0x8
const-wide/16 v1, 0x0
invoke-virtual {p0, v1, v2, v0}, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->writeNBit(JI)V
.line 97
return-void
.end method