DefaultDashChunkSource.smali
.class public Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;
.super Ljava/lang/Object;
.source "SourceFile"
# interfaces
.implements Lcom/google/android/exoplayer2/source/dash/DashChunkSource;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;,
Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$Factory;
}
.end annotation
# instance fields
.field private final adaptationSetIndices:[I
.field private final dataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
.field private final elapsedRealtimeOffsetMs:J
.field private fatalError:Ljava/io/IOException;
.field private liveEdgeTimeUs:J
.field private manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
.field private final manifestLoaderErrorThrower:Lcom/google/android/exoplayer2/upstream/LoaderErrorThrower;
.field private final maxSegmentsPerLoad:I
.field private missingLastSegment:Z
.field private periodIndex:I
.field protected final representationHolders:[Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;
.field private final trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
.field private final trackType:I
# direct methods
.method public constructor <init>(Lcom/google/android/exoplayer2/upstream/LoaderErrorThrower;Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;I[ILcom/google/android/exoplayer2/trackselection/TrackSelection;ILcom/google/android/exoplayer2/upstream/DataSource;JIZZ)V
.registers 29
move-object/from16 v0, p0
move-object/from16 v1, p5
.line 122
invoke-direct/range {p0 .. p0}, Ljava/lang/Object;-><init>()V
move-object/from16 v2, p1
.line 123
iput-object v2, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifestLoaderErrorThrower:Lcom/google/android/exoplayer2/upstream/LoaderErrorThrower;
move-object/from16 v2, p2
.line 124
iput-object v2, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
move-object/from16 v3, p4
.line 125
iput-object v3, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->adaptationSetIndices:[I
.line 126
iput-object v1, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
move/from16 v9, p6
.line 127
iput v9, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackType:I
move-object/from16 v3, p7
.line 128
iput-object v3, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->dataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
move/from16 v3, p3
.line 129
iput v3, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->periodIndex:I
move-wide/from16 v4, p8
.line 130
iput-wide v4, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->elapsedRealtimeOffsetMs:J
move/from16 v4, p10
.line 131
iput v4, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->maxSegmentsPerLoad:I
.line 133
invoke-virtual/range {p2 .. p3}, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->getPeriodDurationUs(I)J
move-result-wide v10
const-wide v2, -0x7fffffffffffffffL # -4.9E-324
.line 134
iput-wide v2, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->liveEdgeTimeUs:J
.line 135
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->getRepresentations()Ljava/util/ArrayList;
move-result-object v12
.line 136
invoke-interface/range {p5 .. p5}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->length()I
move-result v2
new-array v2, v2, [Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;
iput-object v2, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->representationHolders:[Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;
const/4 v2, 0x0
const/4 v13, 0x0
.line 137
:goto_42
iget-object v2, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->representationHolders:[Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;
array-length v2, v2
if-ge v13, v2, :cond_66
.line 138
invoke-interface {v1, v13}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getIndexInTrackGroup(I)I
move-result v2
invoke-interface {v12, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v2
move-object v6, v2
check-cast v6, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;
.line 139
iget-object v14, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->representationHolders:[Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;
new-instance v15, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;
move-object v2, v15
move-wide v3, v10
move/from16 v5, p6
move/from16 v7, p11
move/from16 v8, p12
invoke-direct/range {v2 .. v8}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;-><init>(JILcom/google/android/exoplayer2/source/dash/manifest/Representation;ZZ)V
aput-object v15, v14, v13
add-int/lit8 v13, v13, 0x1
goto :goto_42
:cond_66
return-void
.end method
.method private getNowUnixTimeUs()J
.registers 8
.line 326
iget-wide v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->elapsedRealtimeOffsetMs:J
const-wide/16 v2, 0x3e8
const-wide/16 v4, 0x0
cmp-long v6, v0, v4
if-eqz v6, :cond_14
.line 327
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v0
iget-wide v4, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->elapsedRealtimeOffsetMs:J
add-long/2addr v0, v4
:goto_11
mul-long v0, v0, v2
return-wide v0
.line 329
:cond_14
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v0
goto :goto_11
.end method
.method private getRepresentations()Ljava/util/ArrayList;
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/ArrayList<",
"Lcom/google/android/exoplayer2/source/dash/manifest/Representation;",
">;"
}
.end annotation
.line 311
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
iget v1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->periodIndex:I
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->getPeriod(I)Lcom/google/android/exoplayer2/source/dash/manifest/Period;
move-result-object v0
iget-object v0, v0, Lcom/google/android/exoplayer2/source/dash/manifest/Period;->adaptationSets:Ljava/util/List;
.line 312
new-instance v1, Ljava/util/ArrayList;
invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
.line 313
iget-object v2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->adaptationSetIndices:[I
array-length v3, v2
const/4 v4, 0x0
:goto_13
if-ge v4, v3, :cond_25
aget v5, v2, v4
.line 314
invoke-interface {v0, v5}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v5
check-cast v5, Lcom/google/android/exoplayer2/source/dash/manifest/AdaptationSet;
iget-object v5, v5, Lcom/google/android/exoplayer2/source/dash/manifest/AdaptationSet;->representations:Ljava/util/List;
invoke-virtual {v1, v5}, Ljava/util/ArrayList;->addAll(Ljava/util/Collection;)Z
add-int/lit8 v4, v4, 0x1
goto :goto_13
:cond_25
return-object v1
.end method
.method protected static newInitializationChunk(Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;Lcom/google/android/exoplayer2/upstream/DataSource;Lcom/google/android/exoplayer2/Format;ILjava/lang/Object;Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;)Lcom/google/android/exoplayer2/source/chunk/Chunk;
.registers 15
.line 342
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->representation:Lcom/google/android/exoplayer2/source/dash/manifest/Representation;
iget-object v0, v0, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->baseUrl:Ljava/lang/String;
if-eqz p5, :cond_d
.line 346
invoke-virtual {p5, p6, v0}, Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;->attemptMerge(Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;Ljava/lang/String;)Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;
move-result-object p6
if-nez p6, :cond_d
goto :goto_e
:cond_d
move-object p5, p6
.line 353
:goto_e
new-instance p6, Lcom/google/android/exoplayer2/upstream/DataSpec;
invoke-virtual {p5, v0}, Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;->resolveUri(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v2
iget-wide v3, p5, Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;->start:J
iget-wide v5, p5, Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;->length:J
iget-object p5, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->representation:Lcom/google/android/exoplayer2/source/dash/manifest/Representation;
.line 354
invoke-virtual {p5}, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->getCacheKey()Ljava/lang/String;
move-result-object v7
move-object v1, p6
invoke-direct/range {v1 .. v7}, Lcom/google/android/exoplayer2/upstream/DataSpec;-><init>(Landroid/net/Uri;JJLjava/lang/String;)V
.line 355
new-instance p5, Lcom/google/android/exoplayer2/source/chunk/InitializationChunk;
iget-object v7, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->extractorWrapper:Lcom/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper;
move-object v1, p5
move-object v2, p1
move-object v3, p6
move-object v4, p2
move v5, p3
move-object v6, p4
invoke-direct/range {v1 .. v7}, Lcom/google/android/exoplayer2/source/chunk/InitializationChunk;-><init>(Lcom/google/android/exoplayer2/upstream/DataSource;Lcom/google/android/exoplayer2/upstream/DataSpec;Lcom/google/android/exoplayer2/Format;ILjava/lang/Object;Lcom/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper;)V
return-object p5
.end method
.method protected static newMediaChunk(Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;Lcom/google/android/exoplayer2/upstream/DataSource;ILcom/google/android/exoplayer2/Format;ILjava/lang/Object;II)Lcom/google/android/exoplayer2/source/chunk/Chunk;
.registers 27
move-object/from16 v0, p0
move/from16 v10, p6
.line 362
iget-object v1, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->representation:Lcom/google/android/exoplayer2/source/dash/manifest/Representation;
.line 363
invoke-virtual {v0, v10}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getSegmentStartTimeUs(I)J
move-result-wide v6
.line 364
invoke-virtual {v0, v10}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getSegmentUrl(I)Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;
move-result-object v2
.line 365
iget-object v3, v1, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->baseUrl:Ljava/lang/String;
.line 366
iget-object v4, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->extractorWrapper:Lcom/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper;
if-nez v4, :cond_41
.line 367
invoke-virtual {v0, v10}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getSegmentEndTimeUs(I)J
move-result-wide v8
.line 368
new-instance v4, Lcom/google/android/exoplayer2/upstream/DataSpec;
invoke-virtual {v2, v3}, Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;->resolveUri(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v12
iget-wide v13, v2, Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;->start:J
iget-wide v2, v2, Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;->length:J
.line 369
invoke-virtual {v1}, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->getCacheKey()Ljava/lang/String;
move-result-object v17
move-object v11, v4
move-wide v15, v2
invoke-direct/range {v11 .. v17}, Lcom/google/android/exoplayer2/upstream/DataSpec;-><init>(Landroid/net/Uri;JJLjava/lang/String;)V
.line 370
new-instance v13, Lcom/google/android/exoplayer2/source/chunk/SingleSampleMediaChunk;
move-object v0, v13
move-object/from16 v1, p1
move-object v2, v4
move-object/from16 v3, p3
move/from16 v4, p4
move-object/from16 v5, p5
move/from16 v10, p6
move/from16 v11, p2
move-object/from16 v12, p3
invoke-direct/range {v0 .. v12}, Lcom/google/android/exoplayer2/source/chunk/SingleSampleMediaChunk;-><init>(Lcom/google/android/exoplayer2/upstream/DataSource;Lcom/google/android/exoplayer2/upstream/DataSpec;Lcom/google/android/exoplayer2/Format;ILjava/lang/Object;JJIILcom/google/android/exoplayer2/Format;)V
return-object v13
:cond_41
const/4 v4, 0x1
move/from16 v5, p7
const/4 v8, 0x1
const/4 v11, 0x1
:goto_46
if-ge v8, v5, :cond_5a
add-int v9, v10, v8
.line 375
invoke-virtual {v0, v9}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getSegmentUrl(I)Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;
move-result-object v9
.line 376
invoke-virtual {v2, v9, v3}, Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;->attemptMerge(Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;Ljava/lang/String;)Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;
move-result-object v9
if-eqz v9, :cond_5a
add-int/lit8 v11, v11, 0x1
add-int/lit8 v8, v8, 0x1
move-object v2, v9
goto :goto_46
:cond_5a
add-int v5, v10, v11
sub-int/2addr v5, v4
.line 384
invoke-virtual {v0, v5}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getSegmentEndTimeUs(I)J
move-result-wide v8
.line 385
new-instance v4, Lcom/google/android/exoplayer2/upstream/DataSpec;
invoke-virtual {v2, v3}, Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;->resolveUri(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v13
iget-wide v14, v2, Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;->start:J
iget-wide v2, v2, Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;->length:J
.line 386
invoke-virtual {v1}, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->getCacheKey()Ljava/lang/String;
move-result-object v18
move-object v12, v4
move-wide/from16 v16, v2
invoke-direct/range {v12 .. v18}, Lcom/google/android/exoplayer2/upstream/DataSpec;-><init>(Landroid/net/Uri;JJLjava/lang/String;)V
.line 387
iget-wide v1, v1, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->presentationTimeOffsetUs:J
neg-long v12, v1
.line 388
new-instance v15, Lcom/google/android/exoplayer2/source/chunk/ContainerMediaChunk;
iget-object v14, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->extractorWrapper:Lcom/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper;
move-object v0, v15
move-object/from16 v1, p1
move-object v2, v4
move-object/from16 v3, p3
move/from16 v4, p4
move-object/from16 v5, p5
move/from16 v10, p6
invoke-direct/range {v0 .. v14}, Lcom/google/android/exoplayer2/source/chunk/ContainerMediaChunk;-><init>(Lcom/google/android/exoplayer2/upstream/DataSource;Lcom/google/android/exoplayer2/upstream/DataSpec;Lcom/google/android/exoplayer2/Format;ILjava/lang/Object;JJIIJLcom/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper;)V
return-object v15
.end method
.method private resolveTimeToLiveEdgeUs(J)J
.registers 8
.line 334
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
iget-boolean v0, v0, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->dynamic:Z
const-wide v1, -0x7fffffffffffffffL # -4.9E-324
if-eqz v0, :cond_13
iget-wide v3, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->liveEdgeTimeUs:J
cmp-long v0, v3, v1
if-eqz v0, :cond_13
const/4 v0, 0x1
goto :goto_14
:cond_13
const/4 v0, 0x0
:goto_14
if-eqz v0, :cond_1a
.line 335
iget-wide v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->liveEdgeTimeUs:J
sub-long/2addr v0, p1
return-wide v0
:cond_1a
return-wide v1
.end method
.method private updateLiveEdgeTimeUs(Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;I)V
.registers 4
.line 321
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
iget-boolean v0, v0, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->dynamic:Z
if-eqz v0, :cond_b
.line 322
invoke-virtual {p1, p2}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getSegmentEndTimeUs(I)J
move-result-wide p1
goto :goto_10
:cond_b
const-wide p1, -0x7fffffffffffffffL # -4.9E-324
:goto_10
iput-wide p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->liveEdgeTimeUs:J
return-void
.end method
# virtual methods
.method public getNextChunk(Lcom/google/android/exoplayer2/source/chunk/MediaChunk;JJLcom/google/android/exoplayer2/source/chunk/ChunkHolder;)V
.registers 16
.line 180
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->fatalError:Ljava/io/IOException;
if-eqz v0, :cond_5
return-void
:cond_5
sub-long v4, p4, p2
.line 185
invoke-direct {p0, p2, p3}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->resolveTimeToLiveEdgeUs(J)J
move-result-wide v6
.line 186
iget-object v1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
move-wide v2, p2
invoke-interface/range {v1 .. v7}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->updateSelectedTrack(JJJ)V
.line 188
iget-object p2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->representationHolders:[Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;
iget-object p3, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
.line 189
invoke-interface {p3}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getSelectedIndex()I
move-result p3
aget-object v0, p2, p3
.line 191
iget-object p2, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->extractorWrapper:Lcom/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper;
if-eqz p2, :cond_5b
.line 192
iget-object p2, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->representation:Lcom/google/android/exoplayer2/source/dash/manifest/Representation;
.line 195
iget-object p3, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->extractorWrapper:Lcom/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper;
invoke-virtual {p3}, Lcom/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper;->getSampleFormats()[Lcom/google/android/exoplayer2/Format;
move-result-object p3
const/4 v1, 0x0
if-nez p3, :cond_30
.line 196
invoke-virtual {p2}, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->getInitializationUri()Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;
move-result-object p3
move-object v5, p3
goto :goto_31
:cond_30
move-object v5, v1
.line 198
:goto_31
iget-object p3, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentIndex:Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
if-nez p3, :cond_3b
.line 199
invoke-virtual {p2}, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->getIndexUri()Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;
move-result-object p2
move-object v6, p2
goto :goto_3c
:cond_3b
move-object v6, v1
:goto_3c
if-nez v5, :cond_40
if-eqz v6, :cond_5b
.line 203
:cond_40
iget-object v1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->dataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
iget-object p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
.line 204
invoke-interface {p1}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getSelectedFormat()Lcom/google/android/exoplayer2/Format;
move-result-object v2
iget-object p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
invoke-interface {p1}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getSelectionReason()I
move-result v3
iget-object p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
.line 205
invoke-interface {p1}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getSelectionData()Ljava/lang/Object;
move-result-object v4
.line 203
invoke-static/range {v0 .. v6}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->newInitializationChunk(Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;Lcom/google/android/exoplayer2/upstream/DataSource;Lcom/google/android/exoplayer2/Format;ILjava/lang/Object;Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;)Lcom/google/android/exoplayer2/source/chunk/Chunk;
move-result-object p1
iput-object p1, p6, Lcom/google/android/exoplayer2/source/chunk/ChunkHolder;->chunk:Lcom/google/android/exoplayer2/source/chunk/Chunk;
return-void
.line 210
:cond_5b
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getSegmentCount()I
move-result p2
const/4 p3, 0x0
const/4 v1, 0x1
if-nez p2, :cond_78
.line 213
iget-object p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
iget-boolean p1, p1, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->dynamic:Z
if-eqz p1, :cond_74
iget p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->periodIndex:I
iget-object p2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
invoke-virtual {p2}, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->getPeriodCount()I
move-result p2
sub-int/2addr p2, v1
if-ge p1, p2, :cond_75
:cond_74
const/4 p3, 0x1
:cond_75
iput-boolean p3, p6, Lcom/google/android/exoplayer2/source/chunk/ChunkHolder;->endOfStream:Z
return-void
.line 217
:cond_78
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getFirstSegmentNum()I
move-result v2
const/4 v3, -0x1
if-ne p2, v3, :cond_bf
.line 222
invoke-direct {p0}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->getNowUnixTimeUs()J
move-result-wide v3
iget-object p2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
iget-wide v5, p2, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->availabilityStartTime:J
invoke-static {v5, v6}, Lcom/google/android/exoplayer2/C;->msToUs(J)J
move-result-wide v5
sub-long/2addr v3, v5
.line 223
iget-object p2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
iget v5, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->periodIndex:I
invoke-virtual {p2, v5}, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->getPeriod(I)Lcom/google/android/exoplayer2/source/dash/manifest/Period;
move-result-object p2
iget-wide v5, p2, Lcom/google/android/exoplayer2/source/dash/manifest/Period;->startMs:J
invoke-static {v5, v6}, Lcom/google/android/exoplayer2/C;->msToUs(J)J
move-result-wide v5
sub-long/2addr v3, v5
.line 225
iget-object p2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
iget-wide v5, p2, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->timeShiftBufferDepth:J
const-wide v7, -0x7fffffffffffffffL # -4.9E-324
cmp-long p2, v5, v7
if-eqz p2, :cond_ba
.line 226
iget-object p2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
iget-wide v5, p2, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->timeShiftBufferDepth:J
invoke-static {v5, v6}, Lcom/google/android/exoplayer2/C;->msToUs(J)J
move-result-wide v5
sub-long v5, v3, v5
.line 228
invoke-virtual {v0, v5, v6}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getSegmentNum(J)I
move-result p2
.line 227
invoke-static {v2, p2}, Ljava/lang/Math;->max(II)I
move-result v2
.line 232
:cond_ba
invoke-virtual {v0, v3, v4}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getSegmentNum(J)I
move-result p2
goto :goto_c0
:cond_bf
add-int/2addr p2, v2
:goto_c0
sub-int/2addr p2, v1
.line 237
invoke-direct {p0, v0, p2}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->updateLiveEdgeTimeUs(Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;I)V
if-nez p1, :cond_cf
.line 241
invoke-virtual {v0, p4, p5}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getSegmentNum(J)I
move-result p1
invoke-static {p1, v2, p2}, Lcom/google/android/exoplayer2/util/Util;->constrainValue(III)I
move-result p1
goto :goto_dd
.line 244
:cond_cf
invoke-virtual {p1}, Lcom/google/android/exoplayer2/source/chunk/MediaChunk;->getNextChunkIndex()I
move-result p1
if-ge p1, v2, :cond_dd
.line 247
new-instance p1, Lcom/google/android/exoplayer2/source/BehindLiveWindowException;
invoke-direct {p1}, Lcom/google/android/exoplayer2/source/BehindLiveWindowException;-><init>()V
iput-object p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->fatalError:Ljava/io/IOException;
return-void
:cond_dd
:goto_dd
move v6, p1
if-gt v6, p2, :cond_10c
.line 252
iget-boolean p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->missingLastSegment:Z
if-eqz p1, :cond_e7
if-lt v6, p2, :cond_e7
goto :goto_10c
.line 259
:cond_e7
iget p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->maxSegmentsPerLoad:I
sub-int/2addr p2, v6
add-int/2addr p2, v1
invoke-static {p1, p2}, Ljava/lang/Math;->min(II)I
move-result v7
.line 260
iget-object v1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->dataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
iget v2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackType:I
iget-object p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
.line 261
invoke-interface {p1}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getSelectedFormat()Lcom/google/android/exoplayer2/Format;
move-result-object v3
iget-object p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
invoke-interface {p1}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getSelectionReason()I
move-result v4
iget-object p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
.line 262
invoke-interface {p1}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getSelectionData()Ljava/lang/Object;
move-result-object v5
.line 260
invoke-static/range {v0 .. v7}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->newMediaChunk(Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;Lcom/google/android/exoplayer2/upstream/DataSource;ILcom/google/android/exoplayer2/Format;ILjava/lang/Object;II)Lcom/google/android/exoplayer2/source/chunk/Chunk;
move-result-object p1
iput-object p1, p6, Lcom/google/android/exoplayer2/source/chunk/ChunkHolder;->chunk:Lcom/google/android/exoplayer2/source/chunk/Chunk;
return-void
.line 255
:cond_10c
:goto_10c
iget-object p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
iget-boolean p1, p1, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->dynamic:Z
if-eqz p1, :cond_11d
iget p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->periodIndex:I
iget-object p2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
invoke-virtual {p2}, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->getPeriodCount()I
move-result p2
sub-int/2addr p2, v1
if-ge p1, p2, :cond_11e
:cond_11d
const/4 p3, 0x1
:cond_11e
iput-boolean p3, p6, Lcom/google/android/exoplayer2/source/chunk/ChunkHolder;->endOfStream:Z
return-void
.end method
.method public getPreferredQueueSize(JLjava/util/List;)I
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(J",
"Ljava/util/List<",
"+",
"Lcom/google/android/exoplayer2/source/chunk/MediaChunk;",
">;)I"
}
.end annotation
.line 171
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->fatalError:Ljava/io/IOException;
if-nez v0, :cond_15
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
invoke-interface {v0}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->length()I
move-result v0
const/4 v1, 0x2
if-ge v0, v1, :cond_e
goto :goto_15
.line 174
:cond_e
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
invoke-interface {v0, p1, p2, p3}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->evaluateQueueSize(JLjava/util/List;)I
move-result p1
return p1
.line 172
:cond_15
:goto_15
invoke-interface {p3}, Ljava/util/List;->size()I
move-result p1
return p1
.end method
.method public maybeThrowError()V
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 162
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->fatalError:Ljava/io/IOException;
if-nez v0, :cond_a
.line 165
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifestLoaderErrorThrower:Lcom/google/android/exoplayer2/upstream/LoaderErrorThrower;
invoke-interface {v0}, Lcom/google/android/exoplayer2/upstream/LoaderErrorThrower;->maybeThrowError()V
return-void
.line 163
:cond_a
throw v0
.end method
.method public onChunkLoadCompleted(Lcom/google/android/exoplayer2/source/chunk/Chunk;)V
.registers 4
.line 267
instance-of v0, p1, Lcom/google/android/exoplayer2/source/chunk/InitializationChunk;
if-eqz v0, :cond_27
.line 268
check-cast p1, Lcom/google/android/exoplayer2/source/chunk/InitializationChunk;
.line 269
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->representationHolders:[Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;
iget-object v1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
iget-object p1, p1, Lcom/google/android/exoplayer2/source/chunk/InitializationChunk;->trackFormat:Lcom/google/android/exoplayer2/Format;
.line 270
invoke-interface {v1, p1}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->indexOf(Lcom/google/android/exoplayer2/Format;)I
move-result p1
aget-object p1, v0, p1
.line 274
iget-object v0, p1, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentIndex:Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
if-nez v0, :cond_27
.line 275
iget-object v0, p1, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->extractorWrapper:Lcom/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper;->getSeekMap()Lcom/google/android/exoplayer2/extractor/SeekMap;
move-result-object v0
if-eqz v0, :cond_27
.line 277
new-instance v1, Lcom/google/android/exoplayer2/source/dash/DashWrappingSegmentIndex;
check-cast v0, Lcom/google/android/exoplayer2/extractor/ChunkIndex;
invoke-direct {v1, v0}, Lcom/google/android/exoplayer2/source/dash/DashWrappingSegmentIndex;-><init>(Lcom/google/android/exoplayer2/extractor/ChunkIndex;)V
iput-object v1, p1, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentIndex:Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
:cond_27
return-void
.end method
.method public onChunkLoadError(Lcom/google/android/exoplayer2/source/chunk/Chunk;ZLjava/lang/Exception;)Z
.registers 6
if-nez p2, :cond_4
const/4 p1, 0x0
return p1
.line 289
:cond_4
iget-object p2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
iget-boolean p2, p2, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->dynamic:Z
if-nez p2, :cond_43
instance-of p2, p1, Lcom/google/android/exoplayer2/source/chunk/MediaChunk;
if-eqz p2, :cond_43
instance-of p2, p3, Lcom/google/android/exoplayer2/upstream/HttpDataSource$InvalidResponseCodeException;
if-eqz p2, :cond_43
move-object p2, p3
check-cast p2, Lcom/google/android/exoplayer2/upstream/HttpDataSource$InvalidResponseCodeException;
iget p2, p2, Lcom/google/android/exoplayer2/upstream/HttpDataSource$InvalidResponseCodeException;->responseCode:I
const/16 v0, 0x194
if-ne p2, v0, :cond_43
.line 292
iget-object p2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->representationHolders:[Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
iget-object v1, p1, Lcom/google/android/exoplayer2/source/chunk/Chunk;->trackFormat:Lcom/google/android/exoplayer2/Format;
.line 293
invoke-interface {v0, v1}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->indexOf(Lcom/google/android/exoplayer2/Format;)I
move-result v0
aget-object p2, p2, v0
.line 294
invoke-virtual {p2}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getSegmentCount()I
move-result v0
const/4 v1, -0x1
if-eq v0, v1, :cond_43
if-eqz v0, :cond_43
.line 296
invoke-virtual {p2}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getFirstSegmentNum()I
move-result p2
add-int/2addr p2, v0
const/4 v0, 0x1
sub-int/2addr p2, v0
.line 297
move-object v1, p1
check-cast v1, Lcom/google/android/exoplayer2/source/chunk/MediaChunk;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/source/chunk/MediaChunk;->getNextChunkIndex()I
move-result v1
if-le v1, p2, :cond_43
.line 298
iput-boolean v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->missingLastSegment:Z
return v0
.line 304
:cond_43
iget-object p2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
iget-object p1, p1, Lcom/google/android/exoplayer2/source/chunk/Chunk;->trackFormat:Lcom/google/android/exoplayer2/Format;
.line 305
invoke-interface {p2, p1}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->indexOf(Lcom/google/android/exoplayer2/Format;)I
move-result p1
.line 304
invoke-static {p2, p1, p3}, Lcom/google/android/exoplayer2/source/chunk/ChunkedTrackBlacklistUtil;->maybeBlacklistTrack(Lcom/google/android/exoplayer2/trackselection/TrackSelection;ILjava/lang/Exception;)Z
move-result p1
return p1
.end method
.method public updateManifest(Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;I)V
.registers 7
.line 147
:try_start_0
iput-object p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
.line 148
iput p2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->periodIndex:I
.line 149
invoke-virtual {p1, p2}, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->getPeriodDurationUs(I)J
move-result-wide p1
.line 150
invoke-direct {p0}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->getRepresentations()Ljava/util/ArrayList;
move-result-object v0
const/4 v1, 0x0
.line 151
:goto_d
iget-object v2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->representationHolders:[Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;
array-length v2, v2
if-ge v1, v2, :cond_28
.line 152
iget-object v2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
invoke-interface {v2, v1}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getIndexInTrackGroup(I)I
move-result v2
invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;
.line 153
iget-object v3, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->representationHolders:[Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;
aget-object v3, v3, v1
invoke-virtual {v3, p1, p2, v2}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->updateRepresentation(JLcom/google/android/exoplayer2/source/dash/manifest/Representation;)V
:try_end_25
.catch Lcom/google/android/exoplayer2/source/BehindLiveWindowException; {:try_start_0 .. :try_end_25} :catch_29
add-int/lit8 v1, v1, 0x1
goto :goto_d
:cond_28
return-void
:catch_29
move-exception p1
.line 156
iput-object p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->fatalError:Ljava/io/IOException;
return-void
.end method