DefaultDashChunkSource.smali
.class public Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;
.super Ljava/lang/Object;
.source "DefaultDashChunkSource.java"
# 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 adaptationSetIndex:I
.field private final dataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
.field private final elapsedRealtimeOffsetMs:J
.field private fatalError:Ljava/io/IOException;
.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 private final representationHolders:[Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;
.field private final trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
# direct methods
.method public constructor <init>(Lcom/google/android/exoplayer2/upstream/LoaderErrorThrower;Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;IILcom/google/android/exoplayer2/trackselection/TrackSelection;Lcom/google/android/exoplayer2/upstream/DataSource;JI)V
.registers 10
.line 111
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 112
iput-object p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifestLoaderErrorThrower:Lcom/google/android/exoplayer2/upstream/LoaderErrorThrower;
.line 113
iput-object p2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
.line 114
iput p4, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->adaptationSetIndex:I
.line 115
iput-object p5, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
.line 116
iput-object p6, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->dataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
.line 117
iput p3, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->periodIndex:I
.line 118
iput-wide p7, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->elapsedRealtimeOffsetMs:J
.line 119
iput p9, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->maxSegmentsPerLoad:I
.line 121
invoke-virtual {p2, p3}, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->getPeriodDurationUs(I)J
move-result-wide p1
.line 122
invoke-direct {p0}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->getRepresentations()Ljava/util/List;
move-result-object p3
.line 123
invoke-interface {p5}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->length()I
move-result p4
new-array p4, p4, [Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;
iput-object p4, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->representationHolders:[Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;
const/4 p4, 0x0
.line 124
:goto_24
iget-object p6, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->representationHolders:[Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;
array-length p6, p6
if-ge p4, p6, :cond_3f
.line 125
invoke-interface {p5, p4}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getIndexInTrackGroup(I)I
move-result p6
invoke-interface {p3, p6}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object p6
check-cast p6, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;
.line 126
iget-object p7, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->representationHolders:[Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;
new-instance p8, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;
invoke-direct {p8, p1, p2, p6}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;-><init>(JLcom/google/android/exoplayer2/source/dash/manifest/Representation;)V
aput-object p8, p7, p4
add-int/lit8 p4, p4, 0x1
goto :goto_24
:cond_3f
return-void
.end method
.method private getNowUnixTimeUs()J
.registers 8
.line 291
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 292
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 294
:cond_14
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v0
goto :goto_11
.end method
.method private getRepresentations()Ljava/util/List;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Lcom/google/android/exoplayer2/source/dash/manifest/Representation;",
">;"
}
.end annotation
.line 287
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;
iget v1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->adaptationSetIndex:I
invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/android/exoplayer2/source/dash/manifest/AdaptationSet;
iget-object v0, v0, Lcom/google/android/exoplayer2/source/dash/manifest/AdaptationSet;->representations:Ljava/util/List;
return-object v0
.end method
.method private 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 302
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 306
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 313
: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 314
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 315
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 private static newMediaChunk(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/Format;II)Lcom/google/android/exoplayer2/source/chunk/Chunk;
.registers 27
move-object/from16 v0, p0
move/from16 v10, p6
.line 322
iget-object v1, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->representation:Lcom/google/android/exoplayer2/source/dash/manifest/Representation;
.line 323
invoke-virtual {v0, v10}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getSegmentStartTimeUs(I)J
move-result-wide v6
.line 324
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 325
iget-object v3, v1, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->baseUrl:Ljava/lang/String;
.line 326
iget-object v4, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->extractorWrapper:Lcom/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper;
if-nez v4, :cond_3f
.line 327
invoke-virtual {v0, v10}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getSegmentEndTimeUs(I)J
move-result-wide v8
.line 328
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 329
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 330
new-instance v12, Lcom/google/android/exoplayer2/source/chunk/SingleSampleMediaChunk;
move-object v0, v12
move-object/from16 v1, p1
move-object v2, v4
move-object/from16 v3, p2
move/from16 v4, p3
move-object/from16 v5, p4
move/from16 v10, p6
move-object/from16 v11, p2
invoke-direct/range {v0 .. v11}, 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;JJILcom/google/android/exoplayer2/Format;)V
return-object v12
:cond_3f
const/4 v4, 0x1
move/from16 v5, p7
const/4 v8, 0x1
const/4 v11, 0x1
:goto_44
if-ge v8, v5, :cond_59
add-int v9, v10, v8
.line 335
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 336
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-nez v9, :cond_53
goto :goto_59
:cond_53
add-int/lit8 v11, v11, 0x1
add-int/lit8 v8, v8, 0x1
move-object v2, v9
goto :goto_44
:cond_59
:goto_59
add-int v5, v10, v11
sub-int/2addr v5, v4
.line 344
invoke-virtual {v0, v5}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getSegmentEndTimeUs(I)J
move-result-wide v8
.line 345
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 346
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 347
iget-wide v1, v1, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->presentationTimeOffsetUs:J
neg-long v12, v1
.line 348
new-instance v16, 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/from16 v0, v16
move-object/from16 v1, p1
move-object v2, v4
move-object/from16 v3, p2
move/from16 v4, p3
move-object/from16 v5, p4
move/from16 v10, p6
move-object/from16 v15, p5
invoke-direct/range {v0 .. v15}, 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;Lcom/google/android/exoplayer2/Format;)V
return-object v16
.end method
# virtual methods
.method public final getNextChunk(Lcom/google/android/exoplayer2/source/chunk/MediaChunk;JLcom/google/android/exoplayer2/source/chunk/ChunkHolder;)V
.registers 24
move-object/from16 v0, p0
move-object/from16 v1, p1
move-wide/from16 v2, p2
move-object/from16 v4, p4
.line 165
iget-object v5, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->fatalError:Ljava/io/IOException;
if-eqz v5, :cond_d
return-void
:cond_d
if-eqz v1, :cond_13
.line 169
iget-wide v5, v1, Lcom/google/android/exoplayer2/source/chunk/MediaChunk;->endTimeUs:J
sub-long/2addr v5, v2
goto :goto_15
:cond_13
const-wide/16 v5, 0x0
.line 170
:goto_15
iget-object v7, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
invoke-interface {v7, v5, v6}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->updateSelectedTrack(J)V
.line 172
iget-object v5, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->representationHolders:[Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;
iget-object v6, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
.line 173
invoke-interface {v6}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getSelectedIndex()I
move-result v6
aget-object v7, v5, v6
.line 174
iget-object v5, v7, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->representation:Lcom/google/android/exoplayer2/source/dash/manifest/Representation;
.line 175
iget-object v6, v7, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentIndex:Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
.line 179
iget-object v12, v7, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->sampleFormat:Lcom/google/android/exoplayer2/Format;
const/4 v8, 0x0
if-nez v12, :cond_33
.line 181
invoke-virtual {v5}, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->getInitializationUri()Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;
move-result-object v9
move-object v13, v9
goto :goto_34
:cond_33
move-object v13, v8
:goto_34
if-nez v6, :cond_3b
.line 184
invoke-virtual {v5}, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->getIndexUri()Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;
move-result-object v5
goto :goto_3c
:cond_3b
move-object v5, v8
:goto_3c
if-nez v13, :cond_ec
if-eqz v5, :cond_42
goto/16 :goto_ec
.line 194
:cond_42
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->getNowUnixTimeUs()J
move-result-wide v5
.line 195
invoke-virtual {v7}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getFirstSegmentNum()I
move-result v8
.line 196
invoke-virtual {v7}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getLastSegmentNum()I
move-result v9
const/4 v10, -0x1
const/4 v11, 0x0
const/4 v13, 0x1
if-ne v9, v10, :cond_55
const/4 v10, 0x1
goto :goto_56
:cond_55
const/4 v10, 0x0
:goto_56
if-eqz v10, :cond_91
.line 201
iget-object v9, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
iget-wide v9, v9, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->availabilityStartTime:J
const-wide/16 v14, 0x3e8
mul-long v9, v9, v14
sub-long/2addr v5, v9
.line 202
iget-object v9, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
iget v10, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->periodIndex:I
invoke-virtual {v9, v10}, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->getPeriod(I)Lcom/google/android/exoplayer2/source/dash/manifest/Period;
move-result-object v9
iget-wide v9, v9, Lcom/google/android/exoplayer2/source/dash/manifest/Period;->startMs:J
mul-long v9, v9, v14
sub-long/2addr v5, v9
.line 204
iget-object v9, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
iget-wide v9, v9, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->timeShiftBufferDepth:J
const-wide v16, -0x7fffffffffffffffL # -4.9E-324
cmp-long v18, v9, v16
if-eqz v18, :cond_8b
.line 205
iget-object v9, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
iget-wide v9, v9, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->timeShiftBufferDepth:J
mul-long v9, v9, v14
sub-long v9, v5, v9
.line 207
invoke-virtual {v7, v9, v10}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getSegmentNum(J)I
move-result v9
.line 206
invoke-static {v8, v9}, Ljava/lang/Math;->max(II)I
move-result v8
.line 211
:cond_8b
invoke-virtual {v7, v5, v6}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getSegmentNum(J)I
move-result v5
add-int/lit8 v9, v5, -0x1
:cond_91
if-nez v1, :cond_9c
.line 216
invoke-virtual {v7, v2, v3}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getSegmentNum(J)I
move-result v1
invoke-static {v1, v8, v9}, Lcom/google/android/exoplayer2/util/Util;->constrainValue(III)I
move-result v1
goto :goto_aa
.line 219
:cond_9c
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/source/chunk/MediaChunk;->getNextChunkIndex()I
move-result v1
if-ge v1, v8, :cond_aa
.line 222
new-instance v1, Lcom/google/android/exoplayer2/source/BehindLiveWindowException;
invoke-direct {v1}, Lcom/google/android/exoplayer2/source/BehindLiveWindowException;-><init>()V
iput-object v1, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->fatalError:Ljava/io/IOException;
return-void
:cond_aa
:goto_aa
if-gt v1, v9, :cond_d7
.line 227
iget-boolean v2, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->missingLastSegment:Z
if-eqz v2, :cond_b3
if-lt v1, v9, :cond_b3
goto :goto_d7
.line 234
:cond_b3
iget v2, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->maxSegmentsPerLoad:I
sub-int/2addr v9, v1
add-int/2addr v9, v13
invoke-static {v2, v9}, Ljava/lang/Math;->min(II)I
move-result v14
.line 235
iget-object v8, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->dataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
iget-object v2, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
invoke-interface {v2}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getSelectedFormat()Lcom/google/android/exoplayer2/Format;
move-result-object v9
iget-object v2, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
.line 236
invoke-interface {v2}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getSelectionReason()I
move-result v10
iget-object v2, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
invoke-interface {v2}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getSelectionData()Ljava/lang/Object;
move-result-object v11
move v13, v1
.line 235
invoke-static/range {v7 .. v14}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->newMediaChunk(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/Format;II)Lcom/google/android/exoplayer2/source/chunk/Chunk;
move-result-object v1
iput-object v1, v4, Lcom/google/android/exoplayer2/source/chunk/ChunkHolder;->chunk:Lcom/google/android/exoplayer2/source/chunk/Chunk;
return-void
.line 230
:cond_d7
:goto_d7
iget-object v1, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
iget-boolean v1, v1, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->dynamic:Z
if-eqz v1, :cond_e8
iget v1, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->periodIndex:I
iget-object v2, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
invoke-virtual {v2}, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->getPeriodCount()I
move-result v2
sub-int/2addr v2, v13
if-ge v1, v2, :cond_e9
:cond_e8
const/4 v11, 0x1
:cond_e9
iput-boolean v11, v4, Lcom/google/android/exoplayer2/source/chunk/ChunkHolder;->endOfStream:Z
return-void
.line 188
:cond_ec
:goto_ec
iget-object v8, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->dataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
iget-object v1, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
.line 189
invoke-interface {v1}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getSelectedFormat()Lcom/google/android/exoplayer2/Format;
move-result-object v9
iget-object v1, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
invoke-interface {v1}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getSelectionReason()I
move-result v10
iget-object v1, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->trackSelection:Lcom/google/android/exoplayer2/trackselection/TrackSelection;
.line 190
invoke-interface {v1}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getSelectionData()Ljava/lang/Object;
move-result-object v11
move-object v12, v13
move-object v13, v5
.line 188
invoke-static/range {v7 .. v13}, 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 v1
iput-object v1, v4, Lcom/google/android/exoplayer2/source/chunk/ChunkHolder;->chunk:Lcom/google/android/exoplayer2/source/chunk/Chunk;
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 157
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 160
: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 158
: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 148
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->fatalError:Ljava/io/IOException;
if-nez v0, :cond_a
.line 151
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 149
:cond_a
throw v0
.end method
.method public onChunkLoadCompleted(Lcom/google/android/exoplayer2/source/chunk/Chunk;)V
.registers 5
.line 242
instance-of v0, p1, Lcom/google/android/exoplayer2/source/chunk/InitializationChunk;
if-eqz v0, :cond_2e
.line 243
check-cast p1, Lcom/google/android/exoplayer2/source/chunk/InitializationChunk;
.line 244
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 v2, p1, Lcom/google/android/exoplayer2/source/chunk/InitializationChunk;->trackFormat:Lcom/google/android/exoplayer2/Format;
.line 245
invoke-interface {v1, v2}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->indexOf(Lcom/google/android/exoplayer2/Format;)I
move-result v1
aget-object v0, v0, v1
.line 246
invoke-virtual {p1}, Lcom/google/android/exoplayer2/source/chunk/InitializationChunk;->getSampleFormat()Lcom/google/android/exoplayer2/Format;
move-result-object v1
if-eqz v1, :cond_1b
.line 248
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->setSampleFormat(Lcom/google/android/exoplayer2/Format;)V
.line 253
:cond_1b
iget-object v1, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentIndex:Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
if-nez v1, :cond_2e
.line 254
invoke-virtual {p1}, Lcom/google/android/exoplayer2/source/chunk/InitializationChunk;->getSeekMap()Lcom/google/android/exoplayer2/extractor/SeekMap;
move-result-object p1
if-eqz p1, :cond_2e
.line 256
new-instance v1, Lcom/google/android/exoplayer2/source/dash/DashWrappingSegmentIndex;
check-cast p1, Lcom/google/android/exoplayer2/extractor/ChunkIndex;
invoke-direct {v1, p1}, Lcom/google/android/exoplayer2/source/dash/DashWrappingSegmentIndex;-><init>(Lcom/google/android/exoplayer2/extractor/ChunkIndex;)V
iput-object v1, v0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentIndex:Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
:cond_2e
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 268
: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_38
instance-of p2, p1, Lcom/google/android/exoplayer2/source/chunk/MediaChunk;
if-eqz p2, :cond_38
instance-of p2, p3, Lcom/google/android/exoplayer2/upstream/HttpDataSource$InvalidResponseCodeException;
if-eqz p2, :cond_38
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_38
.line 271
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 272
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 273
invoke-virtual {p2}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getLastSegmentNum()I
move-result p2
.line 274
move-object v0, p1
check-cast v0, Lcom/google/android/exoplayer2/source/chunk/MediaChunk;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/chunk/MediaChunk;->getNextChunkIndex()I
move-result v0
if-le v0, p2, :cond_38
const/4 p1, 0x1
.line 275
iput-boolean p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->missingLastSegment:Z
return p1
.line 280
:cond_38
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 281
invoke-interface {p2, p1}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->indexOf(Lcom/google/android/exoplayer2/Format;)I
move-result p1
.line 280
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 133
:try_start_0
iput-object p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->manifest:Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;
.line 134
iput p2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->periodIndex:I
.line 135
invoke-virtual {p1, p2}, Lcom/google/android/exoplayer2/source/dash/manifest/DashManifest;->getPeriodDurationUs(I)J
move-result-wide p1
.line 136
invoke-direct {p0}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->getRepresentations()Ljava/util/List;
move-result-object v0
const/4 v1, 0x0
.line 137
: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_2b
.line 138
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 139
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_28
add-int/lit8 v1, v1, 0x1
goto :goto_d
:catch_28
move-exception p1
.line 142
iput-object p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;->fatalError:Ljava/io/IOException;
:cond_2b
return-void
.end method