ClippingMediaSource.smali
.class public final Lcom/google/android/exoplayer2/source/ClippingMediaSource;
.super Lcom/google/android/exoplayer2/source/CompositeMediaSource;
.source "ClippingMediaSource.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;,
Lcom/google/android/exoplayer2/source/ClippingMediaSource$IllegalClippingException;
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/google/android/exoplayer2/source/CompositeMediaSource<",
"Ljava/lang/Void;",
">;"
}
.end annotation
# instance fields
.field private final allowDynamicClippingUpdates:Z
.field private clippingError:Lcom/google/android/exoplayer2/source/ClippingMediaSource$IllegalClippingException;
.field private clippingTimeline:Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;
.field private final enableInitialDiscontinuity:Z
.field private final endUs:J
.field private manifest:Ljava/lang/Object;
.field private final mediaPeriods:Ljava/util/ArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayList<",
"Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;",
">;"
}
.end annotation
.end field
.field private final mediaSource:Lcom/google/android/exoplayer2/source/MediaSource;
.field private periodEndUs:J
.field private periodStartUs:J
.field private final relativeToDefaultPosition:Z
.field private final startUs:J
.field private final window:Lcom/google/android/exoplayer2/Timeline$Window;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(Lcom/google/android/exoplayer2/source/MediaSource;J)V
.registers 13
.param p1, "mediaSource" # Lcom/google/android/exoplayer2/source/MediaSource;
.param p2, "durationUs" # J
.line 128
const-wide/16 v2, 0x0
const/4 v6, 0x1
const/4 v7, 0x0
const/4 v8, 0x1
move-object v0, p0
move-object v1, p1
move-wide v4, p2
invoke-direct/range {v0 .. v8}, Lcom/google/android/exoplayer2/source/ClippingMediaSource;-><init>(Lcom/google/android/exoplayer2/source/MediaSource;JJZZZ)V
.line 135
return-void
.end method
.method public constructor <init>(Lcom/google/android/exoplayer2/source/MediaSource;JJ)V
.registers 15
.param p1, "mediaSource" # Lcom/google/android/exoplayer2/source/MediaSource;
.param p2, "startPositionUs" # J
.param p4, "endPositionUs" # J
.line 109
const/4 v6, 0x1
const/4 v7, 0x0
const/4 v8, 0x0
move-object v0, p0
move-object v1, p1
move-wide v2, p2
move-wide v4, p4
invoke-direct/range {v0 .. v8}, Lcom/google/android/exoplayer2/source/ClippingMediaSource;-><init>(Lcom/google/android/exoplayer2/source/MediaSource;JJZZZ)V
.line 116
return-void
.end method
.method public constructor <init>(Lcom/google/android/exoplayer2/source/MediaSource;JJZZZ)V
.registers 12
.param p1, "mediaSource" # Lcom/google/android/exoplayer2/source/MediaSource;
.param p2, "startPositionUs" # J
.param p4, "endPositionUs" # J
.param p6, "enableInitialDiscontinuity" # Z
.param p7, "allowDynamicClippingUpdates" # Z
.param p8, "relativeToDefaultPosition" # Z
.line 176
invoke-direct {p0}, Lcom/google/android/exoplayer2/source/CompositeMediaSource;-><init>()V
.line 177
const-wide/16 v0, 0x0
cmp-long v2, p2, v0
if-ltz v2, :cond_b
const/4 v0, 0x1
goto :goto_c
:cond_b
const/4 v0, 0x0
:goto_c
invoke-static {v0}, Lcom/google/android/exoplayer2/util/Assertions;->checkArgument(Z)V
.line 178
invoke-static {p1}, Lcom/google/android/exoplayer2/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/android/exoplayer2/source/MediaSource;
iput-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->mediaSource:Lcom/google/android/exoplayer2/source/MediaSource;
.line 179
iput-wide p2, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->startUs:J
.line 180
iput-wide p4, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->endUs:J
.line 181
iput-boolean p6, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->enableInitialDiscontinuity:Z
.line 182
iput-boolean p7, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->allowDynamicClippingUpdates:Z
.line 183
iput-boolean p8, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->relativeToDefaultPosition:Z
.line 184
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->mediaPeriods:Ljava/util/ArrayList;
.line 185
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/source/ClippingMediaSource;->window:Lcom/google/android/exoplayer2/Timeline$Window;
.line 186
return-void
.end method
.method private refreshClippedTimeline(Lcom/google/android/exoplayer2/Timeline;)V
.registers 18
.param p1, "timeline" # Lcom/google/android/exoplayer2/Timeline;
.line 249
move-object/from16 v1, p0
iget-object v0, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->window:Lcom/google/android/exoplayer2/Timeline$Window;
const/4 v2, 0x0
move-object/from16 v9, p1
invoke-virtual {v9, v2, v0}, Lcom/google/android/exoplayer2/Timeline;->getWindow(ILcom/google/android/exoplayer2/Timeline$Window;)Lcom/google/android/exoplayer2/Timeline$Window;
.line 250
iget-object v0, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->window:Lcom/google/android/exoplayer2/Timeline$Window;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/Timeline$Window;->getPositionInFirstPeriodUs()J
move-result-wide v10
.line 251
.local v10, "windowPositionInPeriodUs":J
iget-object v0, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->clippingTimeline:Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;
const-wide/high16 v2, -0x8000000000000000L
if-eqz v0, :cond_33
iget-object v0, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->mediaPeriods:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->isEmpty()Z
move-result v0
if-nez v0, :cond_33
iget-boolean v0, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->allowDynamicClippingUpdates:Z
if-eqz v0, :cond_23
goto :goto_33
.line 270
:cond_23
iget-wide v4, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->periodStartUs:J
sub-long/2addr v4, v10
.line 271
.local v4, "windowStartUs":J
iget-wide v6, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->endUs:J
cmp-long v0, v6, v2
if-nez v0, :cond_2d
goto :goto_30
:cond_2d
iget-wide v2, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->periodEndUs:J
sub-long/2addr v2, v10
:goto_30
move-wide v12, v2
move-wide v14, v4
.local v2, "windowEndUs":J
goto :goto_6f
.line 252
.end local v2 # "windowEndUs":J
.end local v4 # "windowStartUs":J
:cond_33
:goto_33
iget-wide v4, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->startUs:J
.line 253
.restart local v4 # "windowStartUs":J
iget-wide v6, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->endUs:J
.line 254
.local v6, "windowEndUs":J
iget-boolean v0, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->relativeToDefaultPosition:Z
if-eqz v0, :cond_43
.line 255
iget-object v0, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->window:Lcom/google/android/exoplayer2/Timeline$Window;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/Timeline$Window;->getDefaultPositionUs()J
move-result-wide v12
.line 256
.local v12, "windowDefaultPositionUs":J
add-long/2addr v4, v12
.line 257
add-long/2addr v6, v12
.line 259
.end local v12 # "windowDefaultPositionUs":J
:cond_43
add-long v12, v10, v4
iput-wide v12, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->periodStartUs:J
.line 260
iget-wide v12, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->endUs:J
cmp-long v0, v12, v2
if-nez v0, :cond_4e
goto :goto_50
:cond_4e
add-long v2, v10, v6
:goto_50
iput-wide v2, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->periodEndUs:J
.line 264
iget-object v0, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->mediaPeriods:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v0
.line 265
.local v0, "count":I
const/4 v2, 0x0
.local v2, "i":I
:goto_59
if-ge v2, v0, :cond_6d
.line 266
iget-object v3, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->mediaPeriods:Ljava/util/ArrayList;
invoke-virtual {v3, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v3
check-cast v3, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;
iget-wide v12, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->periodStartUs:J
iget-wide v14, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->periodEndUs:J
invoke-virtual {v3, v12, v13, v14, v15}, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->updateClipping(JJ)V
.line 265
add-int/lit8 v2, v2, 0x1
goto :goto_59
.line 268
.end local v0 # "count":I
.end local v2 # "i":I
:cond_6d
move-wide v14, v4
move-wide v12, v6
.line 277
.end local v4 # "windowStartUs":J
.end local v6 # "windowEndUs":J
.local v12, "windowEndUs":J
.local v14, "windowStartUs":J
:goto_6f
:try_start_6f
new-instance v0, Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;
move-object v3, v0
move-object/from16 v4, p1
move-wide v5, v14
move-wide v7, v12
invoke-direct/range {v3 .. v8}, Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;-><init>(Lcom/google/android/exoplayer2/Timeline;JJ)V
iput-object v0, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->clippingTimeline:Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;
:try_end_7b
.catch Lcom/google/android/exoplayer2/source/ClippingMediaSource$IllegalClippingException; {:try_start_6f .. :try_end_7b} :catch_82
.line 281
nop
.line 282
iget-object v2, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->manifest:Ljava/lang/Object;
invoke-virtual {v1, v0, v2}, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->refreshSourceInfo(Lcom/google/android/exoplayer2/Timeline;Ljava/lang/Object;)V
.line 283
return-void
.line 278
:catch_82
move-exception v0
.line 279
.local v0, "e":Lcom/google/android/exoplayer2/source/ClippingMediaSource$IllegalClippingException;
iput-object v0, v1, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->clippingError:Lcom/google/android/exoplayer2/source/ClippingMediaSource$IllegalClippingException;
.line 280
return-void
.end method
# virtual methods
.method public createPeriod(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;Lcom/google/android/exoplayer2/upstream/Allocator;J)Lcom/google/android/exoplayer2/source/MediaPeriod;
.registers 13
.param p1, "id" # Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.param p2, "allocator" # Lcom/google/android/exoplayer2/upstream/Allocator;
.param p3, "startPositionUs" # J
.line 210
new-instance v7, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;
iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->mediaSource:Lcom/google/android/exoplayer2/source/MediaSource;
.line 212
invoke-interface {v0, p1, p2, p3, p4}, Lcom/google/android/exoplayer2/source/MediaSource;->createPeriod(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;Lcom/google/android/exoplayer2/upstream/Allocator;J)Lcom/google/android/exoplayer2/source/MediaPeriod;
move-result-object v1
iget-boolean v2, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->enableInitialDiscontinuity:Z
iget-wide v3, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->periodStartUs:J
iget-wide v5, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->periodEndUs:J
move-object v0, v7
invoke-direct/range {v0 .. v6}, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;-><init>(Lcom/google/android/exoplayer2/source/MediaPeriod;ZJJ)V
.line 216
.local v0, "mediaPeriod":Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;
iget-object v1, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->mediaPeriods:Ljava/util/ArrayList;
invoke-virtual {v1, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 217
return-object v0
.end method
.method protected bridge synthetic getMediaTimeForChildMediaTime(Ljava/lang/Object;J)J
.registers 4
.line 35
check-cast p1, Ljava/lang/Void;
invoke-virtual {p0, p1, p2, p3}, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->getMediaTimeForChildMediaTime(Ljava/lang/Void;J)J
move-result-wide p1
return-wide p1
.end method
.method protected getMediaTimeForChildMediaTime(Ljava/lang/Void;J)J
.registers 13
.param p1, "id" # Ljava/lang/Void;
.param p2, "mediaTimeMs" # J
.line 287
const-wide v0, -0x7fffffffffffffffL # -4.9E-324
cmp-long v2, p2, v0
if-nez v2, :cond_a
.line 288
return-wide v0
.line 290
:cond_a
iget-wide v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->startUs:J
invoke-static {v0, v1}, Lcom/google/android/exoplayer2/C;->usToMs(J)J
move-result-wide v0
.line 291
.local v0, "startMs":J
const-wide/16 v2, 0x0
sub-long v4, p2, v0
invoke-static {v2, v3, v4, v5}, Ljava/lang/Math;->max(JJ)J
move-result-wide v2
.line 292
.local v2, "clippedTimeMs":J
iget-wide v4, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->endUs:J
const-wide/high16 v6, -0x8000000000000000L
cmp-long v8, v4, v6
if-eqz v8, :cond_29
.line 293
invoke-static {v4, v5}, Lcom/google/android/exoplayer2/C;->usToMs(J)J
move-result-wide v4
sub-long/2addr v4, v0
invoke-static {v4, v5, v2, v3}, Ljava/lang/Math;->min(JJ)J
move-result-wide v2
.line 295
:cond_29
return-wide v2
.end method
.method public getTag()Ljava/lang/Object;
.registers 2
.line 191
iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->mediaSource:Lcom/google/android/exoplayer2/source/MediaSource;
invoke-interface {v0}, Lcom/google/android/exoplayer2/source/MediaSource;->getTag()Ljava/lang/Object;
move-result-object v0
return-object v0
.end method
.method public maybeThrowSourceInfoRefreshError()V
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 202
iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->clippingError:Lcom/google/android/exoplayer2/source/ClippingMediaSource$IllegalClippingException;
if-nez v0, :cond_8
.line 205
invoke-super {p0}, Lcom/google/android/exoplayer2/source/CompositeMediaSource;->maybeThrowSourceInfoRefreshError()V
.line 206
return-void
.line 203
:cond_8
throw v0
.end method
.method protected bridge synthetic onChildSourceInfoRefreshed(Ljava/lang/Object;Lcom/google/android/exoplayer2/source/MediaSource;Lcom/google/android/exoplayer2/Timeline;Ljava/lang/Object;)V
.registers 5
.line 35
check-cast p1, Ljava/lang/Void;
invoke-virtual {p0, p1, p2, p3, p4}, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->onChildSourceInfoRefreshed(Ljava/lang/Void;Lcom/google/android/exoplayer2/source/MediaSource;Lcom/google/android/exoplayer2/Timeline;Ljava/lang/Object;)V
return-void
.end method
.method protected onChildSourceInfoRefreshed(Ljava/lang/Void;Lcom/google/android/exoplayer2/source/MediaSource;Lcom/google/android/exoplayer2/Timeline;Ljava/lang/Object;)V
.registers 6
.param p1, "id" # Ljava/lang/Void;
.param p2, "mediaSource" # Lcom/google/android/exoplayer2/source/MediaSource;
.param p3, "timeline" # Lcom/google/android/exoplayer2/Timeline;
.param p4, "manifest" # Ljava/lang/Object;
.line 239
iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->clippingError:Lcom/google/android/exoplayer2/source/ClippingMediaSource$IllegalClippingException;
if-eqz v0, :cond_5
.line 240
return-void
.line 242
:cond_5
iput-object p4, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->manifest:Ljava/lang/Object;
.line 243
invoke-direct {p0, p3}, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->refreshClippedTimeline(Lcom/google/android/exoplayer2/Timeline;)V
.line 244
return-void
.end method
.method public prepareSourceInternal(Lcom/google/android/exoplayer2/upstream/TransferListener;)V
.registers 4
.param p1, "mediaTransferListener" # Lcom/google/android/exoplayer2/upstream/TransferListener;
.line 196
invoke-super {p0, p1}, Lcom/google/android/exoplayer2/source/CompositeMediaSource;->prepareSourceInternal(Lcom/google/android/exoplayer2/upstream/TransferListener;)V
.line 197
iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->mediaSource:Lcom/google/android/exoplayer2/source/MediaSource;
const/4 v1, 0x0
invoke-virtual {p0, v1, v0}, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->prepareChildSource(Ljava/lang/Object;Lcom/google/android/exoplayer2/source/MediaSource;)V
.line 198
return-void
.end method
.method public releasePeriod(Lcom/google/android/exoplayer2/source/MediaPeriod;)V
.registers 4
.param p1, "mediaPeriod" # Lcom/google/android/exoplayer2/source/MediaPeriod;
.line 222
iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->mediaPeriods:Ljava/util/ArrayList;
invoke-virtual {v0, p1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
move-result v0
invoke-static {v0}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V
.line 223
iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->mediaSource:Lcom/google/android/exoplayer2/source/MediaSource;
move-object v1, p1
check-cast v1, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;
iget-object v1, v1, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod;
invoke-interface {v0, v1}, Lcom/google/android/exoplayer2/source/MediaSource;->releasePeriod(Lcom/google/android/exoplayer2/source/MediaPeriod;)V
.line 224
iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->mediaPeriods:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->isEmpty()Z
move-result v0
if-eqz v0, :cond_26
iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->allowDynamicClippingUpdates:Z
if-nez v0, :cond_26
.line 225
iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->clippingTimeline:Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;
iget-object v0, v0, Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;->timeline:Lcom/google/android/exoplayer2/Timeline;
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->refreshClippedTimeline(Lcom/google/android/exoplayer2/Timeline;)V
.line 227
:cond_26
return-void
.end method
.method public releaseSourceInternal()V
.registers 2
.line 231
invoke-super {p0}, Lcom/google/android/exoplayer2/source/CompositeMediaSource;->releaseSourceInternal()V
.line 232
const/4 v0, 0x0
iput-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->clippingError:Lcom/google/android/exoplayer2/source/ClippingMediaSource$IllegalClippingException;
.line 233
iput-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaSource;->clippingTimeline:Lcom/google/android/exoplayer2/source/ClippingMediaSource$ClippingTimeline;
.line 234
return-void
.end method