HlsMediaPeriod.smali
.class public final Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;
.super Ljava/lang/Object;
.source "HlsMediaPeriod.java"
# interfaces
.implements Lcom/google/android/exoplayer2/source/MediaPeriod;
.implements Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper$Callback;
.implements Lcom/google/android/exoplayer2/source/hls/playlist/HlsPlaylistTracker$PlaylistEventListener;
# instance fields
.field private final allocator:Lcom/google/android/exoplayer2/upstream/Allocator;
.field private callback:Lcom/google/android/exoplayer2/source/MediaPeriod$Callback;
.field private final continueLoadingHandler:Landroid/os/Handler;
.field private final dataSourceFactory:Lcom/google/android/exoplayer2/upstream/DataSource$Factory;
.field private enabledSampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
.field private final eventDispatcher:Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener$EventDispatcher;
.field private final minLoadableRetryCount:I
.field private pendingPrepareCount:I
.field private final playlistTracker:Lcom/google/android/exoplayer2/source/hls/playlist/HlsPlaylistTracker;
.field private final preparePositionUs:J
.field private sampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
.field private seenFirstTrackSelection:Z
.field private sequenceableLoader:Lcom/google/android/exoplayer2/source/CompositeSequenceableLoader;
.field private final streamWrapperIndices:Ljava/util/IdentityHashMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/IdentityHashMap<",
"Lcom/google/android/exoplayer2/source/SampleStream;",
"Ljava/lang/Integer;",
">;"
}
.end annotation
.end field
.field private final timestampAdjusterProvider:Lcom/google/android/exoplayer2/source/hls/TimestampAdjusterProvider;
.field private trackGroups:Lcom/google/android/exoplayer2/source/TrackGroupArray;
# direct methods
.method public constructor <init>(Lcom/google/android/exoplayer2/source/hls/playlist/HlsPlaylistTracker;Lcom/google/android/exoplayer2/upstream/DataSource$Factory;ILcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener$EventDispatcher;Lcom/google/android/exoplayer2/upstream/Allocator;J)V
.registers 8
.line 66
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 67
iput-object p1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->playlistTracker:Lcom/google/android/exoplayer2/source/hls/playlist/HlsPlaylistTracker;
.line 68
iput-object p2, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->dataSourceFactory:Lcom/google/android/exoplayer2/upstream/DataSource$Factory;
.line 69
iput p3, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->minLoadableRetryCount:I
.line 70
iput-object p4, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->eventDispatcher:Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener$EventDispatcher;
.line 71
iput-object p5, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->allocator:Lcom/google/android/exoplayer2/upstream/Allocator;
.line 72
new-instance p1, Ljava/util/IdentityHashMap;
invoke-direct {p1}, Ljava/util/IdentityHashMap;-><init>()V
iput-object p1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->streamWrapperIndices:Ljava/util/IdentityHashMap;
.line 73
new-instance p1, Lcom/google/android/exoplayer2/source/hls/TimestampAdjusterProvider;
invoke-direct {p1}, Lcom/google/android/exoplayer2/source/hls/TimestampAdjusterProvider;-><init>()V
iput-object p1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->timestampAdjusterProvider:Lcom/google/android/exoplayer2/source/hls/TimestampAdjusterProvider;
.line 74
new-instance p1, Landroid/os/Handler;
invoke-direct {p1}, Landroid/os/Handler;-><init>()V
iput-object p1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->continueLoadingHandler:Landroid/os/Handler;
.line 75
iput-wide p6, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->preparePositionUs:J
return-void
.end method
.method private buildAndPrepareSampleStreamWrappers()V
.registers 10
.line 284
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->playlistTracker:Lcom/google/android/exoplayer2/source/hls/playlist/HlsPlaylistTracker;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/hls/playlist/HlsPlaylistTracker;->getMasterPlaylist()Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist;
move-result-object v0
.line 286
new-instance v1, Ljava/util/ArrayList;
iget-object v2, v0, Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist;->variants:Ljava/util/List;
invoke-direct {v1, v2}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
.line 287
new-instance v2, Ljava/util/ArrayList;
invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
.line 288
new-instance v3, Ljava/util/ArrayList;
invoke-direct {v3}, Ljava/util/ArrayList;-><init>()V
const/4 v4, 0x0
const/4 v5, 0x0
.line 289
:goto_19
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v6
if-ge v5, v6, :cond_46
.line 290
invoke-interface {v1, v5}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v6
check-cast v6, Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;
.line 291
iget-object v7, v6, Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;->format:Lcom/google/android/exoplayer2/Format;
iget v7, v7, Lcom/google/android/exoplayer2/Format;->height:I
if-gtz v7, :cond_40
const-string v7, "avc"
invoke-static {v6, v7}, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->variantHasExplicitCodecWithPrefix(Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;Ljava/lang/String;)Z
move-result v7
if-eqz v7, :cond_34
goto :goto_40
:cond_34
const-string v7, "mp4a"
.line 293
invoke-static {v6, v7}, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->variantHasExplicitCodecWithPrefix(Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;Ljava/lang/String;)Z
move-result v7
if-eqz v7, :cond_43
.line 294
invoke-virtual {v3, v6}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
goto :goto_43
.line 292
:cond_40
:goto_40
invoke-virtual {v2, v6}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
:cond_43
:goto_43
add-int/lit8 v5, v5, 0x1
goto :goto_19
.line 297
:cond_46
invoke-virtual {v2}, Ljava/util/ArrayList;->isEmpty()Z
move-result v5
if-nez v5, :cond_4e
move-object v1, v2
goto :goto_5b
.line 302
:cond_4e
invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
move-result v2
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v5
if-ge v2, v5, :cond_5b
.line 305
invoke-interface {v1, v3}, Ljava/util/List;->removeAll(Ljava/util/Collection;)Z
.line 309
:cond_5b
:goto_5b
iget-object v2, v0, Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist;->audios:Ljava/util/List;
.line 310
iget-object v3, v0, Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist;->subtitles:Ljava/util/List;
.line 311
invoke-interface {v2}, Ljava/util/List;->size()I
move-result v5
const/4 v6, 0x1
add-int/2addr v5, v6
.line 312
invoke-interface {v3}, Ljava/util/List;->size()I
move-result v7
add-int/2addr v5, v7
new-array v5, v5, [Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
iput-object v5, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->sampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
.line 314
array-length v5, v5
iput v5, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->pendingPrepareCount:I
.line 316
invoke-interface {v1}, Ljava/util/List;->isEmpty()Z
move-result v5
xor-int/2addr v5, v6
invoke-static {v5}, Lcom/google/android/exoplayer2/util/Assertions;->checkArgument(Z)V
.line 317
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v5
new-array v5, v5, [Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;
.line 318
invoke-interface {v1, v5}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
.line 319
iget-object v1, v0, Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist;->muxedAudioFormat:Lcom/google/android/exoplayer2/Format;
iget-object v0, v0, Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist;->muxedCaptionFormat:Lcom/google/android/exoplayer2/Format;
invoke-direct {p0, v4, v5, v1, v0}, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->buildSampleStreamWrapper(I[Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;Lcom/google/android/exoplayer2/Format;Lcom/google/android/exoplayer2/Format;)Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
move-result-object v0
.line 321
iget-object v1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->sampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
aput-object v0, v1, v4
.line 322
invoke-virtual {v0, v6}, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;->setIsTimestampMaster(Z)V
.line 323
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;->continuePreparing()V
const/4 v0, 0x0
const/4 v1, 0x1
.line 328
:goto_96
invoke-interface {v2}, Ljava/util/List;->size()I
move-result v5
const/4 v7, 0x0
if-ge v0, v5, :cond_b8
new-array v5, v6, [Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;
.line 330
invoke-interface {v2, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v8
check-cast v8, Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;
aput-object v8, v5, v4
.line 329
invoke-direct {p0, v6, v5, v7, v7}, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->buildSampleStreamWrapper(I[Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;Lcom/google/android/exoplayer2/Format;Lcom/google/android/exoplayer2/Format;)Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
move-result-object v5
.line 331
iget-object v7, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->sampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
add-int/lit8 v8, v1, 0x1
aput-object v5, v7, v1
.line 332
invoke-virtual {v5}, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;->continuePreparing()V
add-int/lit8 v0, v0, 0x1
move v1, v8
goto :goto_96
:cond_b8
const/4 v0, 0x0
.line 336
:goto_b9
invoke-interface {v3}, Ljava/util/List;->size()I
move-result v2
if-ge v0, v2, :cond_dd
.line 337
invoke-interface {v3, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;
const/4 v5, 0x3
new-array v8, v6, [Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;
aput-object v2, v8, v4
.line 338
invoke-direct {p0, v5, v8, v7, v7}, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->buildSampleStreamWrapper(I[Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;Lcom/google/android/exoplayer2/Format;Lcom/google/android/exoplayer2/Format;)Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
move-result-object v5
.line 340
iget-object v2, v2, Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;->format:Lcom/google/android/exoplayer2/Format;
invoke-virtual {v5, v2}, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;->prepareSingleTrack(Lcom/google/android/exoplayer2/Format;)V
.line 341
iget-object v2, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->sampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
add-int/lit8 v8, v1, 0x1
aput-object v5, v2, v1
add-int/lit8 v0, v0, 0x1
move v1, v8
goto :goto_b9
:cond_dd
return-void
.end method
.method private buildSampleStreamWrapper(I[Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;Lcom/google/android/exoplayer2/Format;Lcom/google/android/exoplayer2/Format;)Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
.registers 18
move-object v11, p0
.line 347
iget-object v0, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->dataSourceFactory:Lcom/google/android/exoplayer2/upstream/DataSource$Factory;
invoke-interface {v0}, Lcom/google/android/exoplayer2/upstream/DataSource$Factory;->createDataSource()Lcom/google/android/exoplayer2/upstream/DataSource;
move-result-object v0
.line 348
new-instance v3, Lcom/google/android/exoplayer2/source/hls/HlsChunkSource;
iget-object v1, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->playlistTracker:Lcom/google/android/exoplayer2/source/hls/playlist/HlsPlaylistTracker;
iget-object v2, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->timestampAdjusterProvider:Lcom/google/android/exoplayer2/source/hls/TimestampAdjusterProvider;
move-object v4, p2
invoke-direct {v3, v1, p2, v0, v2}, Lcom/google/android/exoplayer2/source/hls/HlsChunkSource;-><init>(Lcom/google/android/exoplayer2/source/hls/playlist/HlsPlaylistTracker;[Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;Lcom/google/android/exoplayer2/upstream/DataSource;Lcom/google/android/exoplayer2/source/hls/TimestampAdjusterProvider;)V
.line 350
new-instance v12, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
iget-object v4, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->allocator:Lcom/google/android/exoplayer2/upstream/Allocator;
iget-wide v5, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->preparePositionUs:J
iget v9, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->minLoadableRetryCount:I
iget-object v10, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->eventDispatcher:Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener$EventDispatcher;
move-object v0, v12
move v1, p1
move-object v2, p0
move-object/from16 v7, p3
move-object/from16 v8, p4
invoke-direct/range {v0 .. v10}, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;-><init>(ILcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper$Callback;Lcom/google/android/exoplayer2/source/hls/HlsChunkSource;Lcom/google/android/exoplayer2/upstream/Allocator;JLcom/google/android/exoplayer2/Format;Lcom/google/android/exoplayer2/Format;ILcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener$EventDispatcher;)V
return-object v12
.end method
.method private continuePreparingOrLoading()V
.registers 5
.line 356
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->trackGroups:Lcom/google/android/exoplayer2/source/TrackGroupArray;
if-eqz v0, :cond_a
.line 357
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->callback:Lcom/google/android/exoplayer2/source/MediaPeriod$Callback;
invoke-interface {v0, p0}, Lcom/google/android/exoplayer2/source/MediaPeriod$Callback;->onContinueLoadingRequested(Lcom/google/android/exoplayer2/source/SequenceableLoader;)V
goto :goto_18
.line 360
:cond_a
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->sampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
array-length v1, v0
const/4 v2, 0x0
:goto_e
if-ge v2, v1, :cond_18
aget-object v3, v0, v2
.line 361
invoke-virtual {v3}, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;->continuePreparing()V
add-int/lit8 v2, v2, 0x1
goto :goto_e
:cond_18
:goto_18
return-void
.end method
.method private static variantHasExplicitCodecWithPrefix(Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;Ljava/lang/String;)Z
.registers 6
.line 367
iget-object p0, p0, Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;->format:Lcom/google/android/exoplayer2/Format;
iget-object p0, p0, Lcom/google/android/exoplayer2/Format;->codecs:Ljava/lang/String;
.line 368
invoke-static {p0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v0
const/4 v1, 0x0
if-eqz v0, :cond_c
return v1
:cond_c
const-string v0, "(\\s*,\\s*)|(\\s*$)"
.line 371
invoke-virtual {p0, v0}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object p0
.line 372
array-length v0, p0
const/4 v2, 0x0
:goto_14
if-ge v2, v0, :cond_23
aget-object v3, p0, v2
.line 373
invoke-virtual {v3, p1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v3
if-eqz v3, :cond_20
const/4 p0, 0x1
return p0
:cond_20
add-int/lit8 v2, v2, 0x1
goto :goto_14
:cond_23
return v1
.end method
# virtual methods
.method public continueLoading(J)Z
.registers 4
.line 194
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->sequenceableLoader:Lcom/google/android/exoplayer2/source/CompositeSequenceableLoader;
invoke-virtual {v0, p1, p2}, Lcom/google/android/exoplayer2/source/CompositeSequenceableLoader;->continueLoading(J)Z
move-result p1
return p1
.end method
.method public getBufferedPositionUs()J
.registers 13
.line 210
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->enabledSampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
array-length v1, v0
const-wide v2, 0x7fffffffffffffffL
const/4 v4, 0x0
move-wide v5, v2
:goto_a
const-wide/high16 v7, -0x8000000000000000L
if-ge v4, v1, :cond_1f
aget-object v9, v0, v4
.line 211
invoke-virtual {v9}, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;->getBufferedPositionUs()J
move-result-wide v9
cmp-long v11, v9, v7
if-eqz v11, :cond_1c
.line 213
invoke-static {v5, v6, v9, v10}, Ljava/lang/Math;->min(JJ)J
move-result-wide v5
:cond_1c
add-int/lit8 v4, v4, 0x1
goto :goto_a
:cond_1f
cmp-long v0, v5, v2
if-nez v0, :cond_24
move-wide v5, v7
:cond_24
return-wide v5
.end method
.method public getNextLoadPositionUs()J
.registers 3
.line 199
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->sequenceableLoader:Lcom/google/android/exoplayer2/source/CompositeSequenceableLoader;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/CompositeSequenceableLoader;->getNextLoadPositionUs()J
move-result-wide v0
return-wide v0
.end method
.method public getTrackGroups()Lcom/google/android/exoplayer2/source/TrackGroupArray;
.registers 2
.line 106
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->trackGroups:Lcom/google/android/exoplayer2/source/TrackGroupArray;
return-object v0
.end method
.method public maybeThrowPrepareError()V
.registers 5
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 97
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->sampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
if-eqz v0, :cond_10
.line 98
array-length v1, v0
const/4 v2, 0x0
:goto_6
if-ge v2, v1, :cond_10
aget-object v3, v0, v2
.line 99
invoke-virtual {v3}, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;->maybeThrowPrepareError()V
add-int/lit8 v2, v2, 0x1
goto :goto_6
:cond_10
return-void
.end method
.method public bridge synthetic onContinueLoadingRequested(Lcom/google/android/exoplayer2/source/SequenceableLoader;)V
.registers 2
.line 43
check-cast p1, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
invoke-virtual {p0, p1}, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->onContinueLoadingRequested(Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;)V
return-void
.end method
.method public onContinueLoadingRequested(Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;)V
.registers 2
.line 259
iget-object p1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->trackGroups:Lcom/google/android/exoplayer2/source/TrackGroupArray;
if-nez p1, :cond_5
return-void
.line 263
:cond_5
iget-object p1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->callback:Lcom/google/android/exoplayer2/source/MediaPeriod$Callback;
invoke-interface {p1, p0}, Lcom/google/android/exoplayer2/source/MediaPeriod$Callback;->onContinueLoadingRequested(Lcom/google/android/exoplayer2/source/SequenceableLoader;)V
return-void
.end method
.method public onPlaylistBlacklisted(Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;J)V
.registers 8
.line 275
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->sampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
array-length v1, v0
const/4 v2, 0x0
:goto_4
if-ge v2, v1, :cond_e
aget-object v3, v0, v2
.line 276
invoke-virtual {v3, p1, p2, p3}, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;->onPlaylistBlacklisted(Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;J)V
add-int/lit8 v2, v2, 0x1
goto :goto_4
.line 278
:cond_e
invoke-direct {p0}, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->continuePreparingOrLoading()V
return-void
.end method
.method public onPlaylistChanged()V
.registers 1
.line 270
invoke-direct {p0}, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->continuePreparingOrLoading()V
return-void
.end method
.method public onPlaylistRefreshRequired(Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;)V
.registers 3
.line 254
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->playlistTracker:Lcom/google/android/exoplayer2/source/hls/playlist/HlsPlaylistTracker;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/source/hls/playlist/HlsPlaylistTracker;->refreshPlaylist(Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;)V
return-void
.end method
.method public onPrepared()V
.registers 12
.line 232
iget v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->pendingPrepareCount:I
add-int/lit8 v0, v0, -0x1
iput v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->pendingPrepareCount:I
if-lez v0, :cond_9
return-void
.line 237
:cond_9
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->sampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
array-length v1, v0
const/4 v2, 0x0
const/4 v3, 0x0
const/4 v4, 0x0
:goto_f
if-ge v3, v1, :cond_1d
aget-object v5, v0, v3
.line 238
invoke-virtual {v5}, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;->getTrackGroups()Lcom/google/android/exoplayer2/source/TrackGroupArray;
move-result-object v5
iget v5, v5, Lcom/google/android/exoplayer2/source/TrackGroupArray;->length:I
add-int/2addr v4, v5
add-int/lit8 v3, v3, 0x1
goto :goto_f
.line 240
:cond_1d
new-array v0, v4, [Lcom/google/android/exoplayer2/source/TrackGroup;
.line 242
iget-object v1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->sampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
array-length v3, v1
const/4 v4, 0x0
const/4 v5, 0x0
:goto_24
if-ge v4, v3, :cond_44
aget-object v6, v1, v4
.line 243
invoke-virtual {v6}, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;->getTrackGroups()Lcom/google/android/exoplayer2/source/TrackGroupArray;
move-result-object v7
iget v7, v7, Lcom/google/android/exoplayer2/source/TrackGroupArray;->length:I
const/4 v8, 0x0
:goto_2f
if-ge v8, v7, :cond_41
add-int/lit8 v9, v5, 0x1
.line 245
invoke-virtual {v6}, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;->getTrackGroups()Lcom/google/android/exoplayer2/source/TrackGroupArray;
move-result-object v10
invoke-virtual {v10, v8}, Lcom/google/android/exoplayer2/source/TrackGroupArray;->get(I)Lcom/google/android/exoplayer2/source/TrackGroup;
move-result-object v10
aput-object v10, v0, v5
add-int/lit8 v8, v8, 0x1
move v5, v9
goto :goto_2f
:cond_41
add-int/lit8 v4, v4, 0x1
goto :goto_24
.line 248
:cond_44
new-instance v1, Lcom/google/android/exoplayer2/source/TrackGroupArray;
invoke-direct {v1, v0}, Lcom/google/android/exoplayer2/source/TrackGroupArray;-><init>([Lcom/google/android/exoplayer2/source/TrackGroup;)V
iput-object v1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->trackGroups:Lcom/google/android/exoplayer2/source/TrackGroupArray;
.line 249
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->callback:Lcom/google/android/exoplayer2/source/MediaPeriod$Callback;
invoke-interface {v0, p0}, Lcom/google/android/exoplayer2/source/MediaPeriod$Callback;->onPrepared(Lcom/google/android/exoplayer2/source/MediaPeriod;)V
return-void
.end method
.method public prepare(Lcom/google/android/exoplayer2/source/MediaPeriod$Callback;)V
.registers 3
.line 90
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->playlistTracker:Lcom/google/android/exoplayer2/source/hls/playlist/HlsPlaylistTracker;
invoke-virtual {v0, p0}, Lcom/google/android/exoplayer2/source/hls/playlist/HlsPlaylistTracker;->addListener(Lcom/google/android/exoplayer2/source/hls/playlist/HlsPlaylistTracker$PlaylistEventListener;)V
.line 91
iput-object p1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->callback:Lcom/google/android/exoplayer2/source/MediaPeriod$Callback;
.line 92
invoke-direct {p0}, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->buildAndPrepareSampleStreamWrappers()V
return-void
.end method
.method public readDiscontinuity()J
.registers 3
const-wide v0, -0x7fffffffffffffffL # -4.9E-324
return-wide v0
.end method
.method public release()V
.registers 5
.line 79
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->playlistTracker:Lcom/google/android/exoplayer2/source/hls/playlist/HlsPlaylistTracker;
invoke-virtual {v0, p0}, Lcom/google/android/exoplayer2/source/hls/playlist/HlsPlaylistTracker;->removeListener(Lcom/google/android/exoplayer2/source/hls/playlist/HlsPlaylistTracker$PlaylistEventListener;)V
.line 80
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->continueLoadingHandler:Landroid/os/Handler;
const/4 v1, 0x0
invoke-virtual {v0, v1}, Landroid/os/Handler;->removeCallbacksAndMessages(Ljava/lang/Object;)V
.line 81
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->sampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
if-eqz v0, :cond_1b
.line 82
array-length v1, v0
const/4 v2, 0x0
:goto_11
if-ge v2, v1, :cond_1b
aget-object v3, v0, v2
.line 83
invoke-virtual {v3}, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;->release()V
add-int/lit8 v2, v2, 0x1
goto :goto_11
:cond_1b
return-void
.end method
.method public seekToUs(J)J
.registers 7
.line 221
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->timestampAdjusterProvider:Lcom/google/android/exoplayer2/source/hls/TimestampAdjusterProvider;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/hls/TimestampAdjusterProvider;->reset()V
.line 222
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->enabledSampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
array-length v1, v0
const/4 v2, 0x0
:goto_9
if-ge v2, v1, :cond_13
aget-object v3, v0, v2
.line 223
invoke-virtual {v3, p1, p2}, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;->seekTo(J)V
add-int/lit8 v2, v2, 0x1
goto :goto_9
:cond_13
return-wide p1
.end method
.method public selectTracks([Lcom/google/android/exoplayer2/trackselection/TrackSelection;[Z[Lcom/google/android/exoplayer2/source/SampleStream;[ZJ)J
.registers 25
move-object/from16 v0, p0
move-object/from16 v1, p1
move-object/from16 v2, p3
move-wide/from16 v3, p5
.line 113
array-length v5, v1
new-array v5, v5, [I
.line 114
array-length v6, v1
new-array v6, v6, [I
const/4 v8, 0x0
.line 115
:goto_f
array-length v9, v1
if-ge v8, v9, :cond_50
.line 116
aget-object v9, v2, v8
const/4 v10, -0x1
if-nez v9, :cond_19
const/4 v9, -0x1
goto :goto_27
:cond_19
iget-object v9, v0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->streamWrapperIndices:Ljava/util/IdentityHashMap;
aget-object v11, v2, v8
.line 117
invoke-virtual {v9, v11}, Ljava/util/IdentityHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v9
check-cast v9, Ljava/lang/Integer;
invoke-virtual {v9}, Ljava/lang/Integer;->intValue()I
move-result v9
:goto_27
aput v9, v5, v8
.line 118
aput v10, v6, v8
.line 119
aget-object v9, v1, v8
if-eqz v9, :cond_4d
.line 120
aget-object v9, v1, v8
invoke-interface {v9}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getTrackGroup()Lcom/google/android/exoplayer2/source/TrackGroup;
move-result-object v9
const/4 v11, 0x0
.line 121
:goto_36
iget-object v12, v0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->sampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
array-length v13, v12
if-ge v11, v13, :cond_4d
.line 122
aget-object v12, v12, v11
invoke-virtual {v12}, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;->getTrackGroups()Lcom/google/android/exoplayer2/source/TrackGroupArray;
move-result-object v12
invoke-virtual {v12, v9}, Lcom/google/android/exoplayer2/source/TrackGroupArray;->indexOf(Lcom/google/android/exoplayer2/source/TrackGroup;)I
move-result v12
if-eq v12, v10, :cond_4a
.line 123
aput v11, v6, v8
goto :goto_4d
:cond_4a
add-int/lit8 v11, v11, 0x1
goto :goto_36
:cond_4d
:goto_4d
add-int/lit8 v8, v8, 0x1
goto :goto_f
.line 130
:cond_50
iget-object v8, v0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->streamWrapperIndices:Ljava/util/IdentityHashMap;
invoke-virtual {v8}, Ljava/util/IdentityHashMap;->clear()V
.line 132
array-length v8, v1
new-array v9, v8, [Lcom/google/android/exoplayer2/source/SampleStream;
.line 133
array-length v10, v1
new-array v10, v10, [Lcom/google/android/exoplayer2/source/SampleStream;
.line 134
array-length v11, v1
new-array v15, v11, [Lcom/google/android/exoplayer2/trackselection/TrackSelection;
.line 135
new-instance v14, Ljava/util/ArrayList;
iget-object v11, v0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->sampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
array-length v11, v11
invoke-direct {v14, v11}, Ljava/util/ArrayList;-><init>(I)V
const/4 v13, 0x0
const/16 v17, 0x0
.line 137
:goto_69
iget-object v11, v0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->sampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
array-length v11, v11
const/4 v12, 0x1
if-ge v13, v11, :cond_e8
const/4 v11, 0x0
.line 138
:goto_70
array-length v7, v1
if-ge v11, v7, :cond_8b
.line 139
aget v7, v5, v11
const/16 v16, 0x0
if-ne v7, v13, :cond_7c
aget-object v7, v2, v11
goto :goto_7e
:cond_7c
move-object/from16 v7, v16
:goto_7e
aput-object v7, v10, v11
.line 140
aget v7, v6, v11
if-ne v7, v13, :cond_86
aget-object v16, v1, v11
:cond_86
aput-object v16, v15, v11
add-int/lit8 v11, v11, 0x1
goto :goto_70
.line 142
:cond_8b
iget-object v7, v0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->sampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
aget-object v11, v7, v13
iget-boolean v7, v0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->seenFirstTrackSelection:Z
xor-int/lit8 v16, v7, 0x1
const/4 v7, 0x1
move-object v12, v15
move v7, v13
move-object/from16 v13, p2
move-object v3, v14
move-object v14, v10
move-object v4, v15
move-object/from16 v15, p4
invoke-virtual/range {v11 .. v16}, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;->selectTracks([Lcom/google/android/exoplayer2/trackselection/TrackSelection;[Z[Lcom/google/android/exoplayer2/source/SampleStream;[ZZ)Z
move-result v11
or-int v17, v17, v11
const/4 v11, 0x0
const/4 v12, 0x0
.line 145
:goto_a5
array-length v13, v1
if-ge v11, v13, :cond_d8
.line 146
aget v13, v6, v11
if-ne v13, v7, :cond_c7
.line 148
aget-object v12, v10, v11
if-eqz v12, :cond_b2
const/4 v12, 0x1
goto :goto_b3
:cond_b2
const/4 v12, 0x0
:goto_b3
invoke-static {v12}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V
.line 149
aget-object v12, v10, v11
aput-object v12, v9, v11
.line 151
iget-object v12, v0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->streamWrapperIndices:Ljava/util/IdentityHashMap;
aget-object v13, v10, v11
invoke-static {v7}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v14
invoke-virtual {v12, v13, v14}, Ljava/util/IdentityHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
const/4 v12, 0x1
goto :goto_d5
.line 152
:cond_c7
aget v13, v5, v11
if-ne v13, v7, :cond_d5
.line 154
aget-object v13, v10, v11
if-nez v13, :cond_d1
const/4 v13, 0x1
goto :goto_d2
:cond_d1
const/4 v13, 0x0
:goto_d2
invoke-static {v13}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V
:cond_d5
:goto_d5
add-int/lit8 v11, v11, 0x1
goto :goto_a5
:cond_d8
if-eqz v12, :cond_e1
.line 158
iget-object v11, v0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->sampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
aget-object v11, v11, v7
invoke-virtual {v3, v11}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
:cond_e1
add-int/lit8 v13, v7, 0x1
move-object v14, v3
move-object v15, v4
move-wide/from16 v3, p5
goto :goto_69
:cond_e8
move-object v3, v14
const/4 v7, 0x0
.line 162
invoke-static {v9, v7, v2, v7, v8}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 164
invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
move-result v4
new-array v4, v4, [Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
iput-object v4, v0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->enabledSampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
.line 165
invoke-virtual {v3, v4}, Ljava/util/ArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
.line 171
iget-object v3, v0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->enabledSampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
array-length v4, v3
if-lez v4, :cond_111
.line 172
aget-object v3, v3, v7
const/4 v4, 0x1
invoke-virtual {v3, v4}, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;->setIsTimestampMaster(Z)V
const/4 v12, 0x1
.line 173
:goto_104
iget-object v3, v0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->enabledSampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
array-length v4, v3
if-ge v12, v4, :cond_111
.line 174
aget-object v3, v3, v12
invoke-virtual {v3, v7}, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;->setIsTimestampMaster(Z)V
add-int/lit8 v12, v12, 0x1
goto :goto_104
.line 178
:cond_111
new-instance v3, Lcom/google/android/exoplayer2/source/CompositeSequenceableLoader;
iget-object v4, v0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->enabledSampleStreamWrappers:[Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
invoke-direct {v3, v4}, Lcom/google/android/exoplayer2/source/CompositeSequenceableLoader;-><init>([Lcom/google/android/exoplayer2/source/SequenceableLoader;)V
iput-object v3, v0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->sequenceableLoader:Lcom/google/android/exoplayer2/source/CompositeSequenceableLoader;
.line 179
iget-boolean v3, v0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->seenFirstTrackSelection:Z
if-eqz v3, :cond_134
if-eqz v17, :cond_134
move-wide/from16 v3, p5
.line 180
invoke-virtual {v0, v3, v4}, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->seekToUs(J)J
.line 182
:goto_125
array-length v5, v1
if-ge v7, v5, :cond_136
.line 183
aget-object v5, v2, v7
if-eqz v5, :cond_130
const/4 v5, 0x1
.line 184
aput-boolean v5, p4, v7
goto :goto_131
:cond_130
const/4 v5, 0x1
:goto_131
add-int/lit8 v7, v7, 0x1
goto :goto_125
:cond_134
move-wide/from16 v3, p5
:cond_136
const/4 v5, 0x1
.line 188
iput-boolean v5, v0, Lcom/google/android/exoplayer2/source/hls/HlsMediaPeriod;->seenFirstTrackSelection:Z
return-wide v3
.end method