DefaultOggSeeker.smali
.class final Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;
.super Ljava/lang/Object;
.source "DefaultOggSeeker.java"
# interfaces
.implements Lcom/google/android/exoplayer2/extractor/ogg/OggSeeker;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker$OggSeekMap;
}
.end annotation
# static fields
.field private static final DEFAULT_OFFSET:I
.field public static final MATCH_BYTE_RANGE:I
.field public static final MATCH_RANGE:I
.field private static final STATE_IDLE:I
.field private static final STATE_READ_LAST_PAGE:I
.field private static final STATE_SEEK:I
.field private static final STATE_SEEK_TO_END:I
# instance fields
.field private end:J
.field private endGranule:J
.field private final endPosition:J
.field private final pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
.field private positionBeforeSeekToEnd:J
.field private start:J
.field private startGranule:J
.field private final startPosition:J
.field private state:I
.field private final streamReader:Lcom/google/android/exoplayer2/extractor/ogg/StreamReader;
.field private targetGranule:J
.field private totalGranules:J
# direct methods
.method static constructor <clinit>()V
.registers 1
const v0, 0x605f
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->DEFAULT_OFFSET:I
const v0, 0x193cf
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->MATCH_BYTE_RANGE:I
const v0, 0x10c2f
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->MATCH_RANGE:I
const v0, 0x156c
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->STATE_IDLE:I
const v0, 0x156e
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->STATE_READ_LAST_PAGE:I
const v0, 0x156d
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->STATE_SEEK:I
return-void
.end method
.method public constructor <init>(JJLcom/google/android/exoplayer2/extractor/ogg/StreamReader;JJZ)V
.registers 15
.param p1, "startPosition" # J
.param p3, "endPosition" # J
.param p5, "streamReader" # Lcom/google/android/exoplayer2/extractor/ogg/StreamReader;
.param p6, "firstPayloadPageSize" # J
.param p8, "firstPayloadPageGranulePosition" # J
.param p10, "firstPayloadPageIsLastPage" # Z
.line 71
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 39
new-instance v0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
invoke-direct {v0}, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
.line 72
const/4 v0, 0x0
const-wide/16 v1, 0x0
cmp-long v3, p1, v1
if-ltz v3, :cond_17
cmp-long v1, p3, p1
if-lez v1, :cond_17
const/4 v1, 0x1
goto :goto_18
:cond_17
const/4 v1, 0x0
:goto_18
invoke-static {v1}, Lcom/google/android/exoplayer2/util/Assertions;->checkArgument(Z)V
.line 73
iput-object p5, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->streamReader:Lcom/google/android/exoplayer2/extractor/ogg/StreamReader;
.line 74
iput-wide p1, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->startPosition:J
.line 75
iput-wide p3, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->endPosition:J
.line 76
sub-long v1, p3, p1
cmp-long v3, p6, v1
if-eqz v3, :cond_2d
if-eqz p10, :cond_2a
goto :goto_2d
.line 80
:cond_2a
iput v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->state:I
goto :goto_32
.line 77
:cond_2d
:goto_2d
iput-wide p8, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->totalGranules:J
.line 78
const/4 v0, 0x3
iput v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->state:I
.line 82
:goto_32
return-void
.end method
.method static synthetic access$100(Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;)J
.registers 3
.param p0, "x0" # Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;
.line 28
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->startPosition:J
return-wide v0
.end method
.method static synthetic access$200(Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;)Lcom/google/android/exoplayer2/extractor/ogg/StreamReader;
.registers 2
.param p0, "x0" # Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;
.line 28
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->streamReader:Lcom/google/android/exoplayer2/extractor/ogg/StreamReader;
return-object v0
.end method
.method static synthetic access$300(Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;JJJ)J
.registers 9
.param p0, "x0" # Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;
.param p1, "x1" # J
.param p3, "x2" # J
.param p5, "x3" # J
.line 28
invoke-direct/range {p0 .. p6}, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->getEstimatedPosition(JJJ)J
move-result-wide v0
return-wide v0
.end method
.method static synthetic access$400(Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;)J
.registers 3
.param p0, "x0" # Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;
.line 28
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->totalGranules:J
return-wide v0
.end method
.method private getEstimatedPosition(JJJ)J
.registers 13
.param p1, "position" # J
.param p3, "granuleDistance" # J
.param p5, "offset" # J
.line 210
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->endPosition:J
iget-wide v2, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->startPosition:J
sub-long/2addr v0, v2
mul-long v0, v0, p3
iget-wide v4, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->totalGranules:J
div-long/2addr v0, v4
sub-long/2addr v0, p5
add-long/2addr p1, v0
.line 211
cmp-long v0, p1, v2
if-gez v0, :cond_12
.line 212
iget-wide p1, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->startPosition:J
.line 214
:cond_12
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->endPosition:J
cmp-long v2, p1, v0
if-ltz v2, :cond_1c
.line 215
const-wide/16 v2, 0x1
sub-long p1, v0, v2
.line 217
:cond_1c
return-wide p1
.end method
# virtual methods
.method public bridge synthetic createSeekMap()Lcom/google/android/exoplayer2/extractor/SeekMap;
.registers 2
.line 28
invoke-virtual {p0}, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->createSeekMap()Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker$OggSeekMap;
move-result-object v0
return-object v0
.end method
.method public createSeekMap()Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker$OggSeekMap;
.registers 7
.line 132
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->totalGranules:J
const/4 v2, 0x0
const-wide/16 v3, 0x0
cmp-long v5, v0, v3
if-eqz v5, :cond_f
new-instance v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker$OggSeekMap;
invoke-direct {v0, p0, v2}, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker$OggSeekMap;-><init>(Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker$1;)V
move-object v2, v0
:cond_f
return-object v2
.end method
.method public getNextSeekPosition(JLcom/google/android/exoplayer2/extractor/ExtractorInput;)J
.registers 24
.param p1, "targetGranule" # J
.param p3, "input" # Lcom/google/android/exoplayer2/extractor/ExtractorInput;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 160
move-object/from16 v0, p0
move-object/from16 v1, p3
iget-wide v2, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->start:J
iget-wide v4, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->end:J
const-wide/16 v6, 0x2
cmp-long v8, v2, v4
if-nez v8, :cond_13
.line 161
iget-wide v2, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->startGranule:J
add-long/2addr v2, v6
neg-long v2, v2
return-wide v2
.line 164
:cond_13
invoke-interface/range {p3 .. p3}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v2
.line 165
.local v2, "initialPosition":J
iget-wide v4, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->end:J
invoke-virtual {v0, v1, v4, v5}, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->skipToNextPage(Lcom/google/android/exoplayer2/extractor/ExtractorInput;J)Z
move-result v4
if-nez v4, :cond_2e
.line 166
iget-wide v4, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->start:J
cmp-long v6, v4, v2
if-eqz v6, :cond_26
.line 169
return-wide v4
.line 167
:cond_26
new-instance v4, Ljava/io/IOException;
const-string v5, "No ogg page can be found."
invoke-direct {v4, v5}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v4
.line 172
:cond_2e
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
const/4 v5, 0x0
invoke-virtual {v4, v1, v5}, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->populate(Lcom/google/android/exoplayer2/extractor/ExtractorInput;Z)Z
.line 173
invoke-interface/range {p3 .. p3}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->resetPeekPosition()V
.line 175
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
iget-wide v4, v4, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->granulePosition:J
sub-long v4, p1, v4
.line 176
.local v4, "granuleDistance":J
iget-object v8, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
iget v8, v8, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->headerSize:I
iget-object v9, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
iget v9, v9, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->bodySize:I
add-int/2addr v8, v9
.line 177
.local v8, "pageSize":I
const-wide/16 v9, 0x0
cmp-long v11, v4, v9
if-ltz v11, :cond_5e
const-wide/32 v11, 0x11940
cmp-long v13, v4, v11
if-lez v13, :cond_54
goto :goto_5e
.line 205
:cond_54
invoke-interface {v1, v8}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 206
iget-object v9, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
iget-wide v9, v9, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->granulePosition:J
add-long/2addr v9, v6
neg-long v6, v9
return-wide v6
.line 178
:cond_5e
:goto_5e
const-wide/32 v11, 0x186a0
cmp-long v13, v4, v9
if-gez v13, :cond_6e
.line 179
iput-wide v2, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->end:J
.line 180
iget-object v13, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
iget-wide v13, v13, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->granulePosition:J
iput-wide v13, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->endGranule:J
goto :goto_8f
.line 182
:cond_6e
invoke-interface/range {p3 .. p3}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v13
int-to-long v9, v8
add-long/2addr v13, v9
iput-wide v13, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->start:J
.line 183
iget-object v9, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
iget-wide v9, v9, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->granulePosition:J
iput-wide v9, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->startGranule:J
.line 184
iget-wide v9, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->end:J
iget-wide v13, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->start:J
sub-long/2addr v9, v13
int-to-long v13, v8
add-long/2addr v9, v13
cmp-long v13, v9, v11
if-gez v13, :cond_8f
.line 185
invoke-interface {v1, v8}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 186
iget-wide v9, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->startGranule:J
add-long/2addr v9, v6
neg-long v6, v9
return-wide v6
.line 190
:cond_8f
:goto_8f
iget-wide v9, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->end:J
iget-wide v13, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->start:J
sub-long/2addr v9, v13
cmp-long v16, v9, v11
if-gez v16, :cond_9b
.line 191
iput-wide v13, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->end:J
.line 192
return-wide v13
.line 195
:cond_9b
int-to-long v9, v8
const-wide/16 v13, 0x0
cmp-long v15, v4, v13
if-gtz v15, :cond_a3
goto :goto_a5
:cond_a3
const-wide/16 v6, 0x1
:goto_a5
mul-long v9, v9, v6
.line 196
.local v9, "offset":J
invoke-interface/range {p3 .. p3}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v6
sub-long/2addr v6, v9
iget-wide v13, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->end:J
iget-wide v11, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->start:J
sub-long/2addr v13, v11
mul-long v13, v13, v4
move-wide/from16 v16, v2
.end local v2 # "initialPosition":J
.local v16, "initialPosition":J
iget-wide v1, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->endGranule:J
move-wide/from16 v18, v4
.end local v4 # "granuleDistance":J
.local v18, "granuleDistance":J
iget-wide v3, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->startGranule:J
sub-long/2addr v1, v3
div-long/2addr v13, v1
add-long/2addr v6, v13
.line 199
.local v6, "nextPosition":J
invoke-static {v6, v7, v11, v12}, Ljava/lang/Math;->max(JJ)J
move-result-wide v1
.line 200
.end local v6 # "nextPosition":J
.local v1, "nextPosition":J
iget-wide v3, v0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->end:J
const-wide/16 v5, 0x1
sub-long/2addr v3, v5
invoke-static {v1, v2, v3, v4}, Ljava/lang/Math;->min(JJ)J
move-result-wide v1
.line 201
return-wide v1
.end method
.method public read(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)J
.registers 16
.param p1, "input" # Lcom/google/android/exoplayer2/extractor/ExtractorInput;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 86
iget v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->state:I
const/4 v1, 0x1
const/4 v2, 0x3
if-eqz v0, :cond_3d
if-eq v0, v1, :cond_50
const/4 v1, 0x2
if-eq v0, v1, :cond_16
if-ne v0, v2, :cond_10
.line 88
const-wide/16 v0, -0x1
return-wide v0
.line 117
:cond_10
new-instance v0, Ljava/lang/IllegalStateException;
invoke-direct {v0}, Ljava/lang/IllegalStateException;-><init>()V
throw v0
.line 104
:cond_16
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->targetGranule:J
const-wide/16 v3, 0x2
const-wide/16 v5, 0x0
cmp-long v7, v0, v5
if-nez v7, :cond_23
.line 105
const-wide/16 v0, 0x0
.local v0, "currentGranule":J
goto :goto_38
.line 107
.end local v0 # "currentGranule":J
:cond_23
invoke-virtual {p0, v0, v1, p1}, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->getNextSeekPosition(JLcom/google/android/exoplayer2/extractor/ExtractorInput;)J
move-result-wide v0
.line 108
.local v0, "position":J
cmp-long v7, v0, v5
if-ltz v7, :cond_2c
.line 109
return-wide v0
.line 111
:cond_2c
iget-wide v10, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->targetGranule:J
add-long v5, v0, v3
neg-long v12, v5
move-object v8, p0
move-object v9, p1
invoke-virtual/range {v8 .. v13}, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->skipToPageOfGranule(Lcom/google/android/exoplayer2/extractor/ExtractorInput;JJ)J
move-result-wide v5
move-wide v0, v5
.line 113
.local v0, "currentGranule":J
:goto_38
iput v2, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->state:I
.line 114
add-long/2addr v3, v0
neg-long v2, v3
return-wide v2
.line 90
.end local v0 # "currentGranule":J
:cond_3d
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v3
iput-wide v3, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->positionBeforeSeekToEnd:J
.line 91
iput v1, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->state:I
.line 93
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->endPosition:J
const-wide/32 v5, 0xff1b
sub-long/2addr v0, v5
.line 94
.local v0, "lastPageSearchPosition":J
cmp-long v5, v0, v3
if-lez v5, :cond_50
.line 95
return-wide v0
.line 99
.end local v0 # "lastPageSearchPosition":J
:cond_50
invoke-virtual {p0, p1}, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->readGranuleOfLastPage(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)J
move-result-wide v0
iput-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->totalGranules:J
.line 100
iput v2, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->state:I
.line 101
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->positionBeforeSeekToEnd:J
return-wide v0
.end method
.method readGranuleOfLastPage(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)J
.registers 7
.param p1, "input" # Lcom/google/android/exoplayer2/extractor/ExtractorInput;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 311
invoke-virtual {p0, p1}, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->skipToNextPage(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)V
.line 312
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->reset()V
.line 313
:goto_8
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
iget v0, v0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->type:I
const/4 v1, 0x4
and-int/2addr v0, v1
if-eq v0, v1, :cond_2d
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v0
iget-wide v2, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->endPosition:J
cmp-long v4, v0, v2
if-gez v4, :cond_2d
.line 314
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
const/4 v1, 0x0
invoke-virtual {v0, p1, v1}, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->populate(Lcom/google/android/exoplayer2/extractor/ExtractorInput;Z)Z
.line 315
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
iget v0, v0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->headerSize:I
iget-object v1, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
iget v1, v1, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->bodySize:I
add-int/2addr v0, v1
invoke-interface {p1, v0}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
goto :goto_8
.line 317
:cond_2d
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
iget-wide v0, v0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->granulePosition:J
return-wide v0
.end method
.method public resetSeeking()V
.registers 3
.line 137
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->startPosition:J
iput-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->start:J
.line 138
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->endPosition:J
iput-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->end:J
.line 139
const-wide/16 v0, 0x0
iput-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->startGranule:J
.line 140
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->totalGranules:J
iput-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->endGranule:J
.line 141
return-void
.end method
.method skipToNextPage(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)V
.registers 4
.param p1, "input" # Lcom/google/android/exoplayer2/extractor/ExtractorInput;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 254
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->endPosition:J
invoke-virtual {p0, p1, v0, v1}, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->skipToNextPage(Lcom/google/android/exoplayer2/extractor/ExtractorInput;J)Z
move-result v0
if-eqz v0, :cond_9
.line 258
return-void
.line 256
:cond_9
new-instance v0, Ljava/io/EOFException;
invoke-direct {v0}, Ljava/io/EOFException;-><init>()V
throw v0
.end method
.method skipToNextPage(Lcom/google/android/exoplayer2/extractor/ExtractorInput;J)Z
.registers 10
.param p1, "input" # Lcom/google/android/exoplayer2/extractor/ExtractorInput;
.param p2, "limit" # J
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 272
const-wide/16 v0, 0x3
add-long/2addr v0, p2
iget-wide v2, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->endPosition:J
invoke-static {v0, v1, v2, v3}, Ljava/lang/Math;->min(JJ)J
move-result-wide p2
.line 273
const/16 v0, 0x800
new-array v0, v0, [B
.line 274
.local v0, "buffer":[B
array-length v1, v0
.line 276
.local v1, "peekLength":I
:goto_e
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v2
int-to-long v4, v1
add-long/2addr v2, v4
const/4 v4, 0x0
cmp-long v5, v2, p2
if-lez v5, :cond_24
.line 278
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v2
sub-long v2, p2, v2
long-to-int v1, v2
.line 279
const/4 v2, 0x4
if-ge v1, v2, :cond_24
.line 281
return v4
.line 284
:cond_24
invoke-interface {p1, v0, v4, v1, v4}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->peekFully([BIIZ)Z
.line 285
const/4 v2, 0x0
.local v2, "i":I
:goto_28
add-int/lit8 v3, v1, -0x3
if-ge v2, v3, :cond_50
.line 286
aget-byte v3, v0, v2
const/16 v4, 0x4f
if-ne v3, v4, :cond_4d
add-int/lit8 v3, v2, 0x1
aget-byte v3, v0, v3
const/16 v4, 0x67
if-ne v3, v4, :cond_4d
add-int/lit8 v3, v2, 0x2
aget-byte v3, v0, v3
if-ne v3, v4, :cond_4d
add-int/lit8 v3, v2, 0x3
aget-byte v3, v0, v3
const/16 v4, 0x53
if-ne v3, v4, :cond_4d
.line 291
invoke-interface {p1, v2}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 292
const/4 v3, 0x1
return v3
.line 285
:cond_4d
add-int/lit8 v2, v2, 0x1
goto :goto_28
.line 296
.end local v2 # "i":I
:cond_50
add-int/lit8 v2, v1, -0x3
invoke-interface {p1, v2}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
goto :goto_e
.end method
.method skipToPageOfGranule(Lcom/google/android/exoplayer2/extractor/ExtractorInput;JJ)J
.registers 10
.param p1, "input" # Lcom/google/android/exoplayer2/extractor/ExtractorInput;
.param p2, "targetGranule" # J
.param p4, "currentGranule" # J
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 336
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
const/4 v1, 0x0
invoke-virtual {v0, p1, v1}, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->populate(Lcom/google/android/exoplayer2/extractor/ExtractorInput;Z)Z
.line 337
:goto_6
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
iget-wide v2, v0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->granulePosition:J
cmp-long v0, v2, p2
if-gez v0, :cond_24
.line 338
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
iget v0, v0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->headerSize:I
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
iget v2, v2, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->bodySize:I
add-int/2addr v0, v2
invoke-interface {p1, v0}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 340
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
iget-wide p4, v0, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->granulePosition:J
.line 342
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->pageHeader:Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;
invoke-virtual {v0, p1, v1}, Lcom/google/android/exoplayer2/extractor/ogg/OggPageHeader;->populate(Lcom/google/android/exoplayer2/extractor/ExtractorInput;Z)Z
goto :goto_6
.line 344
:cond_24
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->resetPeekPosition()V
.line 345
return-wide p4
.end method
.method public startSeek(J)J
.registers 7
.param p1, "timeUs" # J
.line 123
iget v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->state:I
const/4 v1, 0x2
const/4 v2, 0x3
if-eq v0, v2, :cond_b
if-ne v0, v1, :cond_9
goto :goto_b
:cond_9
const/4 v0, 0x0
goto :goto_c
:cond_b
:goto_b
const/4 v0, 0x1
:goto_c
invoke-static {v0}, Lcom/google/android/exoplayer2/util/Assertions;->checkArgument(Z)V
.line 124
const-wide/16 v2, 0x0
cmp-long v0, p1, v2
if-nez v0, :cond_16
goto :goto_1c
:cond_16
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->streamReader:Lcom/google/android/exoplayer2/extractor/ogg/StreamReader;
invoke-virtual {v0, p1, p2}, Lcom/google/android/exoplayer2/extractor/ogg/StreamReader;->convertTimeToGranule(J)J
move-result-wide v2
:goto_1c
iput-wide v2, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->targetGranule:J
.line 125
iput v1, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->state:I
.line 126
invoke-virtual {p0}, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->resetSeeking()V
.line 127
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ogg/DefaultOggSeeker;->targetGranule:J
return-wide v0
.end method