BitstreamWriter.smali
.class public Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;
.super Ljava/lang/Object;
.source "SourceFile"
# instance fields
.field private curBit:I
.field private curByte:[I
.field private final os:Ljava/io/OutputStream;
# direct methods
.method public constructor <init>(Ljava/io/OutputStream;)V
.registers 3
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/16 v0, 0x8
new-array v0, v0, [I
.line 2
iput-object v0, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->curByte:[I
.line 3
iput-object p1, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->os:Ljava/io/OutputStream;
return-void
.end method
.method private writeCurByte()V
.registers 11
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 1
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
const/4 v6, 0x3
aget v8, v0, v6
const/4 v9, 0x4
shl-int/2addr v8, v9
or-int/2addr v1, v8
aget v8, v0, v9
shl-int/lit8 v6, v8, 0x3
or-int/2addr v1, v6
aget v6, v0, v7
shl-int/lit8 v4, v6, 0x2
or-int/2addr v1, v4
aget v4, v0, v5
shl-int/lit8 v3, v4, 0x1
or-int/2addr v1, v3
aget v0, v0, v2
or-int/2addr v0, v1
.line 2
iget-object v1, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->os:Ljava/io/OutputStream;
invoke-virtual {v1, v0}, Ljava/io/OutputStream;->write(I)V
return-void
.end method
# virtual methods
.method public flush()V
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 1
iget v0, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->curBit:I
:goto_2
const/16 v1, 0x8
const/4 v2, 0x0
if-ge v0, v1, :cond_e
.line 2
iget-object v1, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->curByte:[I
aput v2, v1, v0
add-int/lit8 v0, v0, 0x1
goto :goto_2
.line 3
:cond_e
iput v2, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->curBit:I
.line 4
invoke-direct {p0}, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->writeCurByte()V
return-void
.end method
.method public write1Bit(I)V
.registers 5
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 1
invoke-static {p1}, Lcom/googlecode/mp4parser/h264/Debug;->print(I)V
.line 2
iget v0, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->curBit:I
const/16 v1, 0x8
if-ne v0, v1, :cond_f
const/4 v0, 0x0
.line 3
iput v0, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->curBit:I
.line 4
invoke-direct {p0}, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->writeCurByte()V
.line 5
: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
return-void
.end method
.method public writeByte(I)V
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
iget-object v0, p0, Lcom/googlecode/mp4parser/h264/write/BitstreamWriter;->os:Ljava/io/OutputStream;
invoke-virtual {v0, p1}, Ljava/io/OutputStream;->write(I)V
return-void
.end method
.method public writeNBit(JI)V
.registers 7
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
const/4 v0, 0x0
:goto_1
if-ge v0, p3, :cond_12
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
add-int/lit8 v0, v0, 0x1
goto :goto_1
:cond_12
return-void
.end method
.method public writeRemainingZero()V
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
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
return-void
.end method