SegmentBase$MultiSegmentBase.smali

.class public abstract Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;
.super Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase;
.source "SegmentBase.java"


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

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x409
    name = "MultiSegmentBase"
.end annotation


# instance fields
.field final duration:J

.field final segmentTimeline:Ljava/util/List;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/List<",
            "Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$SegmentTimelineElement;",
            ">;"
        }
    .end annotation
.end field

.field final startNumber:J


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

    return-void
.end method

.method public constructor <init>(Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;JJJJLjava/util/List;)V
    .registers 11
    .param p1, "initialization"    # Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;
    .param p2, "timescale"    # J
    .param p4, "presentationTimeOffset"    # J
    .param p6, "startNumber"    # J
    .param p8, "duration"    # J
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;",
            "JJJJ",
            "Ljava/util/List<",
            "Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$SegmentTimelineElement;",
            ">;)V"
        }
    .end annotation

    .line 127
    .local p10, "segmentTimeline":Ljava/util/List;, "Ljava/util/List<Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$SegmentTimelineElement;>;"
    invoke-direct/range {p0 .. p5}, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase;-><init>(Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;JJ)V

    .line 128
    iput-wide p6, p0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->startNumber:J

    .line 129
    iput-wide p8, p0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->duration:J

    .line 130
    iput-object p10, p0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->segmentTimeline:Ljava/util/List;

    .line 131
    return-void
.end method


# virtual methods
.method public getFirstSegmentNum()J
    .registers 3

    .line 204
    iget-wide v0, p0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->startNumber:J

    return-wide v0
.end method

.method public abstract getSegmentCount(J)I
.end method

.method public final getSegmentDurationUs(JJ)J
    .registers 12
    .param p1, "sequenceNumber"    # J
    .param p3, "periodDurationUs"    # J

    .line 169
    iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->segmentTimeline:Ljava/util/List;

    const-wide/32 v1, 0xf4240

    if-eqz v0, :cond_1a

    .line 170
    iget-wide v3, p0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->startNumber:J

    sub-long v3, p1, v3

    long-to-int v4, v3

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

    move-result-object v0

    check-cast v0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$SegmentTimelineElement;

    iget-wide v3, v0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$SegmentTimelineElement;->duration:J

    .line 171
    .local v3, "duration":J
    mul-long v1, v1, v3

    iget-wide v5, p0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->timescale:J

    div-long/2addr v1, v5

    return-wide v1

    .line 173
    .end local v3    # "duration":J
    :cond_1a
    invoke-virtual {p0, p3, p4}, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->getSegmentCount(J)I

    move-result v0

    .line 174
    .local v0, "segmentCount":I
    const/4 v3, -0x1

    if-eq v0, v3, :cond_35

    .line 175
    invoke-virtual {p0}, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->getFirstSegmentNum()J

    move-result-wide v3

    int-to-long v5, v0

    add-long/2addr v3, v5

    const-wide/16 v5, 0x1

    sub-long/2addr v3, v5

    cmp-long v5, p1, v3

    if-nez v5, :cond_35

    .line 176
    invoke-virtual {p0, p1, p2}, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->getSegmentTimeUs(J)J

    move-result-wide v1

    sub-long v1, p3, v1

    goto :goto_3d

    :cond_35
    iget-wide v3, p0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->duration:J

    mul-long v3, v3, v1

    iget-wide v1, p0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->timescale:J

    div-long v1, v3, v1

    .line 174
    :goto_3d
    return-wide v1
.end method

.method public getSegmentNum(JJ)J
    .registers 23
    .param p1, "timeUs"    # J
    .param p3, "periodDurationUs"    # J

    .line 135
    move-object/from16 v0, p0

    invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->getFirstSegmentNum()J

    move-result-wide v1

    .line 136
    .local v1, "firstSegmentNum":J
    move-wide/from16 v3, p3

    invoke-virtual {v0, v3, v4}, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->getSegmentCount(J)I

    move-result v5

    int-to-long v5, v5

    .line 137
    .local v5, "segmentCount":J
    const-wide/16 v7, 0x0

    cmp-long v9, v5, v7

    if-nez v9, :cond_14

    .line 138
    return-wide v1

    .line 140
    :cond_14
    iget-object v7, v0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->segmentTimeline:Ljava/util/List;

    const-wide/16 v8, 0x1

    if-nez v7, :cond_3f

    .line 142
    iget-wide v10, v0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->duration:J

    const-wide/32 v12, 0xf4240

    mul-long v10, v10, v12

    iget-wide v12, v0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->timescale:J

    div-long/2addr v10, v12

    .line 143
    .local v10, "durationUs":J
    iget-wide v12, v0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->startNumber:J

    div-long v14, p1, v10

    add-long/2addr v12, v14

    .line 145
    .local v12, "segmentNum":J
    cmp-long v7, v12, v1

    if-gez v7, :cond_2f

    move-wide v7, v1

    goto :goto_3e

    :cond_2f
    const-wide/16 v14, -0x1

    cmp-long v7, v5, v14

    if-nez v7, :cond_37

    move-wide v7, v12

    goto :goto_3e

    :cond_37
    add-long v14, v1, v5

    sub-long/2addr v14, v8

    .line 147
    invoke-static {v12, v13, v14, v15}, Ljava/lang/Math;->min(JJ)J

    move-result-wide v7

    .line 145
    :goto_3e
    return-wide v7

    .line 150
    .end local v10    # "durationUs":J
    .end local v12    # "segmentNum":J
    :cond_3f
    move-wide v10, v1

    .line 151
    .local v10, "lowIndex":J
    add-long v12, v1, v5

    sub-long/2addr v12, v8

    .line 152
    .local v12, "highIndex":J
    :goto_43
    cmp-long v7, v10, v12

    if-gtz v7, :cond_61

    .line 153
    sub-long v14, v12, v10

    const-wide/16 v16, 0x2

    div-long v14, v14, v16

    add-long/2addr v14, v10

    .line 154
    .local v14, "midIndex":J
    invoke-virtual {v0, v14, v15}, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->getSegmentTimeUs(J)J

    move-result-wide v16

    .line 155
    .local v16, "midTimeUs":J
    cmp-long v7, v16, p1

    if-gez v7, :cond_59

    .line 156
    add-long v10, v14, v8

    goto :goto_5f

    .line 157
    :cond_59
    cmp-long v7, v16, p1

    if-lez v7, :cond_60

    .line 158
    sub-long v12, v14, v8

    .line 162
    .end local v14    # "midIndex":J
    .end local v16    # "midTimeUs":J
    :goto_5f
    goto :goto_43

    .line 160
    .restart local v14    # "midIndex":J
    .restart local v16    # "midTimeUs":J
    :cond_60
    return-wide v14

    .line 163
    .end local v14    # "midIndex":J
    .end local v16    # "midTimeUs":J
    :cond_61
    cmp-long v7, v10, v1

    if-nez v7, :cond_67

    move-wide v7, v10

    goto :goto_68

    :cond_67
    move-wide v7, v12

    :goto_68
    return-wide v7
.end method

.method public final getSegmentTimeUs(J)J
    .registers 11
    .param p1, "sequenceNumber"    # J

    .line 184
    iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->segmentTimeline:Ljava/util/List;

    if-eqz v0, :cond_15

    .line 185
    iget-wide v1, p0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->startNumber:J

    sub-long v1, p1, v1

    long-to-int v2, v1

    .line 186
    invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$SegmentTimelineElement;

    iget-wide v0, v0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$SegmentTimelineElement;->startTime:J

    iget-wide v2, p0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->presentationTimeOffset:J

    sub-long/2addr v0, v2

    .local v0, "unscaledSegmentTime":J
    goto :goto_1d

    .line 189
    .end local v0    # "unscaledSegmentTime":J
    :cond_15
    iget-wide v0, p0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->startNumber:J

    sub-long v0, p1, v0

    iget-wide v2, p0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->duration:J

    mul-long v0, v0, v2

    .line 191
    .restart local v0    # "unscaledSegmentTime":J
    :goto_1d
    const-wide/32 v4, 0xf4240

    iget-wide v6, p0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->timescale:J

    move-wide v2, v0

    invoke-static/range {v2 .. v7}, Lcom/google/android/exoplayer2/util/Util;->scaleLargeTimestamp(JJJ)J

    move-result-wide v2

    return-wide v2
.end method

.method public abstract getSegmentUrl(Lcom/google/android/exoplayer2/source/dash/manifest/Representation;J)Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;
.end method

.method public isExplicit()Z
    .registers 2

    .line 216
    iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/manifest/SegmentBase$MultiSegmentBase;->segmentTimeline:Ljava/util/List;

    if-eqz v0, :cond_6

    const/4 v0, 0x1

    goto :goto_7

    :cond_6
    const/4 v0, 0x0

    :goto_7
    return v0
.end method