MediaPeriodQueue.smali
.class final Lcom/google/android/exoplayer2/MediaPeriodQueue;
.super Ljava/lang/Object;
.source "MediaPeriodQueue.java"
# static fields
.field private static final MAXIMUM_BUFFER_AHEAD_PERIODS:I
# instance fields
.field private length:I
.field private loading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
.field private nextWindowSequenceNumber:J
.field private oldFrontPeriodUid:Ljava/lang/Object;
.field private oldFrontPeriodWindowSequenceNumber:J
.field private final period:Lcom/google/android/exoplayer2/Timeline$Period;
.field private playing:Lcom/google/android/exoplayer2/MediaPeriodHolder;
.field private reading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
.field private repeatMode:I
.field private shuffleModeEnabled:Z
.field private timeline:Lcom/google/android/exoplayer2/Timeline;
.field private final window:Lcom/google/android/exoplayer2/Timeline$Window;
# direct methods
.method static constructor <clinit>()V
.registers 1
const v0, 0x150b
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->MAXIMUM_BUFFER_AHEAD_PERIODS:I
return-void
.end method
.method public constructor <init>()V
.registers 2
.line 57
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 58
new-instance v0, Lcom/google/android/exoplayer2/Timeline$Period;
invoke-direct {v0}, Lcom/google/android/exoplayer2/Timeline$Period;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
.line 59
new-instance v0, Lcom/google/android/exoplayer2/Timeline$Window;
invoke-direct {v0}, Lcom/google/android/exoplayer2/Timeline$Window;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->window:Lcom/google/android/exoplayer2/Timeline$Window;
.line 60
sget-object v0, Lcom/google/android/exoplayer2/Timeline;->EMPTY:Lcom/google/android/exoplayer2/Timeline;
iput-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
.line 61
return-void
.end method
.method private canKeepAfterMediaPeriodHolder(Lcom/google/android/exoplayer2/MediaPeriodHolder;J)Z
.registers 7
.param p1, "periodHolder" # Lcom/google/android/exoplayer2/MediaPeriodHolder;
.param p2, "previousDurationUs" # J
.line 483
const-wide v0, -0x7fffffffffffffffL # -4.9E-324
cmp-long v2, p2, v0
if-eqz v2, :cond_14
iget-object v0, p1, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-wide v0, v0, Lcom/google/android/exoplayer2/MediaPeriodInfo;->durationUs:J
cmp-long v2, p2, v0
if-nez v2, :cond_12
goto :goto_14
:cond_12
const/4 v0, 0x0
goto :goto_15
:cond_14
:goto_14
const/4 v0, 0x1
:goto_15
return v0
.end method
.method private canKeepMediaPeriodHolder(Lcom/google/android/exoplayer2/MediaPeriodHolder;Lcom/google/android/exoplayer2/MediaPeriodInfo;)Z
.registers 9
.param p1, "periodHolder" # Lcom/google/android/exoplayer2/MediaPeriodHolder;
.param p2, "info" # Lcom/google/android/exoplayer2/MediaPeriodInfo;
.line 472
iget-object v0, p1, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
.line 473
.local v0, "periodHolderInfo":Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-wide v1, v0, Lcom/google/android/exoplayer2/MediaPeriodInfo;->startPositionUs:J
iget-wide v3, p2, Lcom/google/android/exoplayer2/MediaPeriodInfo;->startPositionUs:J
cmp-long v5, v1, v3
if-nez v5, :cond_16
iget-object v1, v0, Lcom/google/android/exoplayer2/MediaPeriodInfo;->id:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-object v2, p2, Lcom/google/android/exoplayer2/MediaPeriodInfo;->id:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.line 474
invoke-virtual {v1, v2}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_16
const/4 v1, 0x1
goto :goto_17
:cond_16
const/4 v1, 0x0
.line 473
:goto_17
return v1
.end method
.method private getFirstMediaPeriodInfo(Lcom/google/android/exoplayer2/PlaybackInfo;)Lcom/google/android/exoplayer2/MediaPeriodInfo;
.registers 8
.param p1, "playbackInfo" # Lcom/google/android/exoplayer2/PlaybackInfo;
.line 532
iget-object v1, p1, Lcom/google/android/exoplayer2/PlaybackInfo;->periodId:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-wide v2, p1, Lcom/google/android/exoplayer2/PlaybackInfo;->contentPositionUs:J
iget-wide v4, p1, Lcom/google/android/exoplayer2/PlaybackInfo;->startPositionUs:J
move-object v0, p0
invoke-direct/range {v0 .. v5}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getMediaPeriodInfo(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJ)Lcom/google/android/exoplayer2/MediaPeriodInfo;
move-result-object v0
return-object v0
.end method
.method private getFollowingMediaPeriodInfo(Lcom/google/android/exoplayer2/MediaPeriodHolder;J)Lcom/google/android/exoplayer2/MediaPeriodInfo;
.registers 33
.param p1, "mediaPeriodHolder" # Lcom/google/android/exoplayer2/MediaPeriodHolder;
.param p2, "rendererPositionUs" # J
.line 551
move-object/from16 v8, p0
move-object/from16 v9, p1
iget-object v10, v9, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
.line 555
.local v10, "mediaPeriodInfo":Lcom/google/android/exoplayer2/MediaPeriodInfo;
nop
.line 556
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getRendererOffset()J
move-result-wide v0
iget-wide v2, v10, Lcom/google/android/exoplayer2/MediaPeriodInfo;->durationUs:J
add-long/2addr v0, v2
sub-long v11, v0, p2
.line 557
.local v11, "bufferedDurationUs":J
iget-boolean v0, v10, Lcom/google/android/exoplayer2/MediaPeriodInfo;->isLastInTimelinePeriod:Z
const/4 v1, 0x1
const-wide/16 v2, 0x0
const/4 v4, -0x1
const/4 v5, 0x0
if-eqz v0, :cond_c2
.line 558
iget-object v0, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v6, v10, Lcom/google/android/exoplayer2/MediaPeriodInfo;->id:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-object v6, v6, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->periodUid:Ljava/lang/Object;
invoke-virtual {v0, v6}, Lcom/google/android/exoplayer2/Timeline;->getIndexOfPeriod(Ljava/lang/Object;)I
move-result v6
.line 559
.local v6, "currentPeriodIndex":I
iget-object v13, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v15, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
iget-object v0, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->window:Lcom/google/android/exoplayer2/Timeline$Window;
iget v7, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->repeatMode:I
iget-boolean v14, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->shuffleModeEnabled:Z
.line 560
move/from16 v18, v14
move v14, v6
move-object/from16 v16, v0
move/from16 v17, v7
invoke-virtual/range {v13 .. v18}, Lcom/google/android/exoplayer2/Timeline;->getNextPeriodIndex(ILcom/google/android/exoplayer2/Timeline$Period;Lcom/google/android/exoplayer2/Timeline$Window;IZ)I
move-result v7
.line 562
.local v7, "nextPeriodIndex":I
if-ne v7, v4, :cond_3b
.line 564
return-object v5
.line 568
:cond_3b
iget-object v0, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v4, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
.line 569
invoke-virtual {v0, v7, v4, v1}, Lcom/google/android/exoplayer2/Timeline;->getPeriod(ILcom/google/android/exoplayer2/Timeline$Period;Z)Lcom/google/android/exoplayer2/Timeline$Period;
move-result-object v0
iget v4, v0, Lcom/google/android/exoplayer2/Timeline$Period;->windowIndex:I
.line 570
.local v4, "nextWindowIndex":I
iget-object v0, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
iget-object v0, v0, Lcom/google/android/exoplayer2/Timeline$Period;->uid:Ljava/lang/Object;
.line 571
.local v0, "nextPeriodUid":Ljava/lang/Object;
iget-object v1, v10, Lcom/google/android/exoplayer2/MediaPeriodInfo;->id:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-wide v14, v1, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->windowSequenceNumber:J
.line 572
.local v14, "windowSequenceNumber":J
iget-object v1, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v13, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->window:Lcom/google/android/exoplayer2/Timeline$Window;
invoke-virtual {v1, v4, v13}, Lcom/google/android/exoplayer2/Timeline;->getWindow(ILcom/google/android/exoplayer2/Timeline$Window;)Lcom/google/android/exoplayer2/Timeline$Window;
move-result-object v1
iget v1, v1, Lcom/google/android/exoplayer2/Timeline$Window;->firstPeriodIndex:I
if-ne v1, v7, :cond_a7
.line 576
iget-object v13, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v1, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->window:Lcom/google/android/exoplayer2/Timeline$Window;
iget-object v5, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
const-wide v17, -0x7fffffffffffffffL # -4.9E-324
.line 582
invoke-static {v2, v3, v11, v12}, Ljava/lang/Math;->max(JJ)J
move-result-wide v19
.line 577
move-wide v2, v14
.end local v14 # "windowSequenceNumber":J
.local v2, "windowSequenceNumber":J
move-object v14, v1
move-object v15, v5
move/from16 v16, v4
invoke-virtual/range {v13 .. v20}, Lcom/google/android/exoplayer2/Timeline;->getPeriodPosition(Lcom/google/android/exoplayer2/Timeline$Window;Lcom/google/android/exoplayer2/Timeline$Period;IJJ)Landroid/util/Pair;
move-result-object v1
.line 583
.local v1, "defaultPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
if-nez v1, :cond_75
.line 584
const/4 v5, 0x0
return-object v5
.line 586
:cond_75
iget-object v0, v1, Landroid/util/Pair;->first:Ljava/lang/Object;
.line 587
iget-object v5, v1, Landroid/util/Pair;->second:Ljava/lang/Object;
check-cast v5, Ljava/lang/Long;
invoke-virtual {v5}, Ljava/lang/Long;->longValue()J
move-result-wide v13
.line 588
.local v13, "startPositionUs":J
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v5
.line 589
.local v5, "nextMediaPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
if-eqz v5, :cond_97
iget-object v15, v5, Lcom/google/android/exoplayer2/MediaPeriodHolder;->uid:Ljava/lang/Object;
invoke-virtual {v15, v0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v15
if-eqz v15, :cond_97
.line 590
iget-object v15, v5, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-object v15, v15, Lcom/google/android/exoplayer2/MediaPeriodInfo;->id:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-wide v2, v15, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->windowSequenceNumber:J
move-object/from16 v16, v0
move-wide v0, v2
goto :goto_a4
.line 592
:cond_97
move-object/from16 v16, v0
move-object v15, v1
.end local v0 # "nextPeriodUid":Ljava/lang/Object;
.end local v1 # "defaultPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
.local v15, "defaultPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
.local v16, "nextPeriodUid":Ljava/lang/Object;
iget-wide v0, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->nextWindowSequenceNumber:J
const-wide/16 v17, 0x1
move-wide/from16 v19, v2
.end local v2 # "windowSequenceNumber":J
.local v19, "windowSequenceNumber":J
add-long v2, v0, v17
iput-wide v2, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->nextWindowSequenceNumber:J
.line 594
.end local v5 # "nextMediaPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.end local v15 # "defaultPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
.end local v19 # "windowSequenceNumber":J
.local v0, "windowSequenceNumber":J
:goto_a4
move-wide/from16 v19, v0
goto :goto_ad
.line 595
.end local v13 # "startPositionUs":J
.end local v16 # "nextPeriodUid":Ljava/lang/Object;
.local v0, "nextPeriodUid":Ljava/lang/Object;
.restart local v14 # "windowSequenceNumber":J
:cond_a7
move-wide/from16 v19, v14
.end local v14 # "windowSequenceNumber":J
.restart local v19 # "windowSequenceNumber":J
const-wide/16 v13, 0x0
move-object/from16 v16, v0
.line 597
.end local v0 # "nextPeriodUid":Ljava/lang/Object;
.restart local v13 # "startPositionUs":J
.restart local v16 # "nextPeriodUid":Ljava/lang/Object;
:goto_ad
nop
.line 598
move-object/from16 v0, p0
move-object/from16 v1, v16
move-wide v2, v13
move v15, v4
.end local v4 # "nextWindowIndex":I
.local v15, "nextWindowIndex":I
move-wide/from16 v4, v19
invoke-direct/range {v0 .. v5}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->resolveMediaPeriodIdForAds(Ljava/lang/Object;JJ)Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
move-result-object v17
.line 599
.local v17, "periodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
move-object/from16 v1, v17
move-wide v4, v13
invoke-direct/range {v0 .. v5}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getMediaPeriodInfo(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJ)Lcom/google/android/exoplayer2/MediaPeriodInfo;
move-result-object v0
return-object v0
.line 603
.end local v6 # "currentPeriodIndex":I
.end local v7 # "nextPeriodIndex":I
.end local v13 # "startPositionUs":J
.end local v15 # "nextWindowIndex":I
.end local v16 # "nextPeriodUid":Ljava/lang/Object;
.end local v17 # "periodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.end local v19 # "windowSequenceNumber":J
:cond_c2
iget-object v13, v10, Lcom/google/android/exoplayer2/MediaPeriodInfo;->id:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.line 604
.local v13, "currentPeriodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-object v0, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v5, v13, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->periodUid:Ljava/lang/Object;
iget-object v6, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
invoke-virtual {v0, v5, v6}, Lcom/google/android/exoplayer2/Timeline;->getPeriodByUid(Ljava/lang/Object;Lcom/google/android/exoplayer2/Timeline$Period;)Lcom/google/android/exoplayer2/Timeline$Period;
.line 605
invoke-virtual {v13}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->isAd()Z
move-result v0
if-eqz v0, :cond_159
.line 606
iget v14, v13, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->adGroupIndex:I
.line 607
.local v14, "adGroupIndex":I
iget-object v0, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
invoke-virtual {v0, v14}, Lcom/google/android/exoplayer2/Timeline$Period;->getAdCountInAdGroup(I)I
move-result v15
.line 608
.local v15, "adCountInCurrentAdGroup":I
if-ne v15, v4, :cond_df
.line 609
const/4 v0, 0x0
return-object v0
.line 611
:cond_df
iget-object v0, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
iget v4, v13, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->adIndexInAdGroup:I
.line 612
invoke-virtual {v0, v14, v4}, Lcom/google/android/exoplayer2/Timeline$Period;->getNextAdIndexToPlay(II)I
move-result v6
.line 613
.local v6, "nextAdIndexInAdGroup":I
if-ge v6, v15, :cond_10a
.line 615
iget-object v0, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
invoke-virtual {v0, v14, v6}, Lcom/google/android/exoplayer2/Timeline$Period;->isAdAvailable(II)Z
move-result v0
if-nez v0, :cond_f5
move/from16 v18, v6
const/4 v5, 0x0
goto :goto_109
:cond_f5
iget-object v1, v13, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->periodUid:Ljava/lang/Object;
iget-wide v4, v10, Lcom/google/android/exoplayer2/MediaPeriodInfo;->contentPositionUs:J
iget-wide v2, v13, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->windowSequenceNumber:J
.line 617
move-object/from16 v0, p0
move-wide/from16 v16, v2
move v2, v14
move v3, v6
move/from16 v18, v6
.end local v6 # "nextAdIndexInAdGroup":I
.local v18, "nextAdIndexInAdGroup":I
move-wide/from16 v6, v16
invoke-direct/range {v0 .. v7}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getMediaPeriodInfoForAd(Ljava/lang/Object;IIJJ)Lcom/google/android/exoplayer2/MediaPeriodInfo;
move-result-object v5
.line 615
:goto_109
return-object v5
.line 629
.end local v18 # "nextAdIndexInAdGroup":I
.restart local v6 # "nextAdIndexInAdGroup":I
:cond_10a
move/from16 v18, v6
.end local v6 # "nextAdIndexInAdGroup":I
.restart local v18 # "nextAdIndexInAdGroup":I
iget-wide v4, v10, Lcom/google/android/exoplayer2/MediaPeriodInfo;->contentPositionUs:J
.line 630
.local v4, "startPositionUs":J
iget-object v0, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/Timeline$Period;->getAdGroupCount()I
move-result v0
if-ne v0, v1, :cond_14c
iget-object v0, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
const/4 v1, 0x0
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/Timeline$Period;->getAdGroupTimeUs(I)J
move-result-wide v0
cmp-long v6, v0, v2
if-nez v6, :cond_14c
.line 631
iget-object v0, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v1, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->window:Lcom/google/android/exoplayer2/Timeline$Window;
iget-object v6, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
iget v7, v6, Lcom/google/android/exoplayer2/Timeline$Period;->windowIndex:I
const-wide v25, -0x7fffffffffffffffL # -4.9E-324
.line 637
invoke-static {v2, v3, v11, v12}, Ljava/lang/Math;->max(JJ)J
move-result-wide v27
.line 632
move-object/from16 v21, v0
move-object/from16 v22, v1
move-object/from16 v23, v6
move/from16 v24, v7
invoke-virtual/range {v21 .. v28}, Lcom/google/android/exoplayer2/Timeline;->getPeriodPosition(Lcom/google/android/exoplayer2/Timeline$Window;Lcom/google/android/exoplayer2/Timeline$Period;IJJ)Landroid/util/Pair;
move-result-object v0
.line 638
.local v0, "defaultPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
if-nez v0, :cond_142
.line 639
const/4 v1, 0x0
return-object v1
.line 641
:cond_142
iget-object v1, v0, Landroid/util/Pair;->second:Ljava/lang/Object;
check-cast v1, Ljava/lang/Long;
invoke-virtual {v1}, Ljava/lang/Long;->longValue()J
move-result-wide v4
move-wide v6, v4
goto :goto_14d
.line 643
.end local v0 # "defaultPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
:cond_14c
move-wide v6, v4
.end local v4 # "startPositionUs":J
.local v6, "startPositionUs":J
:goto_14d
iget-object v1, v13, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->periodUid:Ljava/lang/Object;
iget-wide v4, v13, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->windowSequenceNumber:J
move-object/from16 v0, p0
move-wide v2, v6
invoke-direct/range {v0 .. v5}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getMediaPeriodInfoForContent(Ljava/lang/Object;JJ)Lcom/google/android/exoplayer2/MediaPeriodInfo;
move-result-object v0
return-object v0
.line 648
.end local v6 # "startPositionUs":J
.end local v14 # "adGroupIndex":I
.end local v15 # "adCountInCurrentAdGroup":I
.end local v18 # "nextAdIndexInAdGroup":I
:cond_159
const/4 v1, 0x0
iget-object v0, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
iget-object v2, v10, Lcom/google/android/exoplayer2/MediaPeriodInfo;->id:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-wide v2, v2, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->endPositionUs:J
invoke-virtual {v0, v2, v3}, Lcom/google/android/exoplayer2/Timeline$Period;->getAdGroupIndexForPositionUs(J)I
move-result v14
.line 649
.local v14, "nextAdGroupIndex":I
if-ne v14, v4, :cond_173
.line 651
iget-object v1, v13, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->periodUid:Ljava/lang/Object;
iget-wide v2, v10, Lcom/google/android/exoplayer2/MediaPeriodInfo;->durationUs:J
iget-wide v4, v13, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->windowSequenceNumber:J
move-object/from16 v0, p0
invoke-direct/range {v0 .. v5}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getMediaPeriodInfoForContent(Ljava/lang/Object;JJ)Lcom/google/android/exoplayer2/MediaPeriodInfo;
move-result-object v0
return-object v0
.line 656
:cond_173
iget-object v0, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
invoke-virtual {v0, v14}, Lcom/google/android/exoplayer2/Timeline$Period;->getFirstAdIndexToPlay(I)I
move-result v15
.line 657
.local v15, "adIndexInAdGroup":I
iget-object v0, v8, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
invoke-virtual {v0, v14, v15}, Lcom/google/android/exoplayer2/Timeline$Period;->isAdAvailable(II)Z
move-result v0
if-nez v0, :cond_183
move-object v5, v1
goto :goto_191
:cond_183
iget-object v1, v13, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->periodUid:Ljava/lang/Object;
iget-wide v4, v10, Lcom/google/android/exoplayer2/MediaPeriodInfo;->durationUs:J
iget-wide v6, v13, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->windowSequenceNumber:J
.line 659
move-object/from16 v0, p0
move v2, v14
move v3, v15
invoke-direct/range {v0 .. v7}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getMediaPeriodInfoForAd(Ljava/lang/Object;IIJJ)Lcom/google/android/exoplayer2/MediaPeriodInfo;
move-result-object v5
.line 657
:goto_191
return-object v5
.end method
.method private getMediaPeriodInfo(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJ)Lcom/google/android/exoplayer2/MediaPeriodInfo;
.registers 15
.param p1, "id" # Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.param p2, "contentPositionUs" # J
.param p4, "startPositionUs" # J
.line 670
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v1, p1, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->periodUid:Ljava/lang/Object;
iget-object v2, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
invoke-virtual {v0, v1, v2}, Lcom/google/android/exoplayer2/Timeline;->getPeriodByUid(Ljava/lang/Object;Lcom/google/android/exoplayer2/Timeline$Period;)Lcom/google/android/exoplayer2/Timeline$Period;
.line 671
invoke-virtual {p1}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->isAd()Z
move-result v0
if-eqz v0, :cond_2c
.line 672
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
iget v1, p1, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->adGroupIndex:I
iget v2, p1, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->adIndexInAdGroup:I
invoke-virtual {v0, v1, v2}, Lcom/google/android/exoplayer2/Timeline$Period;->isAdAvailable(II)Z
move-result v0
if-nez v0, :cond_1d
.line 673
const/4 v0, 0x0
return-object v0
.line 675
:cond_1d
iget-object v2, p1, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->periodUid:Ljava/lang/Object;
iget v3, p1, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->adGroupIndex:I
iget v4, p1, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->adIndexInAdGroup:I
iget-wide v7, p1, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->windowSequenceNumber:J
move-object v1, p0
move-wide v5, p2
invoke-direct/range {v1 .. v8}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getMediaPeriodInfoForAd(Ljava/lang/Object;IIJJ)Lcom/google/android/exoplayer2/MediaPeriodInfo;
move-result-object v0
return-object v0
.line 682
:cond_2c
iget-object v2, p1, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->periodUid:Ljava/lang/Object;
iget-wide v5, p1, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->windowSequenceNumber:J
move-object v1, p0
move-wide v3, p4
invoke-direct/range {v1 .. v6}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getMediaPeriodInfoForContent(Ljava/lang/Object;JJ)Lcom/google/android/exoplayer2/MediaPeriodInfo;
move-result-object v0
return-object v0
.end method
.method private getMediaPeriodInfoForAd(Ljava/lang/Object;IIJJ)Lcom/google/android/exoplayer2/MediaPeriodInfo;
.registers 26
.param p1, "periodUid" # Ljava/lang/Object;
.param p2, "adGroupIndex" # I
.param p3, "adIndexInAdGroup" # I
.param p4, "contentPositionUs" # J
.param p6, "windowSequenceNumber" # J
.line 692
move-object/from16 v0, p0
new-instance v7, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
move-object v1, v7
move-object/from16 v2, p1
move/from16 v3, p2
move/from16 v4, p3
move-wide/from16 v5, p6
invoke-direct/range {v1 .. v6}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;-><init>(Ljava/lang/Object;IIJ)V
.line 694
.local v1, "id":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-object v2, v0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v3, v1, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->periodUid:Ljava/lang/Object;
iget-object v4, v0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
.line 696
invoke-virtual {v2, v3, v4}, Lcom/google/android/exoplayer2/Timeline;->getPeriodByUid(Ljava/lang/Object;Lcom/google/android/exoplayer2/Timeline$Period;)Lcom/google/android/exoplayer2/Timeline$Period;
move-result-object v2
iget v3, v1, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->adGroupIndex:I
iget v4, v1, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->adIndexInAdGroup:I
.line 697
invoke-virtual {v2, v3, v4}, Lcom/google/android/exoplayer2/Timeline$Period;->getAdDurationUs(II)J
move-result-wide v2
.line 698
.local v2, "durationUs":J
iget-object v4, v0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
.line 699
move/from16 v5, p2
invoke-virtual {v4, v5}, Lcom/google/android/exoplayer2/Timeline$Period;->getFirstAdIndexToPlay(I)I
move-result v4
move/from16 v6, p3
if-ne v6, v4, :cond_35
iget-object v4, v0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
.line 700
invoke-virtual {v4}, Lcom/google/android/exoplayer2/Timeline$Period;->getAdResumePositionUs()J
move-result-wide v7
goto :goto_37
:cond_35
const-wide/16 v7, 0x0
:goto_37
move-wide v10, v7
.line 702
.local v10, "startPositionUs":J
new-instance v4, Lcom/google/android/exoplayer2/MediaPeriodInfo;
const/16 v16, 0x0
const/16 v17, 0x0
move-object v8, v4
move-object v9, v1
move-wide/from16 v12, p4
move-wide v14, v2
invoke-direct/range {v8 .. v17}, Lcom/google/android/exoplayer2/MediaPeriodInfo;-><init>(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJJZZ)V
return-object v4
.end method
.method private getMediaPeriodInfoForContent(Ljava/lang/Object;JJ)Lcom/google/android/exoplayer2/MediaPeriodInfo;
.registers 26
.param p1, "periodUid" # Ljava/lang/Object;
.param p2, "startPositionUs" # J
.param p4, "windowSequenceNumber" # J
.line 713
move-object/from16 v0, p0
iget-object v1, v0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
move-wide/from16 v12, p2
invoke-virtual {v1, v12, v13}, Lcom/google/android/exoplayer2/Timeline$Period;->getAdGroupIndexAfterPositionUs(J)I
move-result v1
.line 714
.local v1, "nextAdGroupIndex":I
const-wide v2, -0x7fffffffffffffffL # -4.9E-324
const/4 v4, -0x1
if-eq v1, v4, :cond_19
iget-object v4, v0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
.line 716
invoke-virtual {v4, v1}, Lcom/google/android/exoplayer2/Timeline$Period;->getAdGroupTimeUs(I)J
move-result-wide v4
goto :goto_1a
:cond_19
move-wide v4, v2
:goto_1a
move-wide v14, v4
.line 718
.local v14, "endPositionUs":J
new-instance v4, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
move-object v6, v4
move-object/from16 v7, p1
move-wide/from16 v8, p4
move-wide v10, v14
invoke-direct/range {v6 .. v11}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;-><init>(Ljava/lang/Object;JJ)V
move-object v11, v4
.line 719
.local v11, "id":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
invoke-direct {v0, v11}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->isLastInPeriod(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;)Z
move-result v10
.line 720
.local v10, "isLastInPeriod":Z
invoke-direct {v0, v11, v10}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->isLastInTimeline(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;Z)Z
move-result v16
.line 721
.local v16, "isLastInTimeline":Z
cmp-long v4, v14, v2
if-eqz v4, :cond_3c
const-wide/high16 v2, -0x8000000000000000L
cmp-long v4, v14, v2
if-nez v4, :cond_3a
goto :goto_3c
:cond_3a
move-wide v8, v14
goto :goto_41
:cond_3c
:goto_3c
iget-object v2, v0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
iget-wide v2, v2, Lcom/google/android/exoplayer2/Timeline$Period;->durationUs:J
move-wide v8, v2
.line 725
.local v8, "durationUs":J
:goto_41
new-instance v17, Lcom/google/android/exoplayer2/MediaPeriodInfo;
const-wide v6, -0x7fffffffffffffffL # -4.9E-324
move-object/from16 v2, v17
move-object v3, v11
move-wide/from16 v4, p2
move/from16 v18, v10
.end local v10 # "isLastInPeriod":Z
.local v18, "isLastInPeriod":Z
move-object/from16 v19, v11
.end local v11 # "id":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.local v19, "id":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
move/from16 v11, v16
invoke-direct/range {v2 .. v11}, Lcom/google/android/exoplayer2/MediaPeriodInfo;-><init>(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJJZZ)V
return-object v17
.end method
.method private isLastInPeriod(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;)Z
.registers 7
.param p1, "id" # Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.line 735
invoke-virtual {p1}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->isAd()Z
move-result v0
if-nez v0, :cond_13
iget-wide v0, p1, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->endPositionUs:J
const-wide v2, -0x7fffffffffffffffL # -4.9E-324
cmp-long v4, v0, v2
if-nez v4, :cond_13
const/4 v0, 0x1
goto :goto_14
:cond_13
const/4 v0, 0x0
:goto_14
return v0
.end method
.method private isLastInTimeline(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;Z)Z
.registers 11
.param p1, "id" # Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.param p2, "isLastMediaPeriodInPeriod" # Z
.line 739
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v1, p1, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->periodUid:Ljava/lang/Object;
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/Timeline;->getIndexOfPeriod(Ljava/lang/Object;)I
move-result v0
.line 740
.local v0, "periodIndex":I
iget-object v1, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v2, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
invoke-virtual {v1, v0, v2}, Lcom/google/android/exoplayer2/Timeline;->getPeriod(ILcom/google/android/exoplayer2/Timeline$Period;)Lcom/google/android/exoplayer2/Timeline$Period;
move-result-object v1
iget v1, v1, Lcom/google/android/exoplayer2/Timeline$Period;->windowIndex:I
.line 741
.local v1, "windowIndex":I
iget-object v2, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v3, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->window:Lcom/google/android/exoplayer2/Timeline$Window;
invoke-virtual {v2, v1, v3}, Lcom/google/android/exoplayer2/Timeline;->getWindow(ILcom/google/android/exoplayer2/Timeline$Window;)Lcom/google/android/exoplayer2/Timeline$Window;
move-result-object v2
iget-boolean v2, v2, Lcom/google/android/exoplayer2/Timeline$Window;->isDynamic:Z
if-nez v2, :cond_33
iget-object v2, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v4, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
iget-object v5, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->window:Lcom/google/android/exoplayer2/Timeline$Window;
iget v6, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->repeatMode:I
iget-boolean v7, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->shuffleModeEnabled:Z
.line 742
move v3, v0
invoke-virtual/range {v2 .. v7}, Lcom/google/android/exoplayer2/Timeline;->isLastPeriod(ILcom/google/android/exoplayer2/Timeline$Period;Lcom/google/android/exoplayer2/Timeline$Window;IZ)Z
move-result v2
if-eqz v2, :cond_33
if-eqz p2, :cond_33
const/4 v2, 0x1
goto :goto_34
:cond_33
const/4 v2, 0x0
.line 741
:goto_34
return v2
.end method
.method private resolveMediaPeriodIdForAds(Ljava/lang/Object;JJ)Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.registers 19
.param p1, "periodUid" # Ljava/lang/Object;
.param p2, "positionUs" # J
.param p4, "windowSequenceNumber" # J
.line 408
move-object v0, p0
move-wide v1, p2
iget-object v3, v0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v4, v0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
move-object v11, p1
invoke-virtual {v3, p1, v4}, Lcom/google/android/exoplayer2/Timeline;->getPeriodByUid(Ljava/lang/Object;Lcom/google/android/exoplayer2/Timeline$Period;)Lcom/google/android/exoplayer2/Timeline$Period;
.line 409
iget-object v3, v0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
invoke-virtual {v3, v1, v2}, Lcom/google/android/exoplayer2/Timeline$Period;->getAdGroupIndexForPositionUs(J)I
move-result v3
.line 410
.local v3, "adGroupIndex":I
const/4 v4, -0x1
if-ne v3, v4, :cond_34
.line 411
iget-object v5, v0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
invoke-virtual {v5, v1, v2}, Lcom/google/android/exoplayer2/Timeline$Period;->getAdGroupIndexAfterPositionUs(J)I
move-result v12
.line 412
.local v12, "nextAdGroupIndex":I
if-ne v12, v4, :cond_22
const-wide v4, -0x7fffffffffffffffL # -4.9E-324
move-wide v9, v4
goto :goto_29
:cond_22
iget-object v4, v0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
.line 415
invoke-virtual {v4, v12}, Lcom/google/android/exoplayer2/Timeline$Period;->getAdGroupTimeUs(I)J
move-result-wide v4
move-wide v9, v4
:goto_29
nop
.line 416
.local v9, "endPositionUs":J
new-instance v4, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
move-object v5, v4
move-object v6, p1
move-wide/from16 v7, p4
invoke-direct/range {v5 .. v10}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;-><init>(Ljava/lang/Object;JJ)V
return-object v4
.line 418
.end local v9 # "endPositionUs":J
.end local v12 # "nextAdGroupIndex":I
:cond_34
iget-object v4, v0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
invoke-virtual {v4, v3}, Lcom/google/android/exoplayer2/Timeline$Period;->getFirstAdIndexToPlay(I)I
move-result v4
.line 419
.local v4, "adIndexInAdGroup":I
new-instance v12, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
move-object v5, v12
move-object v6, p1
move v7, v3
move v8, v4
move-wide/from16 v9, p4
invoke-direct/range {v5 .. v10}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;-><init>(Ljava/lang/Object;IIJ)V
return-object v12
.end method
.method private resolvePeriodIndexToWindowSequenceNumber(Ljava/lang/Object;)J
.registers 9
.param p1, "periodUid" # Ljava/lang/Object;
.line 432
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v1, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
invoke-virtual {v0, p1, v1}, Lcom/google/android/exoplayer2/Timeline;->getPeriodByUid(Ljava/lang/Object;Lcom/google/android/exoplayer2/Timeline$Period;)Lcom/google/android/exoplayer2/Timeline$Period;
move-result-object v0
iget v0, v0, Lcom/google/android/exoplayer2/Timeline$Period;->windowIndex:I
.line 433
.local v0, "windowIndex":I
iget-object v1, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->oldFrontPeriodUid:Ljava/lang/Object;
const/4 v2, -0x1
if-eqz v1, :cond_26
.line 434
iget-object v3, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
invoke-virtual {v3, v1}, Lcom/google/android/exoplayer2/Timeline;->getIndexOfPeriod(Ljava/lang/Object;)I
move-result v1
.line 435
.local v1, "oldFrontPeriodIndex":I
if-eq v1, v2, :cond_26
.line 436
iget-object v3, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v4, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
invoke-virtual {v3, v1, v4}, Lcom/google/android/exoplayer2/Timeline;->getPeriod(ILcom/google/android/exoplayer2/Timeline$Period;)Lcom/google/android/exoplayer2/Timeline$Period;
move-result-object v3
iget v3, v3, Lcom/google/android/exoplayer2/Timeline$Period;->windowIndex:I
.line 437
.local v3, "oldFrontWindowIndex":I
if-ne v3, v0, :cond_26
.line 439
iget-wide v4, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->oldFrontPeriodWindowSequenceNumber:J
return-wide v4
.line 443
.end local v1 # "oldFrontPeriodIndex":I
.end local v3 # "oldFrontWindowIndex":I
:cond_26
invoke-virtual {p0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getFrontPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v1
.line 444
.local v1, "mediaPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
:goto_2a
if-eqz v1, :cond_40
.line 445
iget-object v3, v1, Lcom/google/android/exoplayer2/MediaPeriodHolder;->uid:Ljava/lang/Object;
invoke-virtual {v3, p1}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_3b
.line 447
iget-object v2, v1, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-object v2, v2, Lcom/google/android/exoplayer2/MediaPeriodInfo;->id:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-wide v2, v2, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->windowSequenceNumber:J
return-wide v2
.line 449
:cond_3b
invoke-virtual {v1}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v1
goto :goto_2a
.line 451
:cond_40
invoke-virtual {p0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getFrontPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v1
.line 452
:goto_44
if-eqz v1, :cond_68
.line 453
iget-object v3, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v4, v1, Lcom/google/android/exoplayer2/MediaPeriodHolder;->uid:Ljava/lang/Object;
invoke-virtual {v3, v4}, Lcom/google/android/exoplayer2/Timeline;->getIndexOfPeriod(Ljava/lang/Object;)I
move-result v3
.line 454
.local v3, "indexOfHolderInTimeline":I
if-eq v3, v2, :cond_63
.line 455
iget-object v4, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v5, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
invoke-virtual {v4, v3, v5}, Lcom/google/android/exoplayer2/Timeline;->getPeriod(ILcom/google/android/exoplayer2/Timeline$Period;)Lcom/google/android/exoplayer2/Timeline$Period;
move-result-object v4
iget v4, v4, Lcom/google/android/exoplayer2/Timeline$Period;->windowIndex:I
.line 456
.local v4, "holderWindowIndex":I
if-ne v4, v0, :cond_63
.line 458
iget-object v2, v1, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-object v2, v2, Lcom/google/android/exoplayer2/MediaPeriodInfo;->id:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-wide v5, v2, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->windowSequenceNumber:J
return-wide v5
.line 461
.end local v4 # "holderWindowIndex":I
:cond_63
invoke-virtual {v1}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v1
.line 462
.end local v3 # "indexOfHolderInTimeline":I
goto :goto_44
.line 464
:cond_68
iget-wide v2, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->nextWindowSequenceNumber:J
const-wide/16 v4, 0x1
add-long/2addr v4, v2
iput-wide v4, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->nextWindowSequenceNumber:J
return-wide v2
.end method
.method private updateForPlaybackModeChange()Z
.registers 10
.line 492
invoke-virtual {p0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getFrontPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
.line 493
.local v0, "lastValidPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
const/4 v1, 0x1
if-nez v0, :cond_8
.line 494
return v1
.line 496
:cond_8
iget-object v2, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v3, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->uid:Ljava/lang/Object;
invoke-virtual {v2, v3}, Lcom/google/android/exoplayer2/Timeline;->getIndexOfPeriod(Ljava/lang/Object;)I
move-result v2
move v8, v2
.line 498
.local v8, "currentPeriodIndex":I
:goto_11
iget-object v2, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v4, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
iget-object v5, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->window:Lcom/google/android/exoplayer2/Timeline$Window;
iget v6, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->repeatMode:I
iget-boolean v7, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->shuffleModeEnabled:Z
.line 499
move v3, v8
invoke-virtual/range {v2 .. v7}, Lcom/google/android/exoplayer2/Timeline;->getNextPeriodIndex(ILcom/google/android/exoplayer2/Timeline$Period;Lcom/google/android/exoplayer2/Timeline$Window;IZ)I
move-result v2
.line 501
.local v2, "nextPeriodIndex":I
:goto_20
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v3
if-eqz v3, :cond_31
iget-object v3, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-boolean v3, v3, Lcom/google/android/exoplayer2/MediaPeriodInfo;->isLastInTimelinePeriod:Z
if-nez v3, :cond_31
.line 503
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
goto :goto_20
.line 506
:cond_31
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v3
.line 507
.local v3, "nextMediaPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
const/4 v4, -0x1
if-eq v2, v4, :cond_49
if-nez v3, :cond_3b
.line 508
goto :goto_49
.line 510
:cond_3b
iget-object v4, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v5, v3, Lcom/google/android/exoplayer2/MediaPeriodHolder;->uid:Ljava/lang/Object;
invoke-virtual {v4, v5}, Lcom/google/android/exoplayer2/Timeline;->getIndexOfPeriod(Ljava/lang/Object;)I
move-result v4
.line 511
.local v4, "nextPeriodHolderPeriodIndex":I
if-eq v4, v2, :cond_46
.line 512
goto :goto_49
.line 514
:cond_46
move-object v0, v3
.line 515
move v8, v2
.line 516
.end local v2 # "nextPeriodIndex":I
.end local v3 # "nextMediaPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.end local v4 # "nextPeriodHolderPeriodIndex":I
goto :goto_11
.line 519
:cond_49
:goto_49
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->removeAfter(Lcom/google/android/exoplayer2/MediaPeriodHolder;)Z
move-result v2
.line 522
.local v2, "readingPeriodRemoved":Z
iget-object v3, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
invoke-virtual {p0, v3}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getUpdatedMediaPeriodInfo(Lcom/google/android/exoplayer2/MediaPeriodInfo;)Lcom/google/android/exoplayer2/MediaPeriodInfo;
move-result-object v3
iput-object v3, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
.line 525
if-eqz v2, :cond_5f
invoke-virtual {p0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->hasPlayingPeriod()Z
move-result v3
if-nez v3, :cond_5e
goto :goto_5f
:cond_5e
const/4 v1, 0x0
:cond_5f
:goto_5f
return v1
.end method
# virtual methods
.method public advancePlayingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
.registers 3
.line 223
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->playing:Lcom/google/android/exoplayer2/MediaPeriodHolder;
if-eqz v0, :cond_37
.line 224
iget-object v1, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->reading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
if-ne v0, v1, :cond_e
.line 225
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
iput-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->reading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
.line 227
:cond_e
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->playing:Lcom/google/android/exoplayer2/MediaPeriodHolder;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->release()V
.line 228
iget v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->length:I
add-int/lit8 v0, v0, -0x1
iput v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->length:I
.line 229
if-nez v0, :cond_2e
.line 230
const/4 v0, 0x0
iput-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->loading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
.line 231
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->playing:Lcom/google/android/exoplayer2/MediaPeriodHolder;
iget-object v0, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->uid:Ljava/lang/Object;
iput-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->oldFrontPeriodUid:Ljava/lang/Object;
.line 232
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->playing:Lcom/google/android/exoplayer2/MediaPeriodHolder;
iget-object v0, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-object v0, v0, Lcom/google/android/exoplayer2/MediaPeriodInfo;->id:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-wide v0, v0, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->windowSequenceNumber:J
iput-wide v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->oldFrontPeriodWindowSequenceNumber:J
.line 234
:cond_2e
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->playing:Lcom/google/android/exoplayer2/MediaPeriodHolder;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
iput-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->playing:Lcom/google/android/exoplayer2/MediaPeriodHolder;
goto :goto_3d
.line 236
:cond_37
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->loading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
iput-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->playing:Lcom/google/android/exoplayer2/MediaPeriodHolder;
.line 237
iput-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->reading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
.line 239
:goto_3d
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->playing:Lcom/google/android/exoplayer2/MediaPeriodHolder;
return-object v0
.end method
.method public advanceReadingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
.registers 2
.line 210
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->reading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
if-eqz v0, :cond_c
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
if-eqz v0, :cond_c
const/4 v0, 0x1
goto :goto_d
:cond_c
const/4 v0, 0x0
:goto_d
invoke-static {v0}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V
.line 211
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->reading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
iput-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->reading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
.line 212
return-object v0
.end method
.method public clear(Z)V
.registers 6
.param p1, "keepFrontPeriodUid" # Z
.line 274
invoke-virtual {p0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getFrontPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
.line 275
.local v0, "front":Lcom/google/android/exoplayer2/MediaPeriodHolder;
const/4 v1, 0x0
if-eqz v0, :cond_1e
.line 276
if-eqz p1, :cond_c
iget-object v2, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->uid:Ljava/lang/Object;
goto :goto_d
:cond_c
move-object v2, v1
:goto_d
iput-object v2, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->oldFrontPeriodUid:Ljava/lang/Object;
.line 277
iget-object v2, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-object v2, v2, Lcom/google/android/exoplayer2/MediaPeriodInfo;->id:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-wide v2, v2, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->windowSequenceNumber:J
iput-wide v2, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->oldFrontPeriodWindowSequenceNumber:J
.line 278
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->release()V
.line 279
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->removeAfter(Lcom/google/android/exoplayer2/MediaPeriodHolder;)Z
goto :goto_22
.line 280
:cond_1e
if-nez p1, :cond_22
.line 281
iput-object v1, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->oldFrontPeriodUid:Ljava/lang/Object;
.line 283
:cond_22
:goto_22
iput-object v1, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->playing:Lcom/google/android/exoplayer2/MediaPeriodHolder;
.line 284
iput-object v1, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->loading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
.line 285
iput-object v1, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->reading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
.line 286
const/4 v1, 0x0
iput v1, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->length:I
.line 287
return-void
.end method
.method public enqueueNextMediaPeriod([Lcom/google/android/exoplayer2/RendererCapabilities;Lcom/google/android/exoplayer2/trackselection/TrackSelector;Lcom/google/android/exoplayer2/upstream/Allocator;Lcom/google/android/exoplayer2/source/MediaSource;Lcom/google/android/exoplayer2/MediaPeriodInfo;)Lcom/google/android/exoplayer2/source/MediaPeriod;
.registers 16
.param p1, "rendererCapabilities" # [Lcom/google/android/exoplayer2/RendererCapabilities;
.param p2, "trackSelector" # Lcom/google/android/exoplayer2/trackselection/TrackSelector;
.param p3, "allocator" # Lcom/google/android/exoplayer2/upstream/Allocator;
.param p4, "mediaSource" # Lcom/google/android/exoplayer2/source/MediaSource;
.param p5, "info" # Lcom/google/android/exoplayer2/MediaPeriodInfo;
.line 145
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->loading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
if-nez v0, :cond_8
iget-wide v0, p5, Lcom/google/android/exoplayer2/MediaPeriodInfo;->startPositionUs:J
move-wide v4, v0
goto :goto_14
.line 148
:cond_8
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getRendererOffset()J
move-result-wide v0
iget-object v2, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->loading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
iget-object v2, v2, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-wide v2, v2, Lcom/google/android/exoplayer2/MediaPeriodInfo;->durationUs:J
add-long/2addr v0, v2
move-wide v4, v0
:goto_14
nop
.line 149
.local v4, "rendererPositionOffsetUs":J
new-instance v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-object v2, v0
move-object v3, p1
move-object v6, p2
move-object v7, p3
move-object v8, p4
move-object v9, p5
invoke-direct/range {v2 .. v9}, Lcom/google/android/exoplayer2/MediaPeriodHolder;-><init>([Lcom/google/android/exoplayer2/RendererCapabilities;JLcom/google/android/exoplayer2/trackselection/TrackSelector;Lcom/google/android/exoplayer2/upstream/Allocator;Lcom/google/android/exoplayer2/source/MediaSource;Lcom/google/android/exoplayer2/MediaPeriodInfo;)V
.line 157
.local v0, "newPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
iget-object v1, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->loading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
if-eqz v1, :cond_30
.line 158
invoke-virtual {p0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->hasPlayingPeriod()Z
move-result v1
invoke-static {v1}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V
.line 159
iget-object v1, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->loading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
invoke-virtual {v1, v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->setNext(Lcom/google/android/exoplayer2/MediaPeriodHolder;)V
.line 161
:cond_30
const/4 v1, 0x0
iput-object v1, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->oldFrontPeriodUid:Ljava/lang/Object;
.line 162
iput-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->loading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
.line 163
iget v1, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->length:I
add-int/lit8 v1, v1, 0x1
iput v1, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->length:I
.line 164
iget-object v1, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod;
return-object v1
.end method
.method public getFrontPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
.registers 2
.line 196
invoke-virtual {p0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->hasPlayingPeriod()Z
move-result v0
if-eqz v0, :cond_9
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->playing:Lcom/google/android/exoplayer2/MediaPeriodHolder;
goto :goto_b
:cond_9
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->loading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
:goto_b
return-object v0
.end method
.method public getLoadingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
.registers 2
.line 172
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->loading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
return-object v0
.end method
.method public getNextMediaPeriodInfo(JLcom/google/android/exoplayer2/PlaybackInfo;)Lcom/google/android/exoplayer2/MediaPeriodInfo;
.registers 5
.param p1, "rendererPositionUs" # J
.param p3, "playbackInfo" # Lcom/google/android/exoplayer2/PlaybackInfo;
.line 124
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->loading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
if-nez v0, :cond_9
.line 125
invoke-direct {p0, p3}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getFirstMediaPeriodInfo(Lcom/google/android/exoplayer2/PlaybackInfo;)Lcom/google/android/exoplayer2/MediaPeriodInfo;
move-result-object v0
goto :goto_e
:cond_9
nop
.line 126
invoke-direct {p0, v0, p1, p2}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getFollowingMediaPeriodInfo(Lcom/google/android/exoplayer2/MediaPeriodHolder;J)Lcom/google/android/exoplayer2/MediaPeriodInfo;
move-result-object v0
.line 124
:goto_e
return-object v0
.end method
.method public getPlayingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
.registers 2
.line 180
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->playing:Lcom/google/android/exoplayer2/MediaPeriodHolder;
return-object v0
.end method
.method public getReadingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
.registers 2
.line 188
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->reading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
return-object v0
.end method
.method public getUpdatedMediaPeriodInfo(Lcom/google/android/exoplayer2/MediaPeriodInfo;)Lcom/google/android/exoplayer2/MediaPeriodInfo;
.registers 16
.param p1, "info" # Lcom/google/android/exoplayer2/MediaPeriodInfo;
.line 360
iget-object v10, p1, Lcom/google/android/exoplayer2/MediaPeriodInfo;->id:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.line 361
.local v10, "id":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
invoke-direct {p0, v10}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->isLastInPeriod(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;)Z
move-result v11
.line 362
.local v11, "isLastInPeriod":Z
invoke-direct {p0, v10, v11}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->isLastInTimeline(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;Z)Z
move-result v12
.line 363
.local v12, "isLastInTimeline":Z
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v1, p1, Lcom/google/android/exoplayer2/MediaPeriodInfo;->id:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-object v1, v1, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->periodUid:Ljava/lang/Object;
iget-object v2, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
invoke-virtual {v0, v1, v2}, Lcom/google/android/exoplayer2/Timeline;->getPeriodByUid(Ljava/lang/Object;Lcom/google/android/exoplayer2/Timeline$Period;)Lcom/google/android/exoplayer2/Timeline$Period;
.line 364
nop
.line 365
invoke-virtual {v10}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->isAd()Z
move-result v0
if-eqz v0, :cond_28
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
iget v1, v10, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->adGroupIndex:I
iget v2, v10, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->adIndexInAdGroup:I
.line 366
invoke-virtual {v0, v1, v2}, Lcom/google/android/exoplayer2/Timeline$Period;->getAdDurationUs(II)J
move-result-wide v0
move-wide v6, v0
goto :goto_46
:cond_28
iget-wide v0, v10, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->endPositionUs:J
const-wide v2, -0x7fffffffffffffffL # -4.9E-324
cmp-long v4, v0, v2
if-eqz v4, :cond_3f
iget-wide v0, v10, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->endPositionUs:J
const-wide/high16 v2, -0x8000000000000000L
cmp-long v4, v0, v2
if-nez v4, :cond_3c
goto :goto_3f
.line 368
:cond_3c
iget-wide v0, v10, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->endPositionUs:J
goto :goto_45
.line 366
:cond_3f
:goto_3f
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
.line 368
invoke-virtual {v0}, Lcom/google/android/exoplayer2/Timeline$Period;->getDurationUs()J
move-result-wide v0
:goto_45
move-wide v6, v0
:goto_46
nop
.line 370
.local v6, "durationUs":J
new-instance v13, Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-wide v2, p1, Lcom/google/android/exoplayer2/MediaPeriodInfo;->startPositionUs:J
iget-wide v4, p1, Lcom/google/android/exoplayer2/MediaPeriodInfo;->contentPositionUs:J
move-object v0, v13
move-object v1, v10
move v8, v11
move v9, v12
invoke-direct/range {v0 .. v9}, Lcom/google/android/exoplayer2/MediaPeriodInfo;-><init>(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJJZZ)V
return-object v13
.end method
.method public hasPlayingPeriod()Z
.registers 2
.line 201
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->playing:Lcom/google/android/exoplayer2/MediaPeriodHolder;
if-eqz v0, :cond_6
const/4 v0, 0x1
goto :goto_7
:cond_6
const/4 v0, 0x0
:goto_7
return v0
.end method
.method public isLoading(Lcom/google/android/exoplayer2/source/MediaPeriod;)Z
.registers 3
.param p1, "mediaPeriod" # Lcom/google/android/exoplayer2/source/MediaPeriod;
.line 91
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->loading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
if-eqz v0, :cond_a
iget-object v0, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod;
if-ne v0, p1, :cond_a
const/4 v0, 0x1
goto :goto_b
:cond_a
const/4 v0, 0x0
:goto_b
return v0
.end method
.method public reevaluateBuffer(J)V
.registers 4
.param p1, "rendererPositionUs" # J
.line 100
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->loading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
if-eqz v0, :cond_7
.line 101
invoke-virtual {v0, p1, p2}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->reevaluateBuffer(J)V
.line 103
:cond_7
return-void
.end method
.method public removeAfter(Lcom/google/android/exoplayer2/MediaPeriodHolder;)Z
.registers 5
.param p1, "mediaPeriodHolder" # Lcom/google/android/exoplayer2/MediaPeriodHolder;
.line 251
const/4 v0, 0x1
if-eqz p1, :cond_5
const/4 v1, 0x1
goto :goto_6
:cond_5
const/4 v1, 0x0
:goto_6
invoke-static {v1}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V
.line 252
const/4 v1, 0x0
.line 253
.local v1, "removedReading":Z
iput-object p1, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->loading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
.line 254
:goto_c
invoke-virtual {p1}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v2
if-eqz v2, :cond_28
.line 255
invoke-virtual {p1}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object p1
.line 256
iget-object v2, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->reading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
if-ne p1, v2, :cond_1f
.line 257
iget-object v2, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->playing:Lcom/google/android/exoplayer2/MediaPeriodHolder;
iput-object v2, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->reading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
.line 258
const/4 v1, 0x1
.line 260
:cond_1f
invoke-virtual {p1}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->release()V
.line 261
iget v2, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->length:I
sub-int/2addr v2, v0
iput v2, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->length:I
goto :goto_c
.line 263
:cond_28
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->loading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
const/4 v2, 0x0
invoke-virtual {v0, v2}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->setNext(Lcom/google/android/exoplayer2/MediaPeriodHolder;)V
.line 264
return v1
.end method
.method public resolveMediaPeriodIdForAds(Ljava/lang/Object;J)Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.registers 12
.param p1, "periodUid" # Ljava/lang/Object;
.param p2, "positionUs" # J
.line 389
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->resolvePeriodIndexToWindowSequenceNumber(Ljava/lang/Object;)J
move-result-wide v6
.line 390
.local v6, "windowSequenceNumber":J
move-object v0, p0
move-object v1, p1
move-wide v2, p2
move-wide v4, v6
invoke-direct/range {v0 .. v5}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->resolveMediaPeriodIdForAds(Ljava/lang/Object;JJ)Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
move-result-object v0
return-object v0
.end method
.method public setTimeline(Lcom/google/android/exoplayer2/Timeline;)V
.registers 2
.param p1, "timeline" # Lcom/google/android/exoplayer2/Timeline;
.line 68
iput-object p1, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
.line 69
return-void
.end method
.method public shouldLoadNextMediaPeriod()Z
.registers 6
.line 107
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->loading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
if-eqz v0, :cond_2a
iget-object v0, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-boolean v0, v0, Lcom/google/android/exoplayer2/MediaPeriodInfo;->isFinal:Z
if-nez v0, :cond_28
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->loading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
.line 109
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->isFullyBuffered()Z
move-result v0
if-eqz v0, :cond_28
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->loading:Lcom/google/android/exoplayer2/MediaPeriodHolder;
iget-object v0, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-wide v0, v0, Lcom/google/android/exoplayer2/MediaPeriodInfo;->durationUs:J
const-wide v2, -0x7fffffffffffffffL # -4.9E-324
cmp-long v4, v0, v2
if-eqz v4, :cond_28
iget v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->length:I
const/16 v1, 0x64
if-ge v0, v1, :cond_28
goto :goto_2a
:cond_28
const/4 v0, 0x0
goto :goto_2b
:cond_2a
:goto_2a
const/4 v0, 0x1
.line 107
:goto_2b
return v0
.end method
.method public updateQueuedPeriods(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;J)Z
.registers 13
.param p1, "playingPeriodId" # Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.param p2, "rendererPositionUs" # J
.line 303
iget-object v0, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v1, p1, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->periodUid:Ljava/lang/Object;
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/Timeline;->getIndexOfPeriod(Ljava/lang/Object;)I
move-result v0
.line 306
.local v0, "periodIndex":I
const/4 v1, 0x0
.line 307
.local v1, "previousPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
invoke-virtual {p0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getFrontPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v2
.line 308
.local v2, "periodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
:goto_d
const/4 v3, 0x1
if-eqz v2, :cond_8d
.line 309
if-nez v1, :cond_2b
.line 310
iget-object v4, v2, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-wide v4, v4, Lcom/google/android/exoplayer2/MediaPeriodInfo;->durationUs:J
.line 311
.local v4, "previousDurationUs":J
iget-object v6, v2, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
invoke-virtual {p0, v6}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getUpdatedMediaPeriodInfo(Lcom/google/android/exoplayer2/MediaPeriodInfo;)Lcom/google/android/exoplayer2/MediaPeriodInfo;
move-result-object v6
iput-object v6, v2, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
.line 312
invoke-direct {p0, v2, v4, v5}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->canKeepAfterMediaPeriodHolder(Lcom/google/android/exoplayer2/MediaPeriodHolder;J)Z
move-result v6
if-nez v6, :cond_2a
.line 313
invoke-virtual {p0, v2}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->removeAfter(Lcom/google/android/exoplayer2/MediaPeriodHolder;)Z
move-result v6
xor-int/2addr v3, v6
return v3
.line 315
.end local v4 # "previousDurationUs":J
:cond_2a
goto :goto_6c
.line 317
:cond_2b
const/4 v4, -0x1
if-eq v0, v4, :cond_87
iget-object v4, v2, Lcom/google/android/exoplayer2/MediaPeriodHolder;->uid:Ljava/lang/Object;
iget-object v5, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
.line 318
invoke-virtual {v5, v0}, Lcom/google/android/exoplayer2/Timeline;->getUidOfPeriod(I)Ljava/lang/Object;
move-result-object v5
invoke-virtual {v4, v5}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v4
if-nez v4, :cond_3d
goto :goto_87
.line 322
:cond_3d
nop
.line 323
invoke-direct {p0, v1, p2, p3}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getFollowingMediaPeriodInfo(Lcom/google/android/exoplayer2/MediaPeriodHolder;J)Lcom/google/android/exoplayer2/MediaPeriodInfo;
move-result-object v4
.line 324
.local v4, "periodInfo":Lcom/google/android/exoplayer2/MediaPeriodInfo;
if-nez v4, :cond_4a
.line 326
invoke-virtual {p0, v1}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->removeAfter(Lcom/google/android/exoplayer2/MediaPeriodHolder;)Z
move-result v5
xor-int/2addr v3, v5
return v3
.line 329
:cond_4a
iget-object v5, v2, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
invoke-virtual {p0, v5}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getUpdatedMediaPeriodInfo(Lcom/google/android/exoplayer2/MediaPeriodInfo;)Lcom/google/android/exoplayer2/MediaPeriodInfo;
move-result-object v5
iput-object v5, v2, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
.line 331
invoke-direct {p0, v2, v4}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->canKeepMediaPeriodHolder(Lcom/google/android/exoplayer2/MediaPeriodHolder;Lcom/google/android/exoplayer2/MediaPeriodInfo;)Z
move-result v5
if-nez v5, :cond_5e
.line 332
invoke-virtual {p0, v1}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->removeAfter(Lcom/google/android/exoplayer2/MediaPeriodHolder;)Z
move-result v5
xor-int/2addr v3, v5
return v3
.line 333
:cond_5e
iget-wide v5, v4, Lcom/google/android/exoplayer2/MediaPeriodInfo;->durationUs:J
invoke-direct {p0, v2, v5, v6}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->canKeepAfterMediaPeriodHolder(Lcom/google/android/exoplayer2/MediaPeriodHolder;J)Z
move-result v5
if-nez v5, :cond_6c
.line 334
invoke-virtual {p0, v2}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->removeAfter(Lcom/google/android/exoplayer2/MediaPeriodHolder;)Z
move-result v5
xor-int/2addr v3, v5
return v3
.line 338
.end local v4 # "periodInfo":Lcom/google/android/exoplayer2/MediaPeriodInfo;
:cond_6c
:goto_6c
iget-object v3, v2, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-boolean v3, v3, Lcom/google/android/exoplayer2/MediaPeriodInfo;->isLastInTimelinePeriod:Z
if-eqz v3, :cond_81
.line 340
iget-object v3, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v5, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->period:Lcom/google/android/exoplayer2/Timeline$Period;
iget-object v6, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->window:Lcom/google/android/exoplayer2/Timeline$Window;
iget v7, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->repeatMode:I
iget-boolean v8, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->shuffleModeEnabled:Z
.line 341
move v4, v0
invoke-virtual/range {v3 .. v8}, Lcom/google/android/exoplayer2/Timeline;->getNextPeriodIndex(ILcom/google/android/exoplayer2/Timeline$Period;Lcom/google/android/exoplayer2/Timeline$Window;IZ)I
move-result v0
.line 345
:cond_81
move-object v1, v2
.line 346
invoke-virtual {v2}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v2
goto :goto_d
.line 320
:cond_87
:goto_87
invoke-virtual {p0, v1}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->removeAfter(Lcom/google/android/exoplayer2/MediaPeriodHolder;)Z
move-result v4
xor-int/2addr v3, v4
return v3
.line 348
:cond_8d
return v3
.end method
.method public updateRepeatMode(I)Z
.registers 3
.param p1, "repeatMode" # I
.line 76
iput p1, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->repeatMode:I
.line 77
invoke-direct {p0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->updateForPlaybackModeChange()Z
move-result v0
return v0
.end method
.method public updateShuffleModeEnabled(Z)Z
.registers 3
.param p1, "shuffleModeEnabled" # Z
.line 85
iput-boolean p1, p0, Lcom/google/android/exoplayer2/MediaPeriodQueue;->shuffleModeEnabled:Z
.line 86
invoke-direct {p0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->updateForPlaybackModeChange()Z
move-result v0
return v0
.end method