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