.class public final Lcom/google/android/exoplayer2/source/ClippingMediaPeriod; .super Ljava/lang/Object; .source "ClippingMediaPeriod.java" # interfaces .implements Lcom/google/android/exoplayer2/source/MediaPeriod; .implements Lcom/google/android/exoplayer2/source/MediaPeriod$Callback; # annotations .annotation system Ldalvik/annotation/MemberClasses; value = { Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream; } .end annotation # instance fields .field private callback:Lcom/google/android/exoplayer2/source/MediaPeriod$Callback; .field private endUs:J .field public final mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod; .field private pendingInitialDiscontinuity:Z .field private sampleStreams:[Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream; .field private startUs:J # direct methods .method public constructor (Lcom/google/android/exoplayer2/source/MediaPeriod;)V .locals 2 .line 1 invoke-direct {p0}, Ljava/lang/Object;->()V .line 2 iput-object p1, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod; const-wide v0, -0x7fffffffffffffffL # -4.9E-324 .line 3 iput-wide v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->startUs:J .line 4 iput-wide v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->endUs:J const/4 p1, 0x0 new-array p1, p1, [Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream; .line 5 iput-object p1, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->sampleStreams:[Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream; return-void .end method # virtual methods .method public continueLoading(J)Z .locals 3 .line 1 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod; iget-wide v1, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->startUs:J add-long/2addr p1, v1 invoke-interface {v0, p1, p2}, Lcom/google/android/exoplayer2/source/MediaPeriod;->continueLoading(J)Z move-result p1 return p1 .end method .method public discardBuffer(J)V .locals 3 .line 1 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod; iget-wide v1, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->startUs:J add-long/2addr p1, v1 invoke-interface {v0, p1, p2}, Lcom/google/android/exoplayer2/source/MediaPeriod;->discardBuffer(J)V return-void .end method .method public getBufferedPositionUs()J .locals 7 .line 1 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod; invoke-interface {v0}, Lcom/google/android/exoplayer2/source/MediaPeriod;->getBufferedPositionUs()J move-result-wide v0 const-wide/high16 v2, -0x8000000000000000L cmp-long v4, v0, v2 if-eqz v4, :cond_1 .line 2 iget-wide v4, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->endUs:J cmp-long v6, v4, v2 if-eqz v6, :cond_0 cmp-long v4, v0, v4 if-ltz v4, :cond_0 goto :goto_0 :cond_0 const-wide/16 v2, 0x0 .line 3 iget-wide v4, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->startUs:J sub-long/2addr v0, v4 invoke-static {v2, v3, v0, v1}, Ljava/lang/Math;->max(JJ)J move-result-wide v0 return-wide v0 :cond_1 :goto_0 return-wide v2 .end method .method public getNextLoadPositionUs()J .locals 7 .line 1 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod; invoke-interface {v0}, Lcom/google/android/exoplayer2/source/MediaPeriod;->getNextLoadPositionUs()J move-result-wide v0 const-wide/high16 v2, -0x8000000000000000L cmp-long v4, v0, v2 if-eqz v4, :cond_1 .line 2 iget-wide v4, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->endUs:J cmp-long v6, v4, v2 if-eqz v6, :cond_0 cmp-long v4, v0, v4 if-ltz v4, :cond_0 goto :goto_0 .line 3 :cond_0 iget-wide v2, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->startUs:J sub-long/2addr v0, v2 return-wide v0 :cond_1 :goto_0 return-wide v2 .end method .method public getTrackGroups()Lcom/google/android/exoplayer2/source/TrackGroupArray; .locals 1 .line 1 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod; invoke-interface {v0}, Lcom/google/android/exoplayer2/source/MediaPeriod;->getTrackGroups()Lcom/google/android/exoplayer2/source/TrackGroupArray; move-result-object v0 return-object v0 .end method .method public maybeThrowPrepareError()V .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 1 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod; invoke-interface {v0}, Lcom/google/android/exoplayer2/source/MediaPeriod;->maybeThrowPrepareError()V return-void .end method .method public onContinueLoadingRequested(Lcom/google/android/exoplayer2/source/MediaPeriod;)V .locals 0 .line 2 iget-object p1, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->callback:Lcom/google/android/exoplayer2/source/MediaPeriod$Callback; invoke-interface {p1, p0}, Lcom/google/android/exoplayer2/source/SequenceableLoader$Callback;->onContinueLoadingRequested(Lcom/google/android/exoplayer2/source/SequenceableLoader;)V return-void .end method .method public bridge synthetic onContinueLoadingRequested(Lcom/google/android/exoplayer2/source/SequenceableLoader;)V .locals 0 .line 1 check-cast p1, Lcom/google/android/exoplayer2/source/MediaPeriod; invoke-virtual {p0, p1}, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->onContinueLoadingRequested(Lcom/google/android/exoplayer2/source/MediaPeriod;)V return-void .end method .method public onPrepared(Lcom/google/android/exoplayer2/source/MediaPeriod;)V .locals 6 .line 1 iget-wide v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->startUs:J const-wide v2, -0x7fffffffffffffffL # -4.9E-324 cmp-long p1, v0, v2 const/4 v0, 0x1 const/4 v1, 0x0 if-eqz p1, :cond_0 iget-wide v4, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->endUs:J cmp-long p1, v4, v2 if-eqz p1, :cond_0 move p1, v0 goto :goto_0 :cond_0 move p1, v1 :goto_0 invoke-static {p1}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V .line 2 iget-wide v2, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->startUs:J const-wide/16 v4, 0x0 cmp-long p1, v2, v4 if-eqz p1, :cond_1 goto :goto_1 :cond_1 move v0, v1 :goto_1 iput-boolean v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->pendingInitialDiscontinuity:Z .line 3 iget-object p1, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->callback:Lcom/google/android/exoplayer2/source/MediaPeriod$Callback; invoke-interface {p1, p0}, Lcom/google/android/exoplayer2/source/MediaPeriod$Callback;->onPrepared(Lcom/google/android/exoplayer2/source/MediaPeriod;)V return-void .end method .method public prepare(Lcom/google/android/exoplayer2/source/MediaPeriod$Callback;)V .locals 0 .line 1 iput-object p1, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->callback:Lcom/google/android/exoplayer2/source/MediaPeriod$Callback; .line 2 iget-object p1, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod; invoke-interface {p1, p0}, Lcom/google/android/exoplayer2/source/MediaPeriod;->prepare(Lcom/google/android/exoplayer2/source/MediaPeriod$Callback;)V return-void .end method .method public readDiscontinuity()J .locals 10 .line 1 iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->pendingInitialDiscontinuity:Z const-wide v1, -0x7fffffffffffffffL # -4.9E-324 const/4 v3, 0x0 if-eqz v0, :cond_3 .line 2 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->sampleStreams:[Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream; array-length v4, v0 move v5, v3 :goto_0 if-ge v5, v4, :cond_1 aget-object v6, v0, v5 if-eqz v6, :cond_0 .line 3 invoke-virtual {v6}, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream;->clearPendingDiscontinuity()V :cond_0 add-int/lit8 v5, v5, 0x1 goto :goto_0 .line 4 :cond_1 iput-boolean v3, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->pendingInitialDiscontinuity:Z .line 5 invoke-virtual {p0}, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->readDiscontinuity()J move-result-wide v3 cmp-long v0, v3, v1 if-eqz v0, :cond_2 goto :goto_1 :cond_2 const-wide/16 v3, 0x0 :goto_1 return-wide v3 .line 6 :cond_3 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod; invoke-interface {v0}, Lcom/google/android/exoplayer2/source/MediaPeriod;->readDiscontinuity()J move-result-wide v4 cmp-long v0, v4, v1 if-nez v0, :cond_4 return-wide v1 .line 7 :cond_4 iget-wide v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->startUs:J cmp-long v0, v4, v0 const/4 v1, 0x1 if-ltz v0, :cond_5 move v0, v1 goto :goto_2 :cond_5 move v0, v3 :goto_2 invoke-static {v0}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V .line 8 iget-wide v6, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->endUs:J const-wide/high16 v8, -0x8000000000000000L cmp-long v0, v6, v8 if-eqz v0, :cond_6 cmp-long v0, v4, v6 if-gtz v0, :cond_7 :cond_6 move v3, v1 :cond_7 invoke-static {v3}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V .line 9 iget-wide v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->startUs:J sub-long/2addr v4, v0 return-wide v4 .end method .method public seekToUs(J)J .locals 5 .line 1 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->sampleStreams:[Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream; array-length v1, v0 const/4 v2, 0x0 move v3, v2 :goto_0 if-ge v3, v1, :cond_1 aget-object v4, v0, v3 if-eqz v4, :cond_0 .line 2 invoke-virtual {v4}, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream;->clearSentEos()V :cond_0 add-int/lit8 v3, v3, 0x1 goto :goto_0 .line 3 :cond_1 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod; iget-wide v3, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->startUs:J add-long/2addr v3, p1 invoke-interface {v0, v3, v4}, Lcom/google/android/exoplayer2/source/MediaPeriod;->seekToUs(J)J move-result-wide v0 .line 4 iget-wide v3, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->startUs:J add-long/2addr p1, v3 cmp-long p1, v0, p1 if-eqz p1, :cond_2 cmp-long p1, v0, v3 if-ltz p1, :cond_3 iget-wide p1, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->endUs:J const-wide/high16 v3, -0x8000000000000000L cmp-long v3, p1, v3 if-eqz v3, :cond_2 cmp-long p1, v0, p1 if-gtz p1, :cond_3 :cond_2 const/4 v2, 0x1 :cond_3 invoke-static {v2}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V .line 5 iget-wide p1, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->startUs:J sub-long/2addr v0, p1 return-wide v0 .end method .method public selectTracks([Lcom/google/android/exoplayer2/trackselection/TrackSelection;[Z[Lcom/google/android/exoplayer2/source/SampleStream;[ZJ)J .locals 17 move-object/from16 v8, p0 move-object/from16 v9, p3 .line 1 array-length v0, v9 new-array v0, v0, [Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream; iput-object v0, v8, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->sampleStreams:[Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream; .line 2 array-length v0, v9 new-array v10, v0, [Lcom/google/android/exoplayer2/source/SampleStream; const/4 v0, 0x0 move v1, v0 .line 3 :goto_0 array-length v2, v9 const/4 v11, 0x0 if-ge v1, v2, :cond_1 .line 4 iget-object v2, v8, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->sampleStreams:[Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream; aget-object v3, v9, v1 check-cast v3, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream; aput-object v3, v2, v1 .line 5 aget-object v3, v2, v1 if-eqz v3, :cond_0 aget-object v2, v2, v1 invoke-static {v2}, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream;->access$000(Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream;)Lcom/google/android/exoplayer2/source/SampleStream; move-result-object v11 :cond_0 aput-object v11, v10, v1 add-int/lit8 v1, v1, 0x1 goto :goto_0 .line 6 :cond_1 iget-object v1, v8, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod; iget-wide v2, v8, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->startUs:J add-long v6, p5, v2 move-object/from16 v2, p1 move-object/from16 v3, p2 move-object v4, v10 move-object/from16 v5, p4 invoke-interface/range {v1 .. v7}, Lcom/google/android/exoplayer2/source/MediaPeriod;->selectTracks([Lcom/google/android/exoplayer2/trackselection/TrackSelection;[Z[Lcom/google/android/exoplayer2/source/SampleStream;[ZJ)J move-result-wide v12 .line 7 iget-wide v1, v8, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->startUs:J add-long v3, p5, v1 cmp-long v3, v12, v3 if-eqz v3, :cond_3 cmp-long v1, v12, v1 if-ltz v1, :cond_2 iget-wide v1, v8, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->endUs:J const-wide/high16 v3, -0x8000000000000000L cmp-long v3, v1, v3 if-eqz v3, :cond_3 cmp-long v1, v12, v1 if-gtz v1, :cond_2 goto :goto_1 :cond_2 move v1, v0 goto :goto_2 :cond_3 :goto_1 const/4 v1, 0x1 :goto_2 invoke-static {v1}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V move v14, v0 .line 8 :goto_3 array-length v0, v9 if-ge v14, v0, :cond_7 .line 9 aget-object v0, v10, v14 if-nez v0, :cond_4 .line 10 iget-object v0, v8, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->sampleStreams:[Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream; aput-object v11, v0, v14 goto :goto_4 .line 11 :cond_4 aget-object v0, v9, v14 if-eqz v0, :cond_5 iget-object v0, v8, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->sampleStreams:[Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream; aget-object v0, v0, v14 invoke-static {v0}, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream;->access$000(Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream;)Lcom/google/android/exoplayer2/source/SampleStream; move-result-object v0 aget-object v1, v10, v14 if-eq v0, v1, :cond_6 .line 12 :cond_5 iget-object v15, v8, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->sampleStreams:[Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream; new-instance v16, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream; aget-object v2, v10, v14 iget-wide v3, v8, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->startUs:J iget-wide v5, v8, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->endUs:J iget-boolean v7, v8, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->pendingInitialDiscontinuity:Z move-object/from16 v0, v16 move-object/from16 v1, p0 invoke-direct/range {v0 .. v7}, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream;->(Lcom/google/android/exoplayer2/source/MediaPeriod;Lcom/google/android/exoplayer2/source/SampleStream;JJZ)V aput-object v16, v15, v14 .line 13 :cond_6 :goto_4 iget-object v0, v8, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->sampleStreams:[Lcom/google/android/exoplayer2/source/ClippingMediaPeriod$ClippingSampleStream; aget-object v0, v0, v14 aput-object v0, v9, v14 add-int/lit8 v14, v14, 0x1 goto :goto_3 .line 14 :cond_7 iget-wide v0, v8, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->startUs:J sub-long/2addr v12, v0 return-wide v12 .end method .method public setClipping(JJ)V .locals 0 .line 1 iput-wide p1, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->startUs:J .line 2 iput-wide p3, p0, Lcom/google/android/exoplayer2/source/ClippingMediaPeriod;->endUs:J return-void .end method