.class final Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod; .super Ljava/lang/Object; .source "ExtractorMediaPeriod.java" # interfaces .implements Lcom/google/android/exoplayer2/source/MediaPeriod; .implements Lcom/google/android/exoplayer2/extractor/ExtractorOutput; .implements Lcom/google/android/exoplayer2/upstream/Loader$Callback; .implements Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput$UpstreamFormatChangedListener; # annotations .annotation system Ldalvik/annotation/MemberClasses; value = { Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractorHolder;, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable;, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$SampleStreamImpl; } .end annotation .annotation system Ldalvik/annotation/Signature; value = { "Ljava/lang/Object;", "Lcom/google/android/exoplayer2/source/MediaPeriod;", "Lcom/google/android/exoplayer2/extractor/ExtractorOutput;", "Lcom/google/android/exoplayer2/upstream/Loader$Callback<", "Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable;", ">;", "Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput$UpstreamFormatChangedListener;" } .end annotation # static fields .field private static final DEFAULT_LAST_SAMPLE_DURATION_US:J = 0x2710L # instance fields .field private final allocator:Lcom/google/android/exoplayer2/upstream/Allocator; .field private callback:Lcom/google/android/exoplayer2/source/MediaPeriod$Callback; .field private final customCacheKey:Ljava/lang/String; .field private final dataSource:Lcom/google/android/exoplayer2/upstream/DataSource; .field private durationUs:J .field private enabledTrackCount:I .field private final eventHandler:Landroid/os/Handler; .field private final eventListener:Lcom/google/android/exoplayer2/source/ExtractorMediaSource$EventListener; .field private extractedSamplesCountAtStartOfLoad:I .field private final extractorHolder:Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractorHolder; .field private final handler:Landroid/os/Handler; .field private haveAudioVideoTracks:Z .field private lastSeekPositionUs:J .field private length:J .field private final loadCondition:Lcom/google/android/exoplayer2/util/ConditionVariable; .field private final loader:Lcom/google/android/exoplayer2/upstream/Loader; .field private loadingFinished:Z .field private final maybeFinishPrepareRunnable:Ljava/lang/Runnable; .field private final minLoadableRetryCount:I .field private notifyReset:Z .field private final onContinueLoadingRequestedRunnable:Ljava/lang/Runnable; .field private pendingResetPositionUs:J .field private prepared:Z .field private released:Z .field private final sampleQueues:Landroid/util/SparseArray; .annotation system Ldalvik/annotation/Signature; value = { "Landroid/util/SparseArray<", "Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput;", ">;" } .end annotation .end field .field private seekMap:Lcom/google/android/exoplayer2/extractor/SeekMap; .field private seenFirstTrackSelection:Z .field private final sourceListener:Lcom/google/android/exoplayer2/source/MediaSource$Listener; .field private trackEnabledStates:[Z .field private trackIsAudioVideoFlags:[Z .field private tracks:Lcom/google/android/exoplayer2/source/TrackGroupArray; .field private tracksBuilt:Z .field private final uri:Landroid/net/Uri; # direct methods .method public constructor (Landroid/net/Uri;Lcom/google/android/exoplayer2/upstream/DataSource;[Lcom/google/android/exoplayer2/extractor/Extractor;ILandroid/os/Handler;Lcom/google/android/exoplayer2/source/ExtractorMediaSource$EventListener;Lcom/google/android/exoplayer2/source/MediaSource$Listener;Lcom/google/android/exoplayer2/upstream/Allocator;Ljava/lang/String;)V .locals 0 .line 1 invoke-direct {p0}, Ljava/lang/Object;->()V .line 2 iput-object p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->uri:Landroid/net/Uri; .line 3 iput-object p2, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->dataSource:Lcom/google/android/exoplayer2/upstream/DataSource; .line 4 iput p4, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->minLoadableRetryCount:I .line 5 iput-object p5, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->eventHandler:Landroid/os/Handler; .line 6 iput-object p6, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->eventListener:Lcom/google/android/exoplayer2/source/ExtractorMediaSource$EventListener; .line 7 iput-object p7, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sourceListener:Lcom/google/android/exoplayer2/source/MediaSource$Listener; .line 8 iput-object p8, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->allocator:Lcom/google/android/exoplayer2/upstream/Allocator; .line 9 iput-object p9, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->customCacheKey:Ljava/lang/String; .line 10 new-instance p1, Lcom/google/android/exoplayer2/upstream/Loader; const-string p2, "Loader:ExtractorMediaPeriod" invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/upstream/Loader;->(Ljava/lang/String;)V iput-object p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loader:Lcom/google/android/exoplayer2/upstream/Loader; .line 11 new-instance p1, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractorHolder; invoke-direct {p1, p3, p0}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractorHolder;->([Lcom/google/android/exoplayer2/extractor/Extractor;Lcom/google/android/exoplayer2/extractor/ExtractorOutput;)V iput-object p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->extractorHolder:Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractorHolder; .line 12 new-instance p1, Lcom/google/android/exoplayer2/util/ConditionVariable; invoke-direct {p1}, Lcom/google/android/exoplayer2/util/ConditionVariable;->()V iput-object p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loadCondition:Lcom/google/android/exoplayer2/util/ConditionVariable; .line 13 new-instance p1, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$1; invoke-direct {p1, p0}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$1;->(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;)V iput-object p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->maybeFinishPrepareRunnable:Ljava/lang/Runnable; .line 14 new-instance p1, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$2; invoke-direct {p1, p0}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$2;->(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;)V iput-object p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->onContinueLoadingRequestedRunnable:Ljava/lang/Runnable; .line 15 new-instance p1, Landroid/os/Handler; invoke-direct {p1}, Landroid/os/Handler;->()V iput-object p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->handler:Landroid/os/Handler; const-wide p1, -0x7fffffffffffffffL # -4.9E-324 .line 16 iput-wide p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->pendingResetPositionUs:J .line 17 new-instance p1, Landroid/util/SparseArray; invoke-direct {p1}, Landroid/util/SparseArray;->()V iput-object p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; const-wide/16 p1, -0x1 .line 18 iput-wide p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->length:J return-void .end method .method public static synthetic access$000(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;)V .locals 0 .line 1 invoke-direct {p0}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->maybeFinishPrepare()V return-void .end method .method public static synthetic access$100(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;)Z .locals 0 .line 1 iget-boolean p0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->released:Z return p0 .end method .method public static synthetic access$200(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;)Lcom/google/android/exoplayer2/source/MediaPeriod$Callback; .locals 0 .line 1 iget-object p0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->callback:Lcom/google/android/exoplayer2/source/MediaPeriod$Callback; return-object p0 .end method .method public static synthetic access$300(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;)Landroid/util/SparseArray; .locals 0 .line 1 iget-object p0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; return-object p0 .end method .method public static synthetic access$600(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;)Lcom/google/android/exoplayer2/source/ExtractorMediaSource$EventListener; .locals 0 .line 1 iget-object p0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->eventListener:Lcom/google/android/exoplayer2/source/ExtractorMediaSource$EventListener; return-object p0 .end method .method public static synthetic access$700(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;)Ljava/lang/String; .locals 0 .line 1 iget-object p0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->customCacheKey:Ljava/lang/String; return-object p0 .end method .method public static synthetic access$800(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;)Ljava/lang/Runnable; .locals 0 .line 1 iget-object p0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->onContinueLoadingRequestedRunnable:Ljava/lang/Runnable; return-object p0 .end method .method public static synthetic access$900(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;)Landroid/os/Handler; .locals 0 .line 1 iget-object p0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->handler:Landroid/os/Handler; return-object p0 .end method .method private configureRetry(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable;)V .locals 7 .line 1 iget-wide v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->length:J const-wide/16 v2, -0x1 cmp-long v0, v0, v2 if-nez v0, :cond_4 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->seekMap:Lcom/google/android/exoplayer2/extractor/SeekMap; if-eqz v0, :cond_0 .line 2 invoke-interface {v0}, Lcom/google/android/exoplayer2/extractor/SeekMap;->getDurationUs()J move-result-wide v0 const-wide v2, -0x7fffffffffffffffL # -4.9E-324 cmp-long v0, v0, v2 if-eqz v0, :cond_0 goto :goto_3 :cond_0 const-wide/16 v0, 0x0 .line 3 iput-wide v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->lastSeekPositionUs:J .line 4 iget-boolean v2, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->prepared:Z iput-boolean v2, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->notifyReset:Z .line 5 iget-object v2, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {v2}, Landroid/util/SparseArray;->size()I move-result v2 const/4 v3, 0x0 move v4, v3 :goto_0 if-ge v4, v2, :cond_3 .line 6 iget-object v5, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {v5, v4}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object; move-result-object v5 check-cast v5, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput; iget-boolean v6, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->prepared:Z if-eqz v6, :cond_2 iget-object v6, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->trackEnabledStates:[Z aget-boolean v6, v6, v4 if-eqz v6, :cond_1 goto :goto_1 :cond_1 move v6, v3 goto :goto_2 :cond_2 :goto_1 const/4 v6, 0x1 :goto_2 invoke-virtual {v5, v6}, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput;->reset(Z)V add-int/lit8 v4, v4, 0x1 goto :goto_0 .line 7 :cond_3 invoke-virtual {p1, v0, v1, v0, v1}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable;->setLoadPosition(JJ)V :cond_4 :goto_3 return-void .end method .method private copyLengthFromLoader(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable;)V .locals 4 .line 1 iget-wide v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->length:J const-wide/16 v2, -0x1 cmp-long v0, v0, v2 if-nez v0, :cond_0 .line 2 invoke-static {p1}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable;->access$500(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable;)J move-result-wide v0 iput-wide v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->length:J :cond_0 return-void .end method .method private getExtractedSamplesCount()I .locals 4 .line 1 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {v0}, Landroid/util/SparseArray;->size()I move-result v0 const/4 v1, 0x0 move v2, v1 :goto_0 if-ge v1, v0, :cond_0 .line 2 iget-object v3, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {v3, v1}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object; move-result-object v3 check-cast v3, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput; invoke-virtual {v3}, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput;->getWriteIndex()I move-result v3 add-int/2addr v2, v3 add-int/lit8 v1, v1, 0x1 goto :goto_0 :cond_0 return v2 .end method .method private getLargestQueuedTimestampUs()J .locals 6 .line 1 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {v0}, Landroid/util/SparseArray;->size()I move-result v0 const-wide/high16 v1, -0x8000000000000000L const/4 v3, 0x0 :goto_0 if-ge v3, v0, :cond_0 .line 2 iget-object v4, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; .line 3 invoke-virtual {v4, v3}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object; move-result-object v4 check-cast v4, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput; invoke-virtual {v4}, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput;->getLargestQueuedTimestampUs()J move-result-wide v4 .line 4 invoke-static {v1, v2, v4, v5}, Ljava/lang/Math;->max(JJ)J move-result-wide v1 add-int/lit8 v3, v3, 0x1 goto :goto_0 :cond_0 return-wide v1 .end method .method private isLoadableExceptionFatal(Ljava/io/IOException;)Z .locals 0 .line 1 instance-of p1, p1, Lcom/google/android/exoplayer2/source/UnrecognizedInputFormatException; return p1 .end method .method private isPendingReset()Z .locals 4 .line 1 iget-wide v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->pendingResetPositionUs:J const-wide v2, -0x7fffffffffffffffL # -4.9E-324 cmp-long v0, v0, v2 if-eqz v0, :cond_0 const/4 v0, 0x1 goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 return v0 .end method .method private maybeFinishPrepare()V .locals 8 .line 1 iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->released:Z if-nez v0, :cond_6 iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->prepared:Z if-nez v0, :cond_6 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->seekMap:Lcom/google/android/exoplayer2/extractor/SeekMap; if-eqz v0, :cond_6 iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->tracksBuilt:Z if-nez v0, :cond_0 goto/16 :goto_3 .line 2 :cond_0 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {v0}, Landroid/util/SparseArray;->size()I move-result v0 const/4 v1, 0x0 move v2, v1 :goto_0 if-ge v2, v0, :cond_2 .line 3 iget-object v3, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {v3, v2}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object; move-result-object v3 check-cast v3, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput; invoke-virtual {v3}, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput;->getUpstreamFormat()Lcom/google/android/exoplayer2/Format; move-result-object v3 if-nez v3, :cond_1 return-void :cond_1 add-int/lit8 v2, v2, 0x1 goto :goto_0 .line 4 :cond_2 iget-object v2, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loadCondition:Lcom/google/android/exoplayer2/util/ConditionVariable; invoke-virtual {v2}, Lcom/google/android/exoplayer2/util/ConditionVariable;->close()Z .line 5 new-array v2, v0, [Lcom/google/android/exoplayer2/source/TrackGroup; .line 6 new-array v3, v0, [Z iput-object v3, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->trackIsAudioVideoFlags:[Z .line 7 new-array v3, v0, [Z iput-object v3, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->trackEnabledStates:[Z .line 8 iget-object v3, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->seekMap:Lcom/google/android/exoplayer2/extractor/SeekMap; invoke-interface {v3}, Lcom/google/android/exoplayer2/extractor/SeekMap;->getDurationUs()J move-result-wide v3 iput-wide v3, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->durationUs:J move v3, v1 :goto_1 const/4 v4, 0x1 if-ge v3, v0, :cond_5 .line 9 iget-object v5, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {v5, v3}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object; move-result-object v5 check-cast v5, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput; invoke-virtual {v5}, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput;->getUpstreamFormat()Lcom/google/android/exoplayer2/Format; move-result-object v5 .line 10 new-instance v6, Lcom/google/android/exoplayer2/source/TrackGroup; new-array v7, v4, [Lcom/google/android/exoplayer2/Format; aput-object v5, v7, v1 invoke-direct {v6, v7}, Lcom/google/android/exoplayer2/source/TrackGroup;->([Lcom/google/android/exoplayer2/Format;)V aput-object v6, v2, v3 .line 11 iget-object v5, v5, Lcom/google/android/exoplayer2/Format;->sampleMimeType:Ljava/lang/String; .line 12 invoke-static {v5}, Lcom/google/android/exoplayer2/util/MimeTypes;->isVideo(Ljava/lang/String;)Z move-result v6 if-nez v6, :cond_4 invoke-static {v5}, Lcom/google/android/exoplayer2/util/MimeTypes;->isAudio(Ljava/lang/String;)Z move-result v5 if-eqz v5, :cond_3 goto :goto_2 :cond_3 move v4, v1 .line 13 :cond_4 :goto_2 iget-object v5, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->trackIsAudioVideoFlags:[Z aput-boolean v4, v5, v3 .line 14 iget-boolean v5, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->haveAudioVideoTracks:Z or-int/2addr v4, v5 iput-boolean v4, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->haveAudioVideoTracks:Z add-int/lit8 v3, v3, 0x1 goto :goto_1 .line 15 :cond_5 new-instance v0, Lcom/google/android/exoplayer2/source/TrackGroupArray; invoke-direct {v0, v2}, Lcom/google/android/exoplayer2/source/TrackGroupArray;->([Lcom/google/android/exoplayer2/source/TrackGroup;)V iput-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->tracks:Lcom/google/android/exoplayer2/source/TrackGroupArray; .line 16 iput-boolean v4, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->prepared:Z .line 17 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sourceListener:Lcom/google/android/exoplayer2/source/MediaSource$Listener; new-instance v1, Lcom/google/android/exoplayer2/source/SinglePeriodTimeline; iget-wide v2, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->durationUs:J iget-object v4, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->seekMap:Lcom/google/android/exoplayer2/extractor/SeekMap; .line 18 invoke-interface {v4}, Lcom/google/android/exoplayer2/extractor/SeekMap;->isSeekable()Z move-result v4 invoke-direct {v1, v2, v3, v4}, Lcom/google/android/exoplayer2/source/SinglePeriodTimeline;->(JZ)V const/4 v2, 0x0 .line 19 invoke-interface {v0, v1, v2}, Lcom/google/android/exoplayer2/source/MediaSource$Listener;->onSourceInfoRefreshed(Lcom/google/android/exoplayer2/Timeline;Ljava/lang/Object;)V .line 20 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->callback:Lcom/google/android/exoplayer2/source/MediaPeriod$Callback; invoke-interface {v0, p0}, Lcom/google/android/exoplayer2/source/MediaPeriod$Callback;->onPrepared(Lcom/google/android/exoplayer2/source/MediaPeriod;)V :cond_6 :goto_3 return-void .end method .method private notifyLoadError(Ljava/io/IOException;)V .locals 2 .line 1 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->eventHandler:Landroid/os/Handler; if-eqz v0, :cond_0 iget-object v1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->eventListener:Lcom/google/android/exoplayer2/source/ExtractorMediaSource$EventListener; if-eqz v1, :cond_0 .line 2 new-instance v1, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$4; invoke-direct {v1, p0, p1}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$4;->(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;Ljava/io/IOException;)V invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z :cond_0 return-void .end method .method private startLoading()V .locals 9 .line 1 new-instance v6, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable; iget-object v2, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->uri:Landroid/net/Uri; iget-object v3, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->dataSource:Lcom/google/android/exoplayer2/upstream/DataSource; iget-object v4, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->extractorHolder:Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractorHolder; iget-object v5, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loadCondition:Lcom/google/android/exoplayer2/util/ConditionVariable; move-object v0, v6 move-object v1, p0 invoke-direct/range {v0 .. v5}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable;->(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;Landroid/net/Uri;Lcom/google/android/exoplayer2/upstream/DataSource;Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractorHolder;Lcom/google/android/exoplayer2/util/ConditionVariable;)V .line 2 iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->prepared:Z const-wide v1, -0x7fffffffffffffffL # -4.9E-324 if-eqz v0, :cond_1 .line 3 invoke-direct {p0}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->isPendingReset()Z move-result v0 invoke-static {v0}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V .line 4 iget-wide v3, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->durationUs:J cmp-long v0, v3, v1 if-eqz v0, :cond_0 iget-wide v7, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->pendingResetPositionUs:J cmp-long v0, v7, v3 if-ltz v0, :cond_0 const/4 v0, 0x1 .line 5 iput-boolean v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loadingFinished:Z .line 6 iput-wide v1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->pendingResetPositionUs:J return-void .line 7 :cond_0 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->seekMap:Lcom/google/android/exoplayer2/extractor/SeekMap; iget-wide v3, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->pendingResetPositionUs:J invoke-interface {v0, v3, v4}, Lcom/google/android/exoplayer2/extractor/SeekMap;->getPosition(J)J move-result-wide v3 iget-wide v7, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->pendingResetPositionUs:J invoke-virtual {v6, v3, v4, v7, v8}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable;->setLoadPosition(JJ)V .line 8 iput-wide v1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->pendingResetPositionUs:J .line 9 :cond_1 invoke-direct {p0}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->getExtractedSamplesCount()I move-result v0 iput v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->extractedSamplesCountAtStartOfLoad:I .line 10 iget v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->minLoadableRetryCount:I const/4 v3, -0x1 if-ne v0, v3, :cond_4 .line 11 iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->prepared:Z if-eqz v0, :cond_3 iget-wide v3, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->length:J const-wide/16 v7, -0x1 cmp-long v0, v3, v7 if-nez v0, :cond_3 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->seekMap:Lcom/google/android/exoplayer2/extractor/SeekMap; if-eqz v0, :cond_2 .line 12 invoke-interface {v0}, Lcom/google/android/exoplayer2/extractor/SeekMap;->getDurationUs()J move-result-wide v3 cmp-long v0, v3, v1 if-eqz v0, :cond_2 goto :goto_0 :cond_2 const/4 v0, 0x6 goto :goto_1 :cond_3 :goto_0 const/4 v0, 0x3 .line 13 :cond_4 :goto_1 iget-object v1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loader:Lcom/google/android/exoplayer2/upstream/Loader; invoke-virtual {v1, v6, p0, v0}, Lcom/google/android/exoplayer2/upstream/Loader;->startLoading(Lcom/google/android/exoplayer2/upstream/Loader$Loadable;Lcom/google/android/exoplayer2/upstream/Loader$Callback;I)J return-void .end method # virtual methods .method public continueLoading(J)Z .locals 0 .line 1 iget-boolean p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loadingFinished:Z if-nez p1, :cond_2 iget-boolean p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->prepared:Z if-eqz p1, :cond_0 iget p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->enabledTrackCount:I if-nez p1, :cond_0 goto :goto_0 .line 2 :cond_0 iget-object p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loadCondition:Lcom/google/android/exoplayer2/util/ConditionVariable; invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ConditionVariable;->open()Z move-result p1 .line 3 iget-object p2, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loader:Lcom/google/android/exoplayer2/upstream/Loader; invoke-virtual {p2}, Lcom/google/android/exoplayer2/upstream/Loader;->isLoading()Z move-result p2 if-nez p2, :cond_1 .line 4 invoke-direct {p0}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->startLoading()V const/4 p1, 0x1 :cond_1 return p1 :cond_2 :goto_0 const/4 p1, 0x0 return p1 .end method .method public discardBuffer(J)V .locals 0 return-void .end method .method public endTracks()V .locals 2 const/4 v0, 0x1 .line 1 iput-boolean v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->tracksBuilt:Z .line 2 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->handler:Landroid/os/Handler; iget-object v1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->maybeFinishPrepareRunnable:Ljava/lang/Runnable; invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z return-void .end method .method public getBufferedPositionUs()J .locals 8 .line 1 iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loadingFinished:Z const-wide/high16 v1, -0x8000000000000000L if-eqz v0, :cond_0 return-wide v1 .line 2 :cond_0 invoke-direct {p0}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->isPendingReset()Z move-result v0 if-eqz v0, :cond_1 .line 3 iget-wide v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->pendingResetPositionUs:J return-wide v0 .line 4 :cond_1 iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->haveAudioVideoTracks:Z if-eqz v0, :cond_3 const-wide v3, 0x7fffffffffffffffL .line 5 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {v0}, Landroid/util/SparseArray;->size()I move-result v0 const/4 v5, 0x0 :goto_0 if-ge v5, v0, :cond_4 .line 6 iget-object v6, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->trackIsAudioVideoFlags:[Z aget-boolean v6, v6, v5 if-eqz v6, :cond_2 .line 7 iget-object v6, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; .line 8 invoke-virtual {v6, v5}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object; move-result-object v6 check-cast v6, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput; invoke-virtual {v6}, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput;->getLargestQueuedTimestampUs()J move-result-wide v6 .line 9 invoke-static {v3, v4, v6, v7}, Ljava/lang/Math;->min(JJ)J move-result-wide v3 :cond_2 add-int/lit8 v5, v5, 0x1 goto :goto_0 .line 10 :cond_3 invoke-direct {p0}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->getLargestQueuedTimestampUs()J move-result-wide v3 :cond_4 cmp-long v0, v3, v1 if-nez v0, :cond_5 .line 11 iget-wide v3, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->lastSeekPositionUs:J :cond_5 return-wide v3 .end method .method public getNextLoadPositionUs()J .locals 2 .line 1 iget v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->enabledTrackCount:I if-nez v0, :cond_0 const-wide/high16 v0, -0x8000000000000000L goto :goto_0 :cond_0 invoke-virtual {p0}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->getBufferedPositionUs()J move-result-wide v0 :goto_0 return-wide v0 .end method .method public getTrackGroups()Lcom/google/android/exoplayer2/source/TrackGroupArray; .locals 1 .line 1 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->tracks:Lcom/google/android/exoplayer2/source/TrackGroupArray; return-object v0 .end method .method public isReady(I)Z .locals 1 .line 1 iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loadingFinished:Z if-nez v0, :cond_1 invoke-direct {p0}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->isPendingReset()Z move-result v0 if-nez v0, :cond_0 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {v0, p1}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object; move-result-object p1 check-cast p1, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput; invoke-virtual {p1}, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput;->isEmpty()Z move-result p1 if-nez p1, :cond_0 goto :goto_0 :cond_0 const/4 p1, 0x0 goto :goto_1 :cond_1 :goto_0 const/4 p1, 0x1 :goto_1 return p1 .end method .method public maybeThrowError()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/ExtractorMediaPeriod;->loader:Lcom/google/android/exoplayer2/upstream/Loader; invoke-virtual {v0}, Lcom/google/android/exoplayer2/upstream/Loader;->maybeThrowError()V return-void .end method .method public maybeThrowPrepareError()V .locals 0 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 1 invoke-virtual {p0}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->maybeThrowError()V return-void .end method .method public onLoadCanceled(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable;JJZ)V .locals 0 .line 2 invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->copyLengthFromLoader(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable;)V if-nez p6, :cond_1 .line 3 iget p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->enabledTrackCount:I if-lez p1, :cond_1 .line 4 iget-object p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {p1}, Landroid/util/SparseArray;->size()I move-result p1 const/4 p2, 0x0 :goto_0 if-ge p2, p1, :cond_0 .line 5 iget-object p3, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {p3, p2}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object; move-result-object p3 check-cast p3, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput; iget-object p4, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->trackEnabledStates:[Z aget-boolean p4, p4, p2 invoke-virtual {p3, p4}, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput;->reset(Z)V add-int/lit8 p2, p2, 0x1 goto :goto_0 .line 6 :cond_0 iget-object p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->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 :cond_1 return-void .end method .method public bridge synthetic onLoadCanceled(Lcom/google/android/exoplayer2/upstream/Loader$Loadable;JJZ)V .locals 0 .line 1 check-cast p1, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable; invoke-virtual/range {p0 .. p6}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->onLoadCanceled(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable;JJZ)V return-void .end method .method public onLoadCompleted(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable;JJ)V .locals 0 .line 2 invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->copyLengthFromLoader(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable;)V const/4 p1, 0x1 .line 3 iput-boolean p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loadingFinished:Z .line 4 iget-wide p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->durationUs:J const-wide p3, -0x7fffffffffffffffL # -4.9E-324 cmp-long p1, p1, p3 if-nez p1, :cond_1 .line 5 invoke-direct {p0}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->getLargestQueuedTimestampUs()J move-result-wide p1 const-wide/high16 p3, -0x8000000000000000L cmp-long p3, p1, p3 if-nez p3, :cond_0 const-wide/16 p1, 0x0 goto :goto_0 :cond_0 const-wide/16 p3, 0x2710 add-long/2addr p1, p3 .line 6 :goto_0 iput-wide p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->durationUs:J .line 7 iget-object p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sourceListener:Lcom/google/android/exoplayer2/source/MediaSource$Listener; new-instance p2, Lcom/google/android/exoplayer2/source/SinglePeriodTimeline; iget-wide p3, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->durationUs:J iget-object p5, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->seekMap:Lcom/google/android/exoplayer2/extractor/SeekMap; .line 8 invoke-interface {p5}, Lcom/google/android/exoplayer2/extractor/SeekMap;->isSeekable()Z move-result p5 invoke-direct {p2, p3, p4, p5}, Lcom/google/android/exoplayer2/source/SinglePeriodTimeline;->(JZ)V const/4 p3, 0x0 .line 9 invoke-interface {p1, p2, p3}, Lcom/google/android/exoplayer2/source/MediaSource$Listener;->onSourceInfoRefreshed(Lcom/google/android/exoplayer2/Timeline;Ljava/lang/Object;)V .line 10 :cond_1 iget-object p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->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 onLoadCompleted(Lcom/google/android/exoplayer2/upstream/Loader$Loadable;JJ)V .locals 0 .line 1 check-cast p1, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable; invoke-virtual/range {p0 .. p5}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->onLoadCompleted(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable;JJ)V return-void .end method .method public onLoadError(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable;JJLjava/io/IOException;)I .locals 0 .line 2 invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->copyLengthFromLoader(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable;)V .line 3 invoke-direct {p0, p6}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->notifyLoadError(Ljava/io/IOException;)V .line 4 invoke-direct {p0, p6}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->isLoadableExceptionFatal(Ljava/io/IOException;)Z move-result p2 if-eqz p2, :cond_0 const/4 p1, 0x3 return p1 .line 5 :cond_0 invoke-direct {p0}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->getExtractedSamplesCount()I move-result p2 .line 6 iget p3, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->extractedSamplesCountAtStartOfLoad:I if-le p2, p3, :cond_1 const/4 p2, 0x1 goto :goto_0 :cond_1 const/4 p2, 0x0 .line 7 :goto_0 invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->configureRetry(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable;)V .line 8 invoke-direct {p0}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->getExtractedSamplesCount()I move-result p1 iput p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->extractedSamplesCountAtStartOfLoad:I return p2 .end method .method public bridge synthetic onLoadError(Lcom/google/android/exoplayer2/upstream/Loader$Loadable;JJLjava/io/IOException;)I .locals 0 .line 1 check-cast p1, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable; invoke-virtual/range {p0 .. p6}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->onLoadError(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractingLoadable;JJLjava/io/IOException;)I move-result p1 return p1 .end method .method public onUpstreamFormatChanged(Lcom/google/android/exoplayer2/Format;)V .locals 1 .line 1 iget-object p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->handler:Landroid/os/Handler; iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->maybeFinishPrepareRunnable:Ljava/lang/Runnable; invoke-virtual {p1, v0}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z 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/ExtractorMediaPeriod;->callback:Lcom/google/android/exoplayer2/source/MediaPeriod$Callback; .line 2 iget-object p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loadCondition:Lcom/google/android/exoplayer2/util/ConditionVariable; invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ConditionVariable;->open()Z .line 3 invoke-direct {p0}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->startLoading()V return-void .end method .method public readData(ILcom/google/android/exoplayer2/FormatHolder;Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;Z)I .locals 7 .line 1 iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->notifyReset:Z if-nez v0, :cond_1 invoke-direct {p0}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->isPendingReset()Z move-result v0 if-eqz v0, :cond_0 goto :goto_0 .line 2 :cond_0 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {v0, p1}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object; move-result-object p1 move-object v0, p1 check-cast v0, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput; iget-boolean v4, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loadingFinished:Z iget-wide v5, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->lastSeekPositionUs:J move-object v1, p2 move-object v2, p3 move v3, p4 invoke-virtual/range {v0 .. v6}, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput;->readData(Lcom/google/android/exoplayer2/FormatHolder;Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;ZZJ)I move-result p1 return p1 :cond_1 :goto_0 const/4 p1, -0x3 return p1 .end method .method public readDiscontinuity()J .locals 2 .line 1 iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->notifyReset:Z if-eqz v0, :cond_0 const/4 v0, 0x0 .line 2 iput-boolean v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->notifyReset:Z .line 3 iget-wide v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->lastSeekPositionUs:J return-wide v0 :cond_0 const-wide v0, -0x7fffffffffffffffL # -4.9E-324 return-wide v0 .end method .method public release()V .locals 3 .line 1 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->extractorHolder:Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractorHolder; .line 2 iget-object v1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loader:Lcom/google/android/exoplayer2/upstream/Loader; new-instance v2, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$3; invoke-direct {v2, p0, v0}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$3;->(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$ExtractorHolder;)V invoke-virtual {v1, v2}, Lcom/google/android/exoplayer2/upstream/Loader;->release(Ljava/lang/Runnable;)V .line 3 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->handler:Landroid/os/Handler; const/4 v1, 0x0 invoke-virtual {v0, v1}, Landroid/os/Handler;->removeCallbacksAndMessages(Ljava/lang/Object;)V const/4 v0, 0x1 .line 4 iput-boolean v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->released:Z return-void .end method .method public seekMap(Lcom/google/android/exoplayer2/extractor/SeekMap;)V .locals 1 .line 1 iput-object p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->seekMap:Lcom/google/android/exoplayer2/extractor/SeekMap; .line 2 iget-object p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->handler:Landroid/os/Handler; iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->maybeFinishPrepareRunnable:Ljava/lang/Runnable; invoke-virtual {p1, v0}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z return-void .end method .method public seekToUs(J)J .locals 5 .line 1 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->seekMap:Lcom/google/android/exoplayer2/extractor/SeekMap; invoke-interface {v0}, Lcom/google/android/exoplayer2/extractor/SeekMap;->isSeekable()Z move-result v0 if-eqz v0, :cond_0 goto :goto_0 :cond_0 const-wide/16 p1, 0x0 .line 2 :goto_0 iput-wide p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->lastSeekPositionUs:J .line 3 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {v0}, Landroid/util/SparseArray;->size()I move-result v0 .line 4 invoke-direct {p0}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->isPendingReset()Z move-result v1 xor-int/lit8 v1, v1, 0x1 const/4 v2, 0x0 move v3, v2 :goto_1 if-eqz v1, :cond_2 if-ge v3, v0, :cond_2 .line 5 iget-object v4, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->trackEnabledStates:[Z aget-boolean v4, v4, v3 if-eqz v4, :cond_1 .line 6 iget-object v1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {v1, v3}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object; move-result-object v1 check-cast v1, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput; invoke-virtual {v1, p1, p2, v2}, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput;->skipToKeyframeBefore(JZ)Z move-result v1 :cond_1 add-int/lit8 v3, v3, 0x1 goto :goto_1 :cond_2 if-nez v1, :cond_4 .line 7 iput-wide p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->pendingResetPositionUs:J .line 8 iput-boolean v2, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loadingFinished:Z .line 9 iget-object v1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loader:Lcom/google/android/exoplayer2/upstream/Loader; invoke-virtual {v1}, Lcom/google/android/exoplayer2/upstream/Loader;->isLoading()Z move-result v1 if-eqz v1, :cond_3 .line 10 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loader:Lcom/google/android/exoplayer2/upstream/Loader; invoke-virtual {v0}, Lcom/google/android/exoplayer2/upstream/Loader;->cancelLoading()V goto :goto_3 :cond_3 move v1, v2 :goto_2 if-ge v1, v0, :cond_4 .line 11 iget-object v3, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {v3, v1}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object; move-result-object v3 check-cast v3, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput; iget-object v4, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->trackEnabledStates:[Z aget-boolean v4, v4, v1 invoke-virtual {v3, v4}, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput;->reset(Z)V add-int/lit8 v1, v1, 0x1 goto :goto_2 .line 12 :cond_4 :goto_3 iput-boolean v2, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->notifyReset:Z return-wide p1 .end method .method public selectTracks([Lcom/google/android/exoplayer2/trackselection/TrackSelection;[Z[Lcom/google/android/exoplayer2/source/SampleStream;[ZJ)J .locals 5 .line 1 iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->prepared:Z invoke-static {v0}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V const/4 v0, 0x0 move v1, v0 .line 2 :goto_0 array-length v2, p1 const/4 v3, 0x1 if-ge v1, v2, :cond_2 .line 3 aget-object v2, p3, v1 if-eqz v2, :cond_1 aget-object v2, p1, v1 if-eqz v2, :cond_0 aget-boolean v2, p2, v1 if-nez v2, :cond_1 .line 4 :cond_0 aget-object v2, p3, v1 check-cast v2, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$SampleStreamImpl; invoke-static {v2}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$SampleStreamImpl;->access$400(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$SampleStreamImpl;)I move-result v2 .line 5 iget-object v4, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->trackEnabledStates:[Z aget-boolean v4, v4, v2 invoke-static {v4}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V .line 6 iget v4, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->enabledTrackCount:I sub-int/2addr v4, v3 iput v4, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->enabledTrackCount:I .line 7 iget-object v3, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->trackEnabledStates:[Z aput-boolean v0, v3, v2 .line 8 iget-object v3, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {v3, v2}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object; move-result-object v2 check-cast v2, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput; invoke-virtual {v2}, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput;->disable()V const/4 v2, 0x0 .line 9 aput-object v2, p3, v1 :cond_1 add-int/lit8 v1, v1, 0x1 goto :goto_0 :cond_2 move p2, v0 move v1, p2 .line 10 :goto_1 array-length v2, p1 if-ge p2, v2, :cond_6 .line 11 aget-object v2, p3, p2 if-nez v2, :cond_5 aget-object v2, p1, p2 if-eqz v2, :cond_5 .line 12 aget-object v1, p1, p2 .line 13 invoke-interface {v1}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->length()I move-result v2 if-ne v2, v3, :cond_3 move v2, v3 goto :goto_2 :cond_3 move v2, v0 :goto_2 invoke-static {v2}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V .line 14 invoke-interface {v1, v0}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getIndexInTrackGroup(I)I move-result v2 if-nez v2, :cond_4 move v2, v3 goto :goto_3 :cond_4 move v2, v0 :goto_3 invoke-static {v2}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V .line 15 iget-object v2, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->tracks:Lcom/google/android/exoplayer2/source/TrackGroupArray; invoke-interface {v1}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getTrackGroup()Lcom/google/android/exoplayer2/source/TrackGroup; move-result-object v1 invoke-virtual {v2, v1}, Lcom/google/android/exoplayer2/source/TrackGroupArray;->indexOf(Lcom/google/android/exoplayer2/source/TrackGroup;)I move-result v1 .line 16 iget-object v2, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->trackEnabledStates:[Z aget-boolean v2, v2, v1 xor-int/2addr v2, v3 invoke-static {v2}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V .line 17 iget v2, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->enabledTrackCount:I add-int/2addr v2, v3 iput v2, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->enabledTrackCount:I .line 18 iget-object v2, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->trackEnabledStates:[Z aput-boolean v3, v2, v1 .line 19 new-instance v2, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$SampleStreamImpl; invoke-direct {v2, p0, v1}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod$SampleStreamImpl;->(Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;I)V aput-object v2, p3, p2 .line 20 aput-boolean v3, p4, p2 move v1, v3 :cond_5 add-int/lit8 p2, p2, 0x1 goto :goto_1 .line 21 :cond_6 iget-boolean p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->seenFirstTrackSelection:Z if-nez p1, :cond_8 .line 22 iget-object p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {p1}, Landroid/util/SparseArray;->size()I move-result p1 move p2, v0 :goto_4 if-ge p2, p1, :cond_8 .line 23 iget-object v2, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->trackEnabledStates:[Z aget-boolean v2, v2, p2 if-nez v2, :cond_7 .line 24 iget-object v2, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {v2, p2}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object; move-result-object v2 check-cast v2, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput; invoke-virtual {v2}, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput;->disable()V :cond_7 add-int/lit8 p2, p2, 0x1 goto :goto_4 .line 25 :cond_8 iget p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->enabledTrackCount:I if-nez p1, :cond_9 .line 26 iput-boolean v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->notifyReset:Z .line 27 iget-object p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loader:Lcom/google/android/exoplayer2/upstream/Loader; invoke-virtual {p1}, Lcom/google/android/exoplayer2/upstream/Loader;->isLoading()Z move-result p1 if-eqz p1, :cond_c .line 28 iget-object p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loader:Lcom/google/android/exoplayer2/upstream/Loader; invoke-virtual {p1}, Lcom/google/android/exoplayer2/upstream/Loader;->cancelLoading()V goto :goto_7 .line 29 :cond_9 iget-boolean p1, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->seenFirstTrackSelection:Z if-eqz p1, :cond_a if-eqz v1, :cond_c goto :goto_5 :cond_a const-wide/16 p1, 0x0 cmp-long p1, p5, p1 if-eqz p1, :cond_c .line 30 :goto_5 invoke-virtual {p0, p5, p6}, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->seekToUs(J)J move-result-wide p5 .line 31 :goto_6 array-length p1, p3 if-ge v0, p1, :cond_c .line 32 aget-object p1, p3, v0 if-eqz p1, :cond_b .line 33 aput-boolean v3, p4, v0 :cond_b add-int/lit8 v0, v0, 0x1 goto :goto_6 .line 34 :cond_c :goto_7 iput-boolean v3, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->seenFirstTrackSelection:Z return-wide p5 .end method .method public skipData(IJ)V .locals 2 .line 1 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {v0, p1}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object; move-result-object p1 check-cast p1, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput; .line 2 iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->loadingFinished:Z if-eqz v0, :cond_0 invoke-virtual {p1}, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput;->getLargestQueuedTimestampUs()J move-result-wide v0 cmp-long v0, p2, v0 if-lez v0, :cond_0 .line 3 invoke-virtual {p1}, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput;->skipAll()V goto :goto_0 :cond_0 const/4 v0, 0x1 .line 4 invoke-virtual {p1, p2, p3, v0}, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput;->skipToKeyframeBefore(JZ)Z :goto_0 return-void .end method .method public track(II)Lcom/google/android/exoplayer2/extractor/TrackOutput; .locals 1 .line 1 iget-object p2, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {p2, p1}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object; move-result-object p2 check-cast p2, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput; if-nez p2, :cond_0 .line 2 new-instance p2, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput; iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->allocator:Lcom/google/android/exoplayer2/upstream/Allocator; invoke-direct {p2, v0}, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput;->(Lcom/google/android/exoplayer2/upstream/Allocator;)V .line 3 invoke-virtual {p2, p0}, Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput;->setUpstreamFormatChangeListener(Lcom/google/android/exoplayer2/extractor/DefaultTrackOutput$UpstreamFormatChangedListener;)V .line 4 iget-object v0, p0, Lcom/google/android/exoplayer2/source/ExtractorMediaPeriod;->sampleQueues:Landroid/util/SparseArray; invoke-virtual {v0, p1, p2}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V :cond_0 return-object p2 .end method