DashMediaSource$PeriodSeekInfo.smali

.class final Lcom/google/android/exoplayer2/source/dash/DashMediaSource$PeriodSeekInfo;
.super Ljava/lang/Object;
.source "DashMediaSource.java"


# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Lcom/google/android/exoplayer2/source/dash/DashMediaSource;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x1a
    name = "PeriodSeekInfo"
.end annotation


# instance fields
.field public final availableEndTimeUs:J

.field public final availableStartTimeUs:J

.field public final isIndexExplicit:Z


# direct methods
.method static constructor <clinit>()V
    .registers 1

    return-void
.end method

.method private constructor <init>(ZJJ)V
    .registers 6
    .param p1, "isIndexExplicit"    # Z
    .param p2, "availableStartTimeUs"    # J
    .param p4, "availableEndTimeUs"    # J

    .line 1123
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 1124
    iput-boolean p1, p0, Lcom/google/android/exoplayer2/source/dash/DashMediaSource$PeriodSeekInfo;->isIndexExplicit:Z

    .line 1125
    iput-wide p2, p0, Lcom/google/android/exoplayer2/source/dash/DashMediaSource$PeriodSeekInfo;->availableStartTimeUs:J

    .line 1126
    iput-wide p4, p0, Lcom/google/android/exoplayer2/source/dash/DashMediaSource$PeriodSeekInfo;->availableEndTimeUs:J

    .line 1127
    return-void
.end method

.method public static createPeriodSeekInfo(Lcom/google/android/exoplayer2/source/dash/manifest/Period;J)Lcom/google/android/exoplayer2/source/dash/DashMediaSource$PeriodSeekInfo;
    .registers 31
    .param p0, "period"    # Lcom/google/android/exoplayer2/source/dash/manifest/Period;
    .param p1, "durationUs"    # J

    .line 1070
    move-object/from16 v0, p0

    move-wide/from16 v7, p1

    iget-object v1, v0, Lcom/google/android/exoplayer2/source/dash/manifest/Period;->adaptationSets:Ljava/util/List;

    invoke-interface {v1}, Ljava/util/List;->size()I

    move-result v9

    .line 1071
    .local v9, "adaptationSetCount":I
    const-wide/16 v1, 0x0

    .line 1072
    .local v1, "availableStartTimeUs":J
    const-wide v3, 0x7fffffffffffffffL

    .line 1073
    .local v3, "availableEndTimeUs":J
    const/4 v5, 0x0

    .line 1074
    .local v5, "isIndexExplicit":Z
    const/4 v6, 0x0

    .line 1076
    .local v6, "seenEmptyIndex":Z
    const/4 v10, 0x0

    .line 1077
    .local v10, "haveAudioVideoAdaptationSets":Z
    const/4 v11, 0x0

    .local v11, "i":I
    :goto_15
    if-ge v11, v9, :cond_2c

    .line 1078
    iget-object v12, v0, Lcom/google/android/exoplayer2/source/dash/manifest/Period;->adaptationSets:Ljava/util/List;

    invoke-interface {v12, v11}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v12

    check-cast v12, Lcom/google/android/exoplayer2/source/dash/manifest/AdaptationSet;

    iget v12, v12, Lcom/google/android/exoplayer2/source/dash/manifest/AdaptationSet;->type:I

    .line 1079
    .local v12, "type":I
    const/4 v13, 0x1

    if-eq v12, v13, :cond_2b

    const/4 v13, 0x2

    if-ne v12, v13, :cond_28

    goto :goto_2b

    .line 1077
    .end local v12    # "type":I
    :cond_28
    add-int/lit8 v11, v11, 0x1

    goto :goto_15

    .line 1080
    .restart local v12    # "type":I
    :cond_2b
    :goto_2b
    const/4 v10, 0x1

    .line 1085
    .end local v11    # "i":I
    .end local v12    # "type":I
    :cond_2c
    const/4 v11, 0x0

    move-wide v14, v1

    move/from16 v18, v5

    move/from16 v19, v6

    move v13, v11

    move-wide v11, v3

    .end local v1    # "availableStartTimeUs":J
    .end local v3    # "availableEndTimeUs":J
    .end local v5    # "isIndexExplicit":Z
    .end local v6    # "seenEmptyIndex":Z
    .local v11, "availableEndTimeUs":J
    .local v13, "i":I
    .local v14, "availableStartTimeUs":J
    .local v18, "isIndexExplicit":Z
    .local v19, "seenEmptyIndex":Z
    :goto_34
    if-ge v13, v9, :cond_be

    .line 1086
    iget-object v1, v0, Lcom/google/android/exoplayer2/source/dash/manifest/Period;->adaptationSets:Ljava/util/List;

    invoke-interface {v1, v13}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v1

    move-object v5, v1

    check-cast v5, Lcom/google/android/exoplayer2/source/dash/manifest/AdaptationSet;

    .line 1089
    .local v5, "adaptationSet":Lcom/google/android/exoplayer2/source/dash/manifest/AdaptationSet;
    if-eqz v10, :cond_48

    iget v1, v5, Lcom/google/android/exoplayer2/source/dash/manifest/AdaptationSet;->type:I

    const/4 v2, 0x3

    if-ne v1, v2, :cond_48

    .line 1090
    goto/16 :goto_b8

    .line 1093
    :cond_48
    iget-object v1, v5, Lcom/google/android/exoplayer2/source/dash/manifest/AdaptationSet;->representations:Ljava/util/List;

    const/4 v2, 0x0

    invoke-interface {v1, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;

    invoke-virtual {v1}, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->getIndex()Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;

    move-result-object v6

    .line 1094
    .local v6, "index":Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
    if-nez v6, :cond_68

    .line 1095
    new-instance v16, Lcom/google/android/exoplayer2/source/dash/DashMediaSource$PeriodSeekInfo;

    const/4 v2, 0x1

    const-wide/16 v3, 0x0

    move-object/from16 v1, v16

    move-object/from16 v17, v5

    move-object/from16 v20, v6

    .end local v5    # "adaptationSet":Lcom/google/android/exoplayer2/source/dash/manifest/AdaptationSet;
    .end local v6    # "index":Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
    .local v17, "adaptationSet":Lcom/google/android/exoplayer2/source/dash/manifest/AdaptationSet;
    .local v20, "index":Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
    move-wide/from16 v5, p1

    invoke-direct/range {v1 .. v6}, Lcom/google/android/exoplayer2/source/dash/DashMediaSource$PeriodSeekInfo;-><init>(ZJJ)V

    return-object v16

    .line 1097
    .end local v17    # "adaptationSet":Lcom/google/android/exoplayer2/source/dash/manifest/AdaptationSet;
    .end local v20    # "index":Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
    .restart local v5    # "adaptationSet":Lcom/google/android/exoplayer2/source/dash/manifest/AdaptationSet;
    .restart local v6    # "index":Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
    :cond_68
    move-object/from16 v17, v5

    move-object/from16 v20, v6

    .end local v5    # "adaptationSet":Lcom/google/android/exoplayer2/source/dash/manifest/AdaptationSet;
    .end local v6    # "index":Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
    .restart local v17    # "adaptationSet":Lcom/google/android/exoplayer2/source/dash/manifest/AdaptationSet;
    .restart local v20    # "index":Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
    invoke-interface/range {v20 .. v20}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->isExplicit()Z

    move-result v1

    or-int v1, v18, v1

    .line 1098
    .end local v18    # "isIndexExplicit":Z
    .local v1, "isIndexExplicit":Z
    move-object/from16 v2, v20

    .end local v20    # "index":Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
    .local v2, "index":Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
    invoke-interface {v2, v7, v8}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getSegmentCount(J)I

    move-result v3

    .line 1099
    .local v3, "segmentCount":I
    if-nez v3, :cond_85

    .line 1100
    const/4 v4, 0x1

    .line 1101
    .end local v19    # "seenEmptyIndex":Z
    .local v4, "seenEmptyIndex":Z
    const-wide/16 v5, 0x0

    .line 1102
    .end local v14    # "availableStartTimeUs":J
    .local v5, "availableStartTimeUs":J
    const-wide/16 v11, 0x0

    move/from16 v18, v1

    move/from16 v19, v4

    move-wide v14, v5

    goto :goto_b8

    .line 1103
    .end local v4    # "seenEmptyIndex":Z
    .end local v5    # "availableStartTimeUs":J
    .restart local v14    # "availableStartTimeUs":J
    .restart local v19    # "seenEmptyIndex":Z
    :cond_85
    if-nez v19, :cond_b5

    .line 1104
    invoke-interface {v2}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getFirstSegmentNum()J

    move-result-wide v4

    .line 1105
    .local v4, "firstSegmentNum":J
    move v6, v1

    .end local v1    # "isIndexExplicit":Z
    .local v6, "isIndexExplicit":Z
    invoke-interface {v2, v4, v5}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getTimeUs(J)J

    move-result-wide v0

    .line 1106
    .local v0, "adaptationSetAvailableStartTimeUs":J
    invoke-static {v14, v15, v0, v1}, Ljava/lang/Math;->max(JJ)J

    move-result-wide v14

    .line 1107
    move-wide/from16 v20, v0

    .end local v0    # "adaptationSetAvailableStartTimeUs":J
    .local v20, "adaptationSetAvailableStartTimeUs":J
    const/4 v0, -0x1

    if-eq v3, v0, :cond_b2

    .line 1108
    int-to-long v0, v3

    add-long/2addr v0, v4

    const-wide/16 v22, 0x1

    sub-long v0, v0, v22

    .line 1109
    .local v0, "lastSegmentNum":J
    invoke-interface {v2, v0, v1}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getTimeUs(J)J

    move-result-wide v22

    .line 1110
    invoke-interface {v2, v0, v1, v7, v8}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getDurationUs(JJ)J

    move-result-wide v24

    move-wide/from16 v26, v0

    .end local v0    # "lastSegmentNum":J
    .local v26, "lastSegmentNum":J
    add-long v0, v22, v24

    .line 1111
    .local v0, "adaptationSetAvailableEndTimeUs":J
    invoke-static {v11, v12, v0, v1}, Ljava/lang/Math;->min(JJ)J

    move-result-wide v11

    move/from16 v18, v6

    goto :goto_b8

    .line 1107
    .end local v0    # "adaptationSetAvailableEndTimeUs":J
    .end local v26    # "lastSegmentNum":J
    :cond_b2
    move/from16 v18, v6

    goto :goto_b8

    .line 1103
    .end local v4    # "firstSegmentNum":J
    .end local v6    # "isIndexExplicit":Z
    .end local v20    # "adaptationSetAvailableStartTimeUs":J
    .restart local v1    # "isIndexExplicit":Z
    :cond_b5
    move v6, v1

    .end local v1    # "isIndexExplicit":Z
    .restart local v6    # "isIndexExplicit":Z
    move/from16 v18, v6

    .line 1085
    .end local v2    # "index":Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
    .end local v3    # "segmentCount":I
    .end local v6    # "isIndexExplicit":Z
    .end local v17    # "adaptationSet":Lcom/google/android/exoplayer2/source/dash/manifest/AdaptationSet;
    .restart local v18    # "isIndexExplicit":Z
    :goto_b8
    add-int/lit8 v13, v13, 0x1

    move-object/from16 v0, p0

    goto/16 :goto_34

    .line 1115
    .end local v13    # "i":I
    :cond_be
    new-instance v0, Lcom/google/android/exoplayer2/source/dash/DashMediaSource$PeriodSeekInfo;

    move-wide v3, v11

    .end local v11    # "availableEndTimeUs":J
    .local v3, "availableEndTimeUs":J
    move-object v12, v0

    move/from16 v13, v18

    move-wide v1, v14

    .end local v14    # "availableStartTimeUs":J
    .local v1, "availableStartTimeUs":J
    move-wide/from16 v16, v3

    invoke-direct/range {v12 .. v17}, Lcom/google/android/exoplayer2/source/dash/DashMediaSource$PeriodSeekInfo;-><init>(ZJJ)V

    return-object v0
.end method