ClippingMediaSource$ClippingTimeline.smali
.class final Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;
.super Lcom/google/android/exoplayer2/source/ForwardingTimeline;
.source "ClippingMediaSource.java"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/google/android/exoplayer2/source/ClippingMediaSource;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x1a
name = "ClippingTimeline"
.end annotation
# instance fields
.field private final durationUs:J
.field private final endUs:J
.field private final isDynamic:Z
.field private final startUs:J
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(Lcom/google/android/exoplayer2/Timeline;JJ)V
.registers 24
.param p1, "timeline" # Lcom/google/android/exoplayer2/Timeline;
.param p2, "startUs" # J
.param p4, "endUs" # J
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/source/ClippingMediaSource$IllegalClippingException;
}
.end annotation
.line 319
move-object/from16 v0, p0
move-wide/from16 v1, p4
invoke-direct/range {p0 .. p1}, Lcom/google/android/exoplayer2/source/ForwardingTimeline;-><init>(Lcom/google/android/exoplayer2/Timeline;)V
.line 320
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/Timeline;->getPeriodCount()I
move-result v3
const/4 v4, 0x0
const/4 v5, 0x1
if-ne v3, v5, :cond_83
.line 323
new-instance v3, Lcom/google/android/exoplayer2/Timeline$Window;
invoke-direct {v3}, Lcom/google/android/exoplayer2/Timeline$Window;-><init>()V
move-object/from16 v6, p1
invoke-virtual {v6, v4, v3}, Lcom/google/android/exoplayer2/Timeline;->getWindow(ILcom/google/android/exoplayer2/Timeline$Window;)Lcom/google/android/exoplayer2/Timeline$Window;
move-result-object v3
.line 324
.local v3, "window":Lcom/google/android/exoplayer2/Timeline$Window;
const-wide/16 v7, 0x0
move-wide/from16 v9, p2
invoke-static {v7, v8, v9, v10}, Ljava/lang/Math;->max(JJ)J
move-result-wide v9
.line 325
.end local p2 # "startUs":J
.local v9, "startUs":J
const-wide/high16 v11, -0x8000000000000000L
cmp-long v13, v1, v11
if-nez v13, :cond_2b
iget-wide v11, v3, Lcom/google/android/exoplayer2/Timeline$Window;->durationUs:J
goto :goto_2f
:cond_2b
invoke-static {v7, v8, v1, v2}, Ljava/lang/Math;->max(JJ)J
move-result-wide v11
.line 326
.local v11, "resolvedEndUs":J
:goto_2f
iget-wide v13, v3, Lcom/google/android/exoplayer2/Timeline$Window;->durationUs:J
const-wide v15, -0x7fffffffffffffffL # -4.9E-324
cmp-long v17, v13, v15
if-eqz v17, :cond_5d
.line 327
iget-wide v13, v3, Lcom/google/android/exoplayer2/Timeline$Window;->durationUs:J
cmp-long v17, v11, v13
if-lez v17, :cond_42
.line 328
iget-wide v11, v3, Lcom/google/android/exoplayer2/Timeline$Window;->durationUs:J
.line 330
:cond_42
cmp-long v13, v9, v7
if-eqz v13, :cond_51
iget-boolean v7, v3, Lcom/google/android/exoplayer2/Timeline$Window;->isSeekable:Z
if-eqz v7, :cond_4b
goto :goto_51
.line 331
:cond_4b
new-instance v4, Lcom/google/android/exoplayer2/source/ClippingMediaSource$IllegalClippingException;
invoke-direct {v4, v5}, Lcom/google/android/exoplayer2/source/ClippingMediaSource$IllegalClippingException;-><init>(I)V
throw v4
.line 333
:cond_51
:goto_51
cmp-long v7, v9, v11
if-gtz v7, :cond_56
goto :goto_5d
.line 334
:cond_56
new-instance v4, Lcom/google/android/exoplayer2/source/ClippingMediaSource$IllegalClippingException;
const/4 v5, 0x2
invoke-direct {v4, v5}, Lcom/google/android/exoplayer2/source/ClippingMediaSource$IllegalClippingException;-><init>(I)V
throw v4
.line 337
:cond_5d
:goto_5d
iput-wide v9, v0, Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;->startUs:J
.line 338
iput-wide v11, v0, Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;->endUs:J
.line 339
cmp-long v7, v11, v15
if-nez v7, :cond_67
move-wide v7, v15
goto :goto_69
:cond_67
sub-long v7, v11, v9
:goto_69
iput-wide v7, v0, Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;->durationUs:J
.line 340
iget-boolean v7, v3, Lcom/google/android/exoplayer2/Timeline$Window;->isDynamic:Z
if-eqz v7, :cond_80
cmp-long v7, v11, v15
if-eqz v7, :cond_7f
iget-wide v7, v3, Lcom/google/android/exoplayer2/Timeline$Window;->durationUs:J
cmp-long v13, v7, v15
if-eqz v13, :cond_80
iget-wide v7, v3, Lcom/google/android/exoplayer2/Timeline$Window;->durationUs:J
cmp-long v13, v11, v7
if-nez v13, :cond_80
:cond_7f
const/4 v4, 0x1
:cond_80
iput-boolean v4, v0, Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;->isDynamic:Z
.line 344
return-void
.line 321
.end local v3 # "window":Lcom/google/android/exoplayer2/Timeline$Window;
.end local v9 # "startUs":J
.end local v11 # "resolvedEndUs":J
.restart local p2 # "startUs":J
:cond_83
move-object/from16 v6, p1
move-wide/from16 v9, p2
new-instance v3, Lcom/google/android/exoplayer2/source/ClippingMediaSource$IllegalClippingException;
invoke-direct {v3, v4}, Lcom/google/android/exoplayer2/source/ClippingMediaSource$IllegalClippingException;-><init>(I)V
throw v3
.end method
# virtual methods
.method public getPeriod(ILcom/google/android/exoplayer2/Timeline$Period;Z)Lcom/google/android/exoplayer2/Timeline$Period;
.registers 16
.param p1, "periodIndex" # I
.param p2, "period" # Lcom/google/android/exoplayer2/Timeline$Period;
.param p3, "setIds" # Z
.line 372
iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;->timeline:Lcom/google/android/exoplayer2/Timeline;
const/4 v1, 0x0
invoke-virtual {v0, v1, p2, p3}, Lcom/google/android/exoplayer2/Timeline;->getPeriod(ILcom/google/android/exoplayer2/Timeline$Period;Z)Lcom/google/android/exoplayer2/Timeline$Period;
.line 373
invoke-virtual {p2}, Lcom/google/android/exoplayer2/Timeline$Period;->getPositionInWindowUs()J
move-result-wide v0
iget-wide v2, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;->startUs:J
sub-long/2addr v0, v2
.line 374
.local v0, "positionInClippedWindowUs":J
iget-wide v2, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;->durationUs:J
const-wide v4, -0x7fffffffffffffffL # -4.9E-324
cmp-long v6, v2, v4
if-nez v6, :cond_1a
move-wide v8, v4
goto :goto_1c
:cond_1a
sub-long/2addr v2, v0
move-wide v8, v2
.line 376
.local v8, "periodDurationUs":J
:goto_1c
iget-object v5, p2, Lcom/google/android/exoplayer2/Timeline$Period;->id:Ljava/lang/Object;
iget-object v6, p2, Lcom/google/android/exoplayer2/Timeline$Period;->uid:Ljava/lang/Object;
const/4 v7, 0x0
move-object v4, p2
move-wide v10, v0
invoke-virtual/range {v4 .. v11}, Lcom/google/android/exoplayer2/Timeline$Period;->set(Ljava/lang/Object;Ljava/lang/Object;IJJ)Lcom/google/android/exoplayer2/Timeline$Period;
move-result-object v2
return-object v2
.end method
.method public getWindow(ILcom/google/android/exoplayer2/Timeline$Window;ZJ)Lcom/google/android/exoplayer2/Timeline$Window;
.registers 13
.param p1, "windowIndex" # I
.param p2, "window" # Lcom/google/android/exoplayer2/Timeline$Window;
.param p3, "setTag" # Z
.param p4, "defaultPositionProjectionUs" # J
.line 349
iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;->timeline:Lcom/google/android/exoplayer2/Timeline;
const/4 v1, 0x0
const-wide/16 v4, 0x0
move-object v2, p2
move v3, p3
invoke-virtual/range {v0 .. v5}, Lcom/google/android/exoplayer2/Timeline;->getWindow(ILcom/google/android/exoplayer2/Timeline$Window;ZJ)Lcom/google/android/exoplayer2/Timeline$Window;
.line 351
iget-wide v0, p2, Lcom/google/android/exoplayer2/Timeline$Window;->positionInFirstPeriodUs:J
iget-wide v2, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;->startUs:J
add-long/2addr v0, v2
iput-wide v0, p2, Lcom/google/android/exoplayer2/Timeline$Window;->positionInFirstPeriodUs:J
.line 352
iget-wide v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;->durationUs:J
iput-wide v0, p2, Lcom/google/android/exoplayer2/Timeline$Window;->durationUs:J
.line 353
iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;->isDynamic:Z
iput-boolean v0, p2, Lcom/google/android/exoplayer2/Timeline$Window;->isDynamic:Z
.line 354
iget-wide v0, p2, Lcom/google/android/exoplayer2/Timeline$Window;->defaultPositionUs:J
const-wide v2, -0x7fffffffffffffffL # -4.9E-324
cmp-long v4, v0, v2
if-eqz v4, :cond_46
.line 355
iget-wide v0, p2, Lcom/google/android/exoplayer2/Timeline$Window;->defaultPositionUs:J
iget-wide v4, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;->startUs:J
invoke-static {v0, v1, v4, v5}, Ljava/lang/Math;->max(JJ)J
move-result-wide v0
iput-wide v0, p2, Lcom/google/android/exoplayer2/Timeline$Window;->defaultPositionUs:J
.line 356
iget-wide v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;->endUs:J
cmp-long v4, v0, v2
iget-wide v0, p2, Lcom/google/android/exoplayer2/Timeline$Window;->defaultPositionUs:J
if-nez v4, :cond_37
goto :goto_3d
:cond_37
iget-wide v4, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;->endUs:J
.line 357
invoke-static {v0, v1, v4, v5}, Ljava/lang/Math;->min(JJ)J
move-result-wide v0
:goto_3d
iput-wide v0, p2, Lcom/google/android/exoplayer2/Timeline$Window;->defaultPositionUs:J
.line 358
iget-wide v0, p2, Lcom/google/android/exoplayer2/Timeline$Window;->defaultPositionUs:J
iget-wide v4, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;->startUs:J
sub-long/2addr v0, v4
iput-wide v0, p2, Lcom/google/android/exoplayer2/Timeline$Window;->defaultPositionUs:J
.line 360
:cond_46
iget-wide v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;->startUs:J
invoke-static {v0, v1}, Lcom/google/android/exoplayer2/C;->usToMs(J)J
move-result-wide v0
.line 361
.local v0, "startMs":J
iget-wide v4, p2, Lcom/google/android/exoplayer2/Timeline$Window;->presentationStartTimeMs:J
cmp-long v6, v4, v2
if-eqz v6, :cond_57
.line 362
iget-wide v4, p2, Lcom/google/android/exoplayer2/Timeline$Window;->presentationStartTimeMs:J
add-long/2addr v4, v0
iput-wide v4, p2, Lcom/google/android/exoplayer2/Timeline$Window;->presentationStartTimeMs:J
.line 364
:cond_57
iget-wide v4, p2, Lcom/google/android/exoplayer2/Timeline$Window;->windowStartTimeMs:J
cmp-long v6, v4, v2
if-eqz v6, :cond_62
.line 365
iget-wide v2, p2, Lcom/google/android/exoplayer2/Timeline$Window;->windowStartTimeMs:J
add-long/2addr v2, v0
iput-wide v2, p2, Lcom/google/android/exoplayer2/Timeline$Window;->windowStartTimeMs:J
.line 367
:cond_62
return-object p2
.end method