OggPageHeader.smali
.class final Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
.super Ljava/lang/Object;
.source "OggPageHeader.java"
# static fields
.field public static final EMPTY_PAGE_HEADER_SIZE:I = 0x1b
.field public static final MAX_PAGE_PAYLOAD:I = 0xfe01
.field public static final MAX_PAGE_SIZE:I = 0xff1b
.field public static final MAX_SEGMENT_COUNT:I = 0xff
.field private static final TYPE_OGGS:I
# instance fields
.field public bodySize:I
.field public granulePosition:J
.field public headerSize:I
.field public final laces:[I
.field public pageChecksum:J
.field public pageSegmentCount:I
.field public pageSequenceNumber:J
.field public revision:I
.field private final scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field public streamSerialNumber:J
.field public type:I
# direct methods
.method static constructor <clinit>()V
.registers 1
const-string v0, "OggS"
.line 37
invoke-static {v0}, Lcom/google/android/exoplayer2/util/Util;->getIntegerCodeForString(Ljava/lang/String;)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->TYPE_OGGS:I
return-void
.end method
.method constructor <init>()V
.registers 3
.line 29
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/16 v0, 0xff
new-array v1, v0, [I
.line 52
iput-object v1, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->laces:[I
.line 54
new-instance v1, Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-direct {v1, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>(I)V
iput-object v1, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
return-void
.end method
# virtual methods
.method public populate(Lcom/google/android/exoplayer2/extractor/ExtractorInput;Z)Z
.registers 11
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 84
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset()V
.line 85
invoke-virtual {p0}, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->reset()V
.line 86
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getLength()J
move-result-wide v0
const/4 v2, 0x1
const/4 v3, 0x0
const-wide/16 v4, -0x1
cmp-long v6, v0, v4
if-eqz v6, :cond_26
.line 87
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getLength()J
move-result-wide v0
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPeekPosition()J
move-result-wide v4
sub-long/2addr v0, v4
const-wide/16 v4, 0x1b
cmp-long v6, v0, v4
if-ltz v6, :cond_24
goto :goto_26
:cond_24
const/4 v0, 0x0
goto :goto_27
:cond_26
:goto_26
const/4 v0, 0x1
:goto_27
if-eqz v0, :cond_c1
.line 88
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v0, v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
const/16 v1, 0x1b
invoke-interface {p1, v0, v3, v1, v2}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->peekFully([BIIZ)Z
move-result v0
if-nez v0, :cond_37
goto/16 :goto_c1
.line 95
:cond_37
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v4
sget v0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->TYPE_OGGS:I
int-to-long v6, v0
cmp-long v0, v4, v6
if-eqz v0, :cond_4f
if-eqz p2, :cond_47
return v3
.line 99
:cond_47
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
const-string p2, "expected OggS capture pattern at begin of page"
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
.line 103
:cond_4f
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v0
iput v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->revision:I
if-eqz v0, :cond_65
if-eqz p2, :cond_5c
return v3
.line 108
:cond_5c
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
const-string/jumbo p2, "unsupported bit stream revision"
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
.line 111
:cond_65
iget-object p2, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {p2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result p2
iput p2, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->type:I
.line 113
iget-object p2, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {p2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readLittleEndianLong()J
move-result-wide v4
iput-wide v4, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->granulePosition:J
.line 114
iget-object p2, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {p2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readLittleEndianUnsignedInt()J
move-result-wide v4
iput-wide v4, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->streamSerialNumber:J
.line 115
iget-object p2, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {p2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readLittleEndianUnsignedInt()J
move-result-wide v4
iput-wide v4, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->pageSequenceNumber:J
.line 116
iget-object p2, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {p2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readLittleEndianUnsignedInt()J
move-result-wide v4
iput-wide v4, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->pageChecksum:J
.line 117
iget-object p2, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {p2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result p2
iput p2, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->pageSegmentCount:I
add-int/2addr p2, v1
.line 118
iput p2, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->headerSize:I
.line 121
iget-object p2, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {p2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset()V
.line 122
iget-object p2, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object p2, p2, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
iget v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->pageSegmentCount:I
invoke-interface {p1, p2, v3, v0}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->peekFully([BII)V
.line 123
:goto_a6
iget p1, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->pageSegmentCount:I
if-ge v3, p1, :cond_c0
.line 124
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->laces:[I
iget-object p2, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {p2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result p2
aput p2, p1, v3
.line 125
iget p1, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->bodySize:I
iget-object p2, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->laces:[I
aget p2, p2, v3
add-int/2addr p1, p2
iput p1, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->bodySize:I
add-int/lit8 v3, v3, 0x1
goto :goto_a6
:cond_c0
return v2
:cond_c1
:goto_c1
if-eqz p2, :cond_c4
return v3
.line 92
:cond_c4
new-instance p1, Ljava/io/EOFException;
invoke-direct {p1}, Ljava/io/EOFException;-><init>()V
throw p1
.end method
.method public reset()V
.registers 4
const/4 v0, 0x0
.line 60
iput v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->revision:I
.line 61
iput v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->type:I
const-wide/16 v1, 0x0
.line 62
iput-wide v1, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->granulePosition:J
.line 63
iput-wide v1, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->streamSerialNumber:J
.line 64
iput-wide v1, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->pageSequenceNumber:J
.line 65
iput-wide v1, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->pageChecksum:J
.line 66
iput v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->pageSegmentCount:I
.line 67
iput v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->headerSize:I
.line 68
iput v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->bodySize:I
return-void
.end method