ExoPlayerImplInternal.smali
.class final Lcom/google/android/exoplayer2/ExoPlayerImplInternal;
.super Ljava/lang/Object;
.source "ExoPlayerImplInternal.java"
# interfaces
.implements Landroid/os/Handler$Callback;
.implements Lcom/google/android/exoplayer2/source/MediaPeriod$Callback;
.implements Lcom/google/android/exoplayer2/trackselection/TrackSelector$InvalidationListener;
.implements Lcom/google/android/exoplayer2/source/MediaSource$SourceInfoRefreshListener;
.implements Lcom/google/android/exoplayer2/DefaultMediaClock$PlaybackParameterListener;
.implements Lcom/google/android/exoplayer2/PlayerMessage$Sender;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;,
Lcom/google/android/exoplayer2/ExoPlayerImplInternal$MediaSourceRefreshInfo;,
Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;,
Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;
}
.end annotation
# static fields
.field private static final IDLE_INTERVAL_MS:I
.field private static final MSG_DO_SOME_WORK:I
.field public static final MSG_ERROR:I
.field private static final MSG_PERIOD_PREPARED:I
.field public static final MSG_PLAYBACK_INFO_CHANGED:I
.field public static final MSG_PLAYBACK_PARAMETERS_CHANGED:I
.field private static final MSG_PLAYBACK_PARAMETERS_CHANGED_INTERNAL:I
.field private static final MSG_PREPARE:I
.field private static final MSG_REFRESH_SOURCE_INFO:I
.field private static final MSG_RELEASE:I
.field private static final MSG_SEEK_TO:I
.field private static final MSG_SEND_MESSAGE:I
.field private static final MSG_SEND_MESSAGE_TO_TARGET_THREAD:I
.field private static final MSG_SET_FOREGROUND_MODE:I
.field private static final MSG_SET_PLAYBACK_PARAMETERS:I
.field private static final MSG_SET_PLAY_WHEN_READY:I
.field private static final MSG_SET_REPEAT_MODE:I
.field private static final MSG_SET_SEEK_PARAMETERS:I
.field private static final MSG_SET_SHUFFLE_ENABLED:I
.field private static final MSG_SOURCE_CONTINUE_LOADING_REQUESTED:I
.field private static final MSG_STOP:I
.field private static final MSG_TRACK_SELECTION_INVALIDATED:I
.field private static final PREPARING_SOURCE_INTERVAL_MS:I
.field private static final RENDERING_INTERVAL_MS:I
.field private static final TAG:Ljava/lang/String; = "ExoPlayerImplInternal"
# instance fields
.field private final backBufferDurationUs:J
.field private final bandwidthMeter:Lcom/google/android/exoplayer2/upstream/BandwidthMeter;
.field private final clock:Lcom/google/android/exoplayer2/util/Clock;
.field private final emptyTrackSelectorResult:Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
.field private enabledRenderers:[Lcom/google/android/exoplayer2/Renderer;
.field private final eventHandler:Landroid/os/Handler;
.field private foregroundMode:Z
.field private final handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
.field private final internalPlaybackThread:Landroid/os/HandlerThread;
.field private final loadControl:Lcom/google/android/exoplayer2/LoadControl;
.field private final mediaClock:Lcom/google/android/exoplayer2/DefaultMediaClock;
.field private mediaSource:Lcom/google/android/exoplayer2/source/MediaSource;
.field private nextPendingMessageIndex:I
.field private pendingInitialSeekPosition:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;
.field private final pendingMessages:Ljava/util/ArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayList<",
"Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;",
">;"
}
.end annotation
.end field
.field private pendingPrepareCount:I
.field private final period:Lcom/google/android/exoplayer2/Timeline$Period;
.field private playWhenReady:Z
.field private playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.field private final playbackInfoUpdate:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;
.field private final queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
.field private rebuffering:Z
.field private released:Z
.field private final rendererCapabilities:[Lcom/google/android/exoplayer2/RendererCapabilities;
.field private rendererPositionUs:J
.field private final renderers:[Lcom/google/android/exoplayer2/Renderer;
.field private repeatMode:I
.field private final retainBackBufferFromKeyframe:Z
.field private seekParameters:Lcom/google/android/exoplayer2/SeekParameters;
.field private shuffleModeEnabled:Z
.field private final trackSelector:Lcom/google/android/exoplayer2/trackselection/TrackSelector;
.field private final window:Lcom/google/android/exoplayer2/Timeline$Window;
# direct methods
.method static constructor <clinit>()V
.registers 1
const v0, 0x1687
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->IDLE_INTERVAL_MS:I
const v0, 0x156d
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_DO_SOME_WORK:I
const v0, 0x156d
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_ERROR:I
const v0, 0x1566
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_PERIOD_PREPARED:I
const v0, 0x156f
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_PLAYBACK_INFO_CHANGED:I
const v0, 0x156e
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_PLAYBACK_PARAMETERS_CHANGED:I
const v0, 0x157e
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_PLAYBACK_PARAMETERS_CHANGED_INTERNAL:I
const v0, 0x156f
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_PREPARE:I
const v0, 0x1567
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_REFRESH_SOURCE_INFO:I
const v0, 0x1568
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_RELEASE:I
const v0, 0x156c
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_SEEK_TO:I
const v0, 0x1560
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_SEND_MESSAGE:I
const v0, 0x157f
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_SEND_MESSAGE_TO_TARGET_THREAD:I
const v0, 0x1561
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_SET_FOREGROUND_MODE:I
const v0, 0x156b
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_SET_PLAYBACK_PARAMETERS:I
const v0, 0x156e
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_SET_PLAY_WHEN_READY:I
const v0, 0x1563
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_SET_REPEAT_MODE:I
const v0, 0x156a
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_SET_SEEK_PARAMETERS:I
const v0, 0x1562
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_SET_SHUFFLE_ENABLED:I
const v0, 0x1565
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_SOURCE_CONTINUE_LOADING_REQUESTED:I
const v0, 0x1569
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_STOP:I
const v0, 0x1564
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->MSG_TRACK_SELECTION_INVALIDATED:I
const v0, 0x1565
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->PREPARING_SOURCE_INTERVAL_MS:I
const v0, 0x1565
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->RENDERING_INTERVAL_MS:I
return-void
.end method
.method public constructor <init>([Lcom/google/android/exoplayer2/Renderer;Lcom/google/android/exoplayer2/trackselection/TrackSelector;Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;Lcom/google/android/exoplayer2/LoadControl;Lcom/google/android/exoplayer2/upstream/BandwidthMeter;ZIZLandroid/os/Handler;Lcom/google/android/exoplayer2/util/Clock;)V
.registers 14
.param p1, "renderers" # [Lcom/google/android/exoplayer2/Renderer;
.param p2, "trackSelector" # Lcom/google/android/exoplayer2/trackselection/TrackSelector;
.param p3, "emptyTrackSelectorResult" # Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
.param p4, "loadControl" # Lcom/google/android/exoplayer2/LoadControl;
.param p5, "bandwidthMeter" # Lcom/google/android/exoplayer2/upstream/BandwidthMeter;
.param p6, "playWhenReady" # Z
.param p7, "repeatMode" # I
.param p8, "shuffleModeEnabled" # Z
.param p9, "eventHandler" # Landroid/os/Handler;
.param p10, "clock" # Lcom/google/android/exoplayer2/util/Clock;
.line 136
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 137
iput-object p1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->renderers:[Lcom/google/android/exoplayer2/Renderer;
.line 138
iput-object p2, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->trackSelector:Lcom/google/android/exoplayer2/trackselection/TrackSelector;
.line 139
iput-object p3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->emptyTrackSelectorResult:Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
.line 140
iput-object p4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->loadControl:Lcom/google/android/exoplayer2/LoadControl;
.line 141
iput-object p5, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->bandwidthMeter:Lcom/google/android/exoplayer2/upstream/BandwidthMeter;
.line 142
iput-boolean p6, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playWhenReady:Z
.line 143
iput p7, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->repeatMode:I
.line 144
iput-boolean p8, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->shuffleModeEnabled:Z
.line 145
iput-object p9, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->eventHandler:Landroid/os/Handler;
.line 146
iput-object p10, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->clock:Lcom/google/android/exoplayer2/util/Clock;
.line 147
new-instance v0, Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-direct {v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
.line 149
invoke-interface {p4}, Lcom/google/android/exoplayer2/LoadControl;->getBackBufferDurationUs()J
move-result-wide v0
iput-wide v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->backBufferDurationUs:J
.line 150
invoke-interface {p4}, Lcom/google/android/exoplayer2/LoadControl;->retainBackBufferFromKeyframe()Z
move-result v0
iput-boolean v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->retainBackBufferFromKeyframe:Z
.line 152
sget-object v0, Lcom/google/android/exoplayer2/SeekParameters;->DEFAULT:Lcom/google/android/exoplayer2/SeekParameters;
iput-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->seekParameters:Lcom/google/android/exoplayer2/SeekParameters;
.line 153
nop
.line 154
const-wide v0, -0x7fffffffffffffffL # -4.9E-324
invoke-static {v0, v1, p3}, Lcom/google/android/exoplayer2/PlaybackInfo;->createDummy(JLcom/google/android/exoplayer2/trackselection/TrackSelectorResult;)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v0
iput-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 155
new-instance v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;
const/4 v1, 0x0
invoke-direct {v0, v1}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;-><init>(Lcom/google/android/exoplayer2/ExoPlayerImplInternal$1;)V
iput-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfoUpdate:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;
.line 156
array-length v0, p1
new-array v0, v0, [Lcom/google/android/exoplayer2/RendererCapabilities;
iput-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rendererCapabilities:[Lcom/google/android/exoplayer2/RendererCapabilities;
.line 157
const/4 v0, 0x0
.local v0, "i":I
:goto_48
array-length v1, p1
if-ge v0, v1, :cond_5d
.line 158
aget-object v1, p1, v0
invoke-interface {v1, v0}, Lcom/google/android/exoplayer2/Renderer;->setIndex(I)V
.line 159
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rendererCapabilities:[Lcom/google/android/exoplayer2/RendererCapabilities;
aget-object v2, p1, v0
invoke-interface {v2}, Lcom/google/android/exoplayer2/Renderer;->getCapabilities()Lcom/google/android/exoplayer2/RendererCapabilities;
move-result-object v2
aput-object v2, v1, v0
.line 157
add-int/lit8 v0, v0, 0x1
goto :goto_48
.line 161
.end local v0 # "i":I
:cond_5d
new-instance v0, Lcom/google/android/exoplayer2/DefaultMediaClock;
invoke-direct {v0, p0, p10}, Lcom/google/android/exoplayer2/DefaultMediaClock;-><init>(Lcom/google/android/exoplayer2/DefaultMediaClock$PlaybackParameterListener;Lcom/google/android/exoplayer2/util/Clock;)V
iput-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaClock:Lcom/google/android/exoplayer2/DefaultMediaClock;
.line 162
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
.line 163
const/4 v0, 0x0
new-array v0, v0, [Lcom/google/android/exoplayer2/Renderer;
iput-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->enabledRenderers:[Lcom/google/android/exoplayer2/Renderer;
.line 164
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/ExoPlayerImplInternal;->window:Lcom/google/android/exoplayer2/Timeline$Window;
.line 165
new-instance v0, Lcom/google/android/exoplayer2/Timeline$Period;
invoke-direct {v0}, Lcom/google/android/exoplayer2/Timeline$Period;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->period:Lcom/google/android/exoplayer2/Timeline$Period;
.line 166
invoke-virtual {p2, p0, p5}, Lcom/google/android/exoplayer2/trackselection/TrackSelector;->init(Lcom/google/android/exoplayer2/trackselection/TrackSelector$InvalidationListener;Lcom/google/android/exoplayer2/upstream/BandwidthMeter;)V
.line 170
new-instance v0, Landroid/os/HandlerThread;
const/16 v1, -0x10
const-string v2, "ExoPlayerImplInternal:Handler"
invoke-direct {v0, v2, v1}, Landroid/os/HandlerThread;-><init>(Ljava/lang/String;I)V
iput-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->internalPlaybackThread:Landroid/os/HandlerThread;
.line 172
invoke-virtual {v0}, Landroid/os/HandlerThread;->start()V
.line 173
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->internalPlaybackThread:Landroid/os/HandlerThread;
invoke-virtual {v0}, Landroid/os/HandlerThread;->getLooper()Landroid/os/Looper;
move-result-object v0
invoke-interface {p10, v0, p0}, Lcom/google/android/exoplayer2/util/Clock;->createHandler(Landroid/os/Looper;Landroid/os/Handler$Callback;)Lcom/google/android/exoplayer2/util/HandlerWrapper;
move-result-object v0
iput-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
.line 174
return-void
.end method
.method private deliverMessage(Lcom/google/android/exoplayer2/PlayerMessage;)V
.registers 6
.param p1, "message" # Lcom/google/android/exoplayer2/PlayerMessage;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 947
invoke-virtual {p1}, Lcom/google/android/exoplayer2/PlayerMessage;->isCanceled()Z
move-result v0
if-eqz v0, :cond_7
.line 948
return-void
.line 951
:cond_7
const/4 v0, 0x1
:try_start_8
invoke-virtual {p1}, Lcom/google/android/exoplayer2/PlayerMessage;->getTarget()Lcom/google/android/exoplayer2/PlayerMessage$Target;
move-result-object v1
invoke-virtual {p1}, Lcom/google/android/exoplayer2/PlayerMessage;->getType()I
move-result v2
invoke-virtual {p1}, Lcom/google/android/exoplayer2/PlayerMessage;->getPayload()Ljava/lang/Object;
move-result-object v3
invoke-interface {v1, v2, v3}, Lcom/google/android/exoplayer2/PlayerMessage$Target;->handleMessage(ILjava/lang/Object;)V
:try_end_17
.catchall {:try_start_8 .. :try_end_17} :catchall_1c
.line 953
invoke-virtual {p1, v0}, Lcom/google/android/exoplayer2/PlayerMessage;->markAsProcessed(Z)V
.line 954
nop
.line 955
return-void
.line 953
:catchall_1c
move-exception v1
invoke-virtual {p1, v0}, Lcom/google/android/exoplayer2/PlayerMessage;->markAsProcessed(Z)V
.line 954
throw v1
.end method
.method private disableRenderer(Lcom/google/android/exoplayer2/Renderer;)V
.registers 3
.param p1, "renderer" # Lcom/google/android/exoplayer2/Renderer;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 1061
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaClock:Lcom/google/android/exoplayer2/DefaultMediaClock;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/DefaultMediaClock;->onRendererDisabled(Lcom/google/android/exoplayer2/Renderer;)V
.line 1062
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->ensureStopped(Lcom/google/android/exoplayer2/Renderer;)V
.line 1063
invoke-interface {p1}, Lcom/google/android/exoplayer2/Renderer;->disable()V
.line 1064
return-void
.end method
.method private doSomeWork()V
.registers 20
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;,
Ljava/io/IOException;
}
.end annotation
.line 548
move-object/from16 v0, p0
iget-object v1, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->clock:Lcom/google/android/exoplayer2/util/Clock;
invoke-interface {v1}, Lcom/google/android/exoplayer2/util/Clock;->uptimeMillis()J
move-result-wide v1
.line 549
.local v1, "operationStartTimeMs":J
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->updatePeriods()V
.line 550
iget-object v3, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v3}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->hasPlayingPeriod()Z
move-result v3
const-wide/16 v4, 0xa
if-nez v3, :cond_1c
.line 552
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->maybeThrowPeriodPrepareError()V
.line 553
invoke-direct {v0, v1, v2, v4, v5}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->scheduleNextWork(JJ)V
.line 554
return-void
.line 556
:cond_1c
iget-object v3, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v3}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getPlayingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v3
.line 558
.local v3, "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
const-string v6, "doSomeWork"
invoke-static {v6}, Lcom/google/android/exoplayer2/util/TraceUtil;->beginSection(Ljava/lang/String;)V
.line 560
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->updatePlaybackPositions()V
.line 561
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v6
const-wide/16 v8, 0x3e8
mul-long v6, v6, v8
.line 563
.local v6, "rendererPositionElapsedRealtimeUs":J
iget-object v10, v3, Lcom/google/android/exoplayer2/MediaPeriodHolder;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod;
iget-object v11, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-wide v11, v11, Lcom/google/android/exoplayer2/PlaybackInfo;->positionUs:J
iget-wide v13, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->backBufferDurationUs:J
sub-long/2addr v11, v13
iget-boolean v13, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->retainBackBufferFromKeyframe:Z
invoke-interface {v10, v11, v12, v13}, Lcom/google/android/exoplayer2/source/MediaPeriod;->discardBuffer(JZ)V
.line 566
const/4 v10, 0x1
.line 567
.local v10, "renderersEnded":Z
const/4 v11, 0x1
.line 568
.local v11, "renderersReadyOrEnded":Z
iget-object v12, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->enabledRenderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v13, v12
const/4 v15, 0x0
:goto_46
if-ge v15, v13, :cond_83
aget-object v14, v12, v15
.line 572
.local v14, "renderer":Lcom/google/android/exoplayer2/Renderer;
iget-wide v8, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rendererPositionUs:J
invoke-interface {v14, v8, v9, v6, v7}, Lcom/google/android/exoplayer2/Renderer;->render(JJ)V
.line 573
const/4 v8, 0x1
if-eqz v10, :cond_5a
invoke-interface {v14}, Lcom/google/android/exoplayer2/Renderer;->isEnded()Z
move-result v9
if-eqz v9, :cond_5a
const/4 v9, 0x1
goto :goto_5b
:cond_5a
const/4 v9, 0x0
:goto_5b
move v10, v9
.line 578
invoke-interface {v14}, Lcom/google/android/exoplayer2/Renderer;->isReady()Z
move-result v9
if-nez v9, :cond_71
invoke-interface {v14}, Lcom/google/android/exoplayer2/Renderer;->isEnded()Z
move-result v9
if-nez v9, :cond_71
.line 579
invoke-direct {v0, v14}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rendererWaitingForNextStream(Lcom/google/android/exoplayer2/Renderer;)Z
move-result v9
if-eqz v9, :cond_6f
goto :goto_71
:cond_6f
const/4 v9, 0x0
goto :goto_72
:cond_71
:goto_71
const/4 v9, 0x1
.line 580
.local v9, "rendererReadyOrEnded":Z
:goto_72
if-nez v9, :cond_77
.line 581
invoke-interface {v14}, Lcom/google/android/exoplayer2/Renderer;->maybeThrowStreamError()V
.line 583
:cond_77
if-eqz v11, :cond_7c
if-eqz v9, :cond_7c
goto :goto_7d
:cond_7c
const/4 v8, 0x0
:goto_7d
move v11, v8
.line 568
.end local v9 # "rendererReadyOrEnded":Z
.end local v14 # "renderer":Lcom/google/android/exoplayer2/Renderer;
add-int/lit8 v15, v15, 0x1
const-wide/16 v8, 0x3e8
goto :goto_46
.line 585
:cond_83
if-nez v11, :cond_88
.line 586
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->maybeThrowPeriodPrepareError()V
.line 589
:cond_88
iget-object v8, v3, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-wide v8, v8, Lcom/google/android/exoplayer2/MediaPeriodInfo;->durationUs:J
.line 590
.local v8, "playingPeriodDurationUs":J
const/4 v12, 0x4
const/4 v13, 0x3
const/4 v14, 0x2
if-eqz v10, :cond_af
const-wide v17, -0x7fffffffffffffffL # -4.9E-324
cmp-long v15, v8, v17
if-eqz v15, :cond_a2
iget-object v15, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-wide v4, v15, Lcom/google/android/exoplayer2/PlaybackInfo;->positionUs:J
cmp-long v15, v8, v4
if-gtz v15, :cond_af
:cond_a2
iget-object v4, v3, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-boolean v4, v4, Lcom/google/android/exoplayer2/MediaPeriodInfo;->isFinal:Z
if-eqz v4, :cond_af
.line 594
invoke-direct {v0, v12}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->setState(I)V
.line 595
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->stopRenderers()V
goto :goto_e4
.line 596
:cond_af
iget-object v4, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget v4, v4, Lcom/google/android/exoplayer2/PlaybackInfo;->playbackState:I
if-ne v4, v14, :cond_c6
.line 597
invoke-direct {v0, v11}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->shouldTransitionToReadyState(Z)Z
move-result v4
if-eqz v4, :cond_c6
.line 598
invoke-direct {v0, v13}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->setState(I)V
.line 599
iget-boolean v4, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playWhenReady:Z
if-eqz v4, :cond_e4
.line 600
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->startRenderers()V
goto :goto_e4
.line 602
:cond_c6
iget-object v4, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget v4, v4, Lcom/google/android/exoplayer2/PlaybackInfo;->playbackState:I
if-ne v4, v13, :cond_e4
iget-object v4, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->enabledRenderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v4, v4
if-nez v4, :cond_d8
.line 603
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->isTimelineReady()Z
move-result v4
if-eqz v4, :cond_da
goto :goto_e4
:cond_d8
if-nez v11, :cond_e4
.line 604
:cond_da
iget-boolean v4, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playWhenReady:Z
iput-boolean v4, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rebuffering:Z
.line 605
invoke-direct {v0, v14}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->setState(I)V
.line 606
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->stopRenderers()V
.line 609
:cond_e4
:goto_e4
iget-object v4, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget v4, v4, Lcom/google/android/exoplayer2/PlaybackInfo;->playbackState:I
if-ne v4, v14, :cond_f8
.line 610
iget-object v4, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->enabledRenderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v5, v4
const/4 v15, 0x0
:goto_ee
if-ge v15, v5, :cond_f8
aget-object v16, v4, v15
.line 611
.local v16, "renderer":Lcom/google/android/exoplayer2/Renderer;
invoke-interface/range {v16 .. v16}, Lcom/google/android/exoplayer2/Renderer;->maybeThrowStreamError()V
.line 610
.end local v16 # "renderer":Lcom/google/android/exoplayer2/Renderer;
add-int/lit8 v15, v15, 0x1
goto :goto_ee
.line 615
:cond_f8
iget-boolean v4, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playWhenReady:Z
if-eqz v4, :cond_102
iget-object v4, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget v4, v4, Lcom/google/android/exoplayer2/PlaybackInfo;->playbackState:I
if-eq v4, v13, :cond_108
:cond_102
iget-object v4, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget v4, v4, Lcom/google/android/exoplayer2/PlaybackInfo;->playbackState:I
if-ne v4, v14, :cond_10e
.line 617
:cond_108
const-wide/16 v4, 0xa
invoke-direct {v0, v1, v2, v4, v5}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->scheduleNextWork(JJ)V
goto :goto_124
.line 618
:cond_10e
iget-object v4, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->enabledRenderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v4, v4
if-eqz v4, :cond_11f
iget-object v4, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget v4, v4, Lcom/google/android/exoplayer2/PlaybackInfo;->playbackState:I
if-eq v4, v12, :cond_11f
.line 619
const-wide/16 v4, 0x3e8
invoke-direct {v0, v1, v2, v4, v5}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->scheduleNextWork(JJ)V
goto :goto_124
.line 621
:cond_11f
iget-object v4, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
invoke-interface {v4, v14}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->removeMessages(I)V
.line 624
:goto_124
invoke-static {}, Lcom/google/android/exoplayer2/util/TraceUtil;->endSection()V
.line 625
return-void
.end method
.method private enableRenderer(IZI)V
.registers 22
.param p1, "rendererIndex" # I
.param p2, "wasRendererEnabled" # Z
.param p3, "enabledRendererIndex" # I
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 1756
move-object/from16 v0, p0
move/from16 v1, p1
iget-object v2, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v2}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getPlayingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v2
.line 1757
.local v2, "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
iget-object v3, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->renderers:[Lcom/google/android/exoplayer2/Renderer;
aget-object v3, v3, v1
.line 1758
.local v3, "renderer":Lcom/google/android/exoplayer2/Renderer;
iget-object v4, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->enabledRenderers:[Lcom/google/android/exoplayer2/Renderer;
aput-object v3, v4, p3
.line 1759
invoke-interface {v3}, Lcom/google/android/exoplayer2/Renderer;->getState()I
move-result v4
if-nez v4, :cond_5e
.line 1760
invoke-virtual {v2}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getTrackSelectorResult()Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
move-result-object v13
.line 1761
.local v13, "trackSelectorResult":Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
iget-object v4, v13, Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;->rendererConfigurations:[Lcom/google/android/exoplayer2/RendererConfiguration;
aget-object v14, v4, v1
.line 1763
.local v14, "rendererConfiguration":Lcom/google/android/exoplayer2/RendererConfiguration;
iget-object v4, v13, Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;->selections:Lcom/google/android/exoplayer2/trackselection/TrackSelectionArray;
invoke-virtual {v4, v1}, Lcom/google/android/exoplayer2/trackselection/TrackSelectionArray;->get(I)Lcom/google/android/exoplayer2/trackselection/TrackSelection;
move-result-object v15
.line 1764
.local v15, "newSelection":Lcom/google/android/exoplayer2/trackselection/TrackSelection;
invoke-static {v15}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->getFormats(Lcom/google/android/exoplayer2/trackselection/TrackSelection;)[Lcom/google/android/exoplayer2/Format;
move-result-object v16
.line 1766
.local v16, "formats":[Lcom/google/android/exoplayer2/Format;
iget-boolean v4, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playWhenReady:Z
const/4 v5, 0x1
const/4 v6, 0x0
if-eqz v4, :cond_39
iget-object v4, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget v4, v4, Lcom/google/android/exoplayer2/PlaybackInfo;->playbackState:I
const/4 v7, 0x3
if-ne v4, v7, :cond_39
const/4 v4, 0x1
goto :goto_3a
:cond_39
const/4 v4, 0x0
:goto_3a
move/from16 v17, v4
.line 1768
.local v17, "playing":Z
if-nez p2, :cond_42
if-eqz v17, :cond_42
const/4 v10, 0x1
goto :goto_43
:cond_42
const/4 v10, 0x0
.line 1770
.local v10, "joining":Z
:goto_43
iget-object v4, v2, Lcom/google/android/exoplayer2/MediaPeriodHolder;->sampleStreams:[Lcom/google/android/exoplayer2/source/SampleStream;
aget-object v7, v4, v1
iget-wide v8, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rendererPositionUs:J
.line 1772
invoke-virtual {v2}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getRendererOffset()J
move-result-wide v11
.line 1770
move-object v4, v3
move-object v5, v14
move-object/from16 v6, v16
invoke-interface/range {v4 .. v12}, Lcom/google/android/exoplayer2/Renderer;->enable(Lcom/google/android/exoplayer2/RendererConfiguration;[Lcom/google/android/exoplayer2/Format;Lcom/google/android/exoplayer2/source/SampleStream;JZJ)V
.line 1773
iget-object v4, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaClock:Lcom/google/android/exoplayer2/DefaultMediaClock;
invoke-virtual {v4, v3}, Lcom/google/android/exoplayer2/DefaultMediaClock;->onRendererEnabled(Lcom/google/android/exoplayer2/Renderer;)V
.line 1775
if-eqz v17, :cond_5e
.line 1776
invoke-interface {v3}, Lcom/google/android/exoplayer2/Renderer;->start()V
.line 1779
.end local v10 # "joining":Z
.end local v13 # "trackSelectorResult":Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
.end local v14 # "rendererConfiguration":Lcom/google/android/exoplayer2/RendererConfiguration;
.end local v15 # "newSelection":Lcom/google/android/exoplayer2/trackselection/TrackSelection;
.end local v16 # "formats":[Lcom/google/android/exoplayer2/Format;
.end local v17 # "playing":Z
:cond_5e
return-void
.end method
.method private enableRenderers([ZI)V
.registers 8
.param p1, "rendererWasEnabledFlags" # [Z
.param p2, "totalEnabledRendererCount" # I
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 1735
new-array v0, p2, [Lcom/google/android/exoplayer2/Renderer;
iput-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->enabledRenderers:[Lcom/google/android/exoplayer2/Renderer;
.line 1736
const/4 v0, 0x0
.line 1737
.local v0, "enabledRendererCount":I
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getPlayingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v1
invoke-virtual {v1}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getTrackSelectorResult()Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
move-result-object v1
.line 1740
.local v1, "trackSelectorResult":Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
const/4 v2, 0x0
.local v2, "i":I
:goto_10
iget-object v3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->renderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v3, v3
if-ge v2, v3, :cond_25
.line 1741
invoke-virtual {v1, v2}, Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;->isRendererEnabled(I)Z
move-result v3
if-nez v3, :cond_22
.line 1742
iget-object v3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->renderers:[Lcom/google/android/exoplayer2/Renderer;
aget-object v3, v3, v2
invoke-interface {v3}, Lcom/google/android/exoplayer2/Renderer;->reset()V
.line 1740
:cond_22
add-int/lit8 v2, v2, 0x1
goto :goto_10
.line 1746
.end local v2 # "i":I
:cond_25
const/4 v2, 0x0
.restart local v2 # "i":I
:goto_26
iget-object v3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->renderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v3, v3
if-ge v2, v3, :cond_3c
.line 1747
invoke-virtual {v1, v2}, Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;->isRendererEnabled(I)Z
move-result v3
if-eqz v3, :cond_39
.line 1748
aget-boolean v3, p1, v2
add-int/lit8 v4, v0, 0x1
.end local v0 # "enabledRendererCount":I
.local v4, "enabledRendererCount":I
invoke-direct {p0, v2, v3, v0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->enableRenderer(IZI)V
move v0, v4
.line 1746
.end local v4 # "enabledRendererCount":I
.restart local v0 # "enabledRendererCount":I
:cond_39
add-int/lit8 v2, v2, 0x1
goto :goto_26
.line 1751
.end local v2 # "i":I
:cond_3c
return-void
.end method
.method private ensureStopped(Lcom/google/android/exoplayer2/Renderer;)V
.registers 4
.param p1, "renderer" # Lcom/google/android/exoplayer2/Renderer;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 1055
invoke-interface {p1}, Lcom/google/android/exoplayer2/Renderer;->getState()I
move-result v0
const/4 v1, 0x2
if-ne v0, v1, :cond_a
.line 1056
invoke-interface {p1}, Lcom/google/android/exoplayer2/Renderer;->stop()V
.line 1058
:cond_a
return-void
.end method
.method private static getFormats(Lcom/google/android/exoplayer2/trackselection/TrackSelection;)[Lcom/google/android/exoplayer2/Format;
.registers 5
.param p0, "newSelection" # Lcom/google/android/exoplayer2/trackselection/TrackSelection;
.line 1828
if-eqz p0, :cond_7
invoke-interface {p0}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->length()I
move-result v0
goto :goto_8
:cond_7
const/4 v0, 0x0
.line 1829
.local v0, "length":I
:goto_8
new-array v1, v0, [Lcom/google/android/exoplayer2/Format;
.line 1830
.local v1, "formats":[Lcom/google/android/exoplayer2/Format;
const/4 v2, 0x0
.local v2, "i":I
:goto_b
if-ge v2, v0, :cond_16
.line 1831
invoke-interface {p0, v2}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->getFormat(I)Lcom/google/android/exoplayer2/Format;
move-result-object v3
aput-object v3, v1, v2
.line 1830
add-int/lit8 v2, v2, 0x1
goto :goto_b
.line 1833
.end local v2 # "i":I
:cond_16
return-object v1
.end method
.method private getPeriodPosition(Lcom/google/android/exoplayer2/Timeline;IJ)Landroid/util/Pair;
.registers 11
.param p1, "timeline" # Lcom/google/android/exoplayer2/Timeline;
.param p2, "windowIndex" # I
.param p3, "windowPositionUs" # J
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/exoplayer2/Timeline;",
"IJ)",
"Landroid/util/Pair<",
"Ljava/lang/Object;",
"Ljava/lang/Long;",
">;"
}
.end annotation
.line 1485
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->window:Lcom/google/android/exoplayer2/Timeline$Window;
iget-object v2, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->period:Lcom/google/android/exoplayer2/Timeline$Period;
move-object v0, p1
move v3, p2
move-wide v4, p3
invoke-virtual/range {v0 .. v5}, Lcom/google/android/exoplayer2/Timeline;->getPeriodPosition(Lcom/google/android/exoplayer2/Timeline$Window;Lcom/google/android/exoplayer2/Timeline$Period;IJ)Landroid/util/Pair;
move-result-object v0
return-object v0
.end method
.method private getTotalBufferedDurationUs()J
.registers 3
.line 1811
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-wide v0, v0, Lcom/google/android/exoplayer2/PlaybackInfo;->bufferedPositionUs:J
invoke-direct {p0, v0, v1}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->getTotalBufferedDurationUs(J)J
move-result-wide v0
return-wide v0
.end method
.method private getTotalBufferedDurationUs(J)J
.registers 6
.param p1, "bufferedPositionInLoadingPeriodUs" # J
.line 1815
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getLoadingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
.line 1816
.local v0, "loadingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
if-nez v0, :cond_b
const-wide/16 v1, 0x0
goto :goto_13
:cond_b
iget-wide v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rendererPositionUs:J
.line 1818
invoke-virtual {v0, v1, v2}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->toPeriodTime(J)J
move-result-wide v1
sub-long v1, p1, v1
.line 1816
:goto_13
return-wide v1
.end method
.method private handleContinueLoadingRequested(Lcom/google/android/exoplayer2/source/MediaPeriod;)V
.registers 5
.param p1, "mediaPeriod" # Lcom/google/android/exoplayer2/source/MediaPeriod;
.line 1664
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->isLoading(Lcom/google/android/exoplayer2/source/MediaPeriod;)Z
move-result v0
if-nez v0, :cond_9
.line 1666
return-void
.line 1668
:cond_9
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
iget-wide v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rendererPositionUs:J
invoke-virtual {v0, v1, v2}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->reevaluateBuffer(J)V
.line 1669
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->maybeContinueLoading()V
.line 1670
return-void
.end method
.method private handleLoadingMediaPeriodChanged(Z)V
.registers 8
.param p1, "loadingTrackSelectionChanged" # Z
.line 1788
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getLoadingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
.line 1789
.local v0, "loadingMediaPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
if-nez v0, :cond_d
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v1, v1, Lcom/google/android/exoplayer2/PlaybackInfo;->periodId:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
goto :goto_11
:cond_d
iget-object v1, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-object v1, v1, Lcom/google/android/exoplayer2/MediaPeriodInfo;->id:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.line 1791
.local v1, "loadingMediaPeriodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
:goto_11
iget-object v2, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v2, v2, Lcom/google/android/exoplayer2/PlaybackInfo;->loadingMediaPeriodId:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.line 1792
invoke-virtual {v2, v1}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->equals(Ljava/lang/Object;)Z
move-result v2
xor-int/lit8 v2, v2, 0x1
.line 1793
.local v2, "loadingMediaPeriodChanged":Z
if-eqz v2, :cond_25
.line 1794
iget-object v3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
invoke-virtual {v3, v1}, Lcom/google/android/exoplayer2/PlaybackInfo;->copyWithLoadingMediaPeriodId(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v3
iput-object v3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 1796
:cond_25
iget-object v3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
if-nez v0, :cond_2c
iget-wide v4, v3, Lcom/google/android/exoplayer2/PlaybackInfo;->positionUs:J
goto :goto_30
.line 1799
:cond_2c
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getBufferedPositionUs()J
move-result-wide v4
:goto_30
iput-wide v4, v3, Lcom/google/android/exoplayer2/PlaybackInfo;->bufferedPositionUs:J
.line 1800
iget-object v3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->getTotalBufferedDurationUs()J
move-result-wide v4
iput-wide v4, v3, Lcom/google/android/exoplayer2/PlaybackInfo;->totalBufferedDurationUs:J
.line 1801
if-nez v2, :cond_3e
if-eqz p1, :cond_50
:cond_3e
if-eqz v0, :cond_50
iget-boolean v3, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->prepared:Z
if-eqz v3, :cond_50
.line 1804
nop
.line 1805
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getTrackGroups()Lcom/google/android/exoplayer2/source/TrackGroupArray;
move-result-object v3
.line 1806
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getTrackSelectorResult()Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
move-result-object v4
.line 1804
invoke-direct {p0, v3, v4}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->updateLoadControlTrackSelection(Lcom/google/android/exoplayer2/source/TrackGroupArray;Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;)V
.line 1808
:cond_50
return-void
.end method
.method private handlePeriodPrepared(Lcom/google/android/exoplayer2/source/MediaPeriod;)V
.registers 6
.param p1, "mediaPeriod" # Lcom/google/android/exoplayer2/source/MediaPeriod;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 1645
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->isLoading(Lcom/google/android/exoplayer2/source/MediaPeriod;)Z
move-result v0
if-nez v0, :cond_9
.line 1647
return-void
.line 1649
:cond_9
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getLoadingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
.line 1650
.local v0, "loadingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaClock:Lcom/google/android/exoplayer2/DefaultMediaClock;
.line 1651
invoke-virtual {v1}, Lcom/google/android/exoplayer2/DefaultMediaClock;->getPlaybackParameters()Lcom/google/android/exoplayer2/PlaybackParameters;
move-result-object v1
iget v1, v1, Lcom/google/android/exoplayer2/PlaybackParameters;->speed:F
iget-object v2, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v2, v2, Lcom/google/android/exoplayer2/PlaybackInfo;->timeline:Lcom/google/android/exoplayer2/Timeline;
.line 1650
invoke-virtual {v0, v1, v2}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->handlePrepared(FLcom/google/android/exoplayer2/Timeline;)V
.line 1652
nop
.line 1653
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getTrackGroups()Lcom/google/android/exoplayer2/source/TrackGroupArray;
move-result-object v1
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getTrackSelectorResult()Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
move-result-object v2
.line 1652
invoke-direct {p0, v1, v2}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->updateLoadControlTrackSelection(Lcom/google/android/exoplayer2/source/TrackGroupArray;Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;)V
.line 1654
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->hasPlayingPeriod()Z
move-result v1
if-nez v1, :cond_43
.line 1656
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->advancePlayingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v1
.line 1657
.local v1, "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
iget-object v2, v1, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-wide v2, v2, Lcom/google/android/exoplayer2/MediaPeriodInfo;->startPositionUs:J
invoke-direct {p0, v2, v3}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->resetRendererPosition(J)V
.line 1658
const/4 v2, 0x0
invoke-direct {p0, v2}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->updatePlayingPeriodRenderers(Lcom/google/android/exoplayer2/MediaPeriodHolder;)V
.line 1660
.end local v1 # "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
:cond_43
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->maybeContinueLoading()V
.line 1661
return-void
.end method
.method private handlePlaybackParameters(Lcom/google/android/exoplayer2/PlaybackParameters;)V
.registers 7
.param p1, "playbackParameters" # Lcom/google/android/exoplayer2/PlaybackParameters;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 1674
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->eventHandler:Landroid/os/Handler;
const/4 v1, 0x1
invoke-virtual {v0, v1, p1}, Landroid/os/Handler;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
move-result-object v0
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
.line 1675
iget v0, p1, Lcom/google/android/exoplayer2/PlaybackParameters;->speed:F
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->updateTrackSelectionPlaybackSpeed(F)V
.line 1676
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->renderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v1, v0
const/4 v2, 0x0
:goto_13
if-ge v2, v1, :cond_21
aget-object v3, v0, v2
.line 1677
.local v3, "renderer":Lcom/google/android/exoplayer2/Renderer;
if-eqz v3, :cond_1e
.line 1678
iget v4, p1, Lcom/google/android/exoplayer2/PlaybackParameters;->speed:F
invoke-interface {v3, v4}, Lcom/google/android/exoplayer2/Renderer;->setOperatingRate(F)V
.line 1676
.end local v3 # "renderer":Lcom/google/android/exoplayer2/Renderer;
:cond_1e
add-int/lit8 v2, v2, 0x1
goto :goto_13
.line 1681
:cond_21
return-void
.end method
.method private handleSourceInfoRefreshEndedPlayback()V
.registers 3
.line 1386
const/4 v0, 0x4
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->setState(I)V
.line 1388
const/4 v0, 0x0
const/4 v1, 0x1
invoke-direct {p0, v0, v0, v1, v0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->resetInternal(ZZZZ)V
.line 1393
return-void
.end method
.method private handleSourceInfoRefreshed(Lcom/google/android/exoplayer2/ExoPlayerImplInternal$MediaSourceRefreshInfo;)V
.registers 26
.param p1, "sourceRefreshInfo" # Lcom/google/android/exoplayer2/ExoPlayerImplInternal$MediaSourceRefreshInfo;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 1246
move-object/from16 v1, p0
move-object/from16 v2, p1
iget-object v0, v2, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$MediaSourceRefreshInfo;->source:Lcom/google/android/exoplayer2/source/MediaSource;
iget-object v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaSource:Lcom/google/android/exoplayer2/source/MediaSource;
if-eq v0, v3, :cond_b
.line 1248
return-void
.line 1251
:cond_b
iget-object v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v3, v0, Lcom/google/android/exoplayer2/PlaybackInfo;->timeline:Lcom/google/android/exoplayer2/Timeline;
.line 1252
.local v3, "oldTimeline":Lcom/google/android/exoplayer2/Timeline;
iget-object v4, v2, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$MediaSourceRefreshInfo;->timeline:Lcom/google/android/exoplayer2/Timeline;
.line 1253
.local v4, "timeline":Lcom/google/android/exoplayer2/Timeline;
iget-object v5, v2, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$MediaSourceRefreshInfo;->manifest:Ljava/lang/Object;
.line 1254
.local v5, "manifest":Ljava/lang/Object;
iget-object v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0, v4}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->setTimeline(Lcom/google/android/exoplayer2/Timeline;)V
.line 1255
iget-object v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
invoke-virtual {v0, v4, v5}, Lcom/google/android/exoplayer2/PlaybackInfo;->copyWithTimeline(Lcom/google/android/exoplayer2/Timeline;Ljava/lang/Object;)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v0
iput-object v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 1256
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->resolvePendingMessagePositions()V
.line 1258
iget v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingPrepareCount:I
const/4 v6, 0x0
const-wide v7, -0x7fffffffffffffffL # -4.9E-324
if-lez v0, :cond_d3
.line 1259
iget-object v11, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfoUpdate:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;
invoke-virtual {v11, v0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;->incrementPendingOperationAcks(I)V
.line 1260
iput v6, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingPrepareCount:I
.line 1261
iget-object v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingInitialSeekPosition:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;
if-eqz v0, :cond_8f
.line 1264
const/4 v6, 0x1
.line 1265
:try_start_39
invoke-direct {v1, v0, v6}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->resolveSeekPosition(Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;Z)Landroid/util/Pair;
move-result-object v0
:try_end_3d
.catch Lcom/google/android/exoplayer2/IllegalSeekPositionException; {:try_start_39 .. :try_end_3d} :catch_6e
.line 1275
.local v0, "periodPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
nop
.line 1276
const/4 v6, 0x0
iput-object v6, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingInitialSeekPosition:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;
.line 1277
if-nez v0, :cond_48
.line 1280
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handleSourceInfoRefreshEndedPlayback()V
goto/16 :goto_d1
.line 1282
:cond_48
iget-object v6, v0, Landroid/util/Pair;->first:Ljava/lang/Object;
.line 1283
.local v6, "periodUid":Ljava/lang/Object;
iget-object v7, v0, Landroid/util/Pair;->second:Ljava/lang/Object;
check-cast v7, Ljava/lang/Long;
invoke-virtual {v7}, Ljava/lang/Long;->longValue()J
move-result-wide v7
.line 1284
.local v7, "positionUs":J
iget-object v11, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v11, v6, v7, v8}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->resolveMediaPeriodIdForAds(Ljava/lang/Object;J)Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
move-result-object v17
.line 1285
.local v17, "periodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-object v11, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 1287
invoke-virtual/range {v17 .. v17}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->isAd()Z
move-result v12
if-eqz v12, :cond_63
const-wide/16 v13, 0x0
goto :goto_64
:cond_63
move-wide v13, v7
.line 1286
:goto_64
move-object/from16 v12, v17
move-wide v15, v7
invoke-virtual/range {v11 .. v16}, Lcom/google/android/exoplayer2/PlaybackInfo;->resetToNewPosition(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJ)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v9
iput-object v9, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
goto :goto_d1
.line 1266
.end local v0 # "periodPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
.end local v6 # "periodUid":Ljava/lang/Object;
.end local v7 # "positionUs":J
.end local v17 # "periodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
:catch_6e
move-exception v0
move-object v6, v0
move-object v0, v6
.line 1267
.local v0, "e":Lcom/google/android/exoplayer2/IllegalSeekPositionException;
iget-object v6, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-boolean v7, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->shuffleModeEnabled:Z
iget-object v8, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->window:Lcom/google/android/exoplayer2/Timeline$Window;
.line 1268
invoke-virtual {v6, v7, v8}, Lcom/google/android/exoplayer2/PlaybackInfo;->getDummyFirstMediaPeriodId(ZLcom/google/android/exoplayer2/Timeline$Window;)Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
move-result-object v6
.line 1269
.local v6, "firstMediaPeriodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-object v9, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
const-wide v11, -0x7fffffffffffffffL # -4.9E-324
const-wide v13, -0x7fffffffffffffffL # -4.9E-324
.line 1270
move-object v10, v6
invoke-virtual/range {v9 .. v14}, Lcom/google/android/exoplayer2/PlaybackInfo;->resetToNewPosition(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJ)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v7
iput-object v7, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 1274
throw v0
.line 1289
.end local v0 # "e":Lcom/google/android/exoplayer2/IllegalSeekPositionException;
.end local v6 # "firstMediaPeriodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
:cond_8f
iget-object v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-wide v11, v0, Lcom/google/android/exoplayer2/PlaybackInfo;->startPositionUs:J
cmp-long v0, v11, v7
if-nez v0, :cond_d1
.line 1290
invoke-virtual {v4}, Lcom/google/android/exoplayer2/Timeline;->isEmpty()Z
move-result v0
if-eqz v0, :cond_a1
.line 1291
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handleSourceInfoRefreshEndedPlayback()V
goto :goto_d2
.line 1293
:cond_a1
iget-boolean v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->shuffleModeEnabled:Z
.line 1295
invoke-virtual {v4, v0}, Lcom/google/android/exoplayer2/Timeline;->getFirstWindowIndex(Z)I
move-result v0
.line 1294
invoke-direct {v1, v4, v0, v7, v8}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->getPeriodPosition(Lcom/google/android/exoplayer2/Timeline;IJ)Landroid/util/Pair;
move-result-object v0
.line 1296
.local v0, "defaultPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
iget-object v6, v0, Landroid/util/Pair;->first:Ljava/lang/Object;
.line 1297
.local v6, "periodUid":Ljava/lang/Object;
iget-object v7, v0, Landroid/util/Pair;->second:Ljava/lang/Object;
check-cast v7, Ljava/lang/Long;
invoke-virtual {v7}, Ljava/lang/Long;->longValue()J
move-result-wide v7
.line 1298
.local v7, "startPositionUs":J
iget-object v11, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v11, v6, v7, v8}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->resolveMediaPeriodIdForAds(Ljava/lang/Object;J)Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
move-result-object v17
.line 1299
.restart local v17 # "periodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-object v11, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 1302
invoke-virtual/range {v17 .. v17}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->isAd()Z
move-result v12
if-eqz v12, :cond_c6
const-wide/16 v13, 0x0
goto :goto_c7
:cond_c6
move-wide v13, v7
.line 1300
:goto_c7
move-object/from16 v12, v17
move-wide v15, v7
invoke-virtual/range {v11 .. v16}, Lcom/google/android/exoplayer2/PlaybackInfo;->resetToNewPosition(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJ)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v9
iput-object v9, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
goto :goto_d2
.line 1289
.end local v0 # "defaultPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
.end local v6 # "periodUid":Ljava/lang/Object;
.end local v7 # "startPositionUs":J
.end local v17 # "periodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
:cond_d1
:goto_d1
nop
.line 1306
:goto_d2
return-void
.line 1309
:cond_d3
invoke-virtual {v3}, Lcom/google/android/exoplayer2/Timeline;->isEmpty()Z
move-result v0
if-eqz v0, :cond_10f
.line 1311
invoke-virtual {v4}, Lcom/google/android/exoplayer2/Timeline;->isEmpty()Z
move-result v0
if-nez v0, :cond_10e
.line 1312
iget-boolean v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->shuffleModeEnabled:Z
.line 1314
invoke-virtual {v4, v0}, Lcom/google/android/exoplayer2/Timeline;->getFirstWindowIndex(Z)I
move-result v0
.line 1313
invoke-direct {v1, v4, v0, v7, v8}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->getPeriodPosition(Lcom/google/android/exoplayer2/Timeline;IJ)Landroid/util/Pair;
move-result-object v0
.line 1315
.restart local v0 # "defaultPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
iget-object v6, v0, Landroid/util/Pair;->first:Ljava/lang/Object;
.line 1316
.restart local v6 # "periodUid":Ljava/lang/Object;
iget-object v7, v0, Landroid/util/Pair;->second:Ljava/lang/Object;
check-cast v7, Ljava/lang/Long;
invoke-virtual {v7}, Ljava/lang/Long;->longValue()J
move-result-wide v7
.line 1317
.restart local v7 # "startPositionUs":J
iget-object v11, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v11, v6, v7, v8}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->resolveMediaPeriodIdForAds(Ljava/lang/Object;J)Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
move-result-object v17
.line 1318
.restart local v17 # "periodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-object v11, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 1321
invoke-virtual/range {v17 .. v17}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->isAd()Z
move-result v12
if-eqz v12, :cond_104
const-wide/16 v13, 0x0
goto :goto_105
:cond_104
move-wide v13, v7
.line 1319
:goto_105
move-object/from16 v12, v17
move-wide v15, v7
invoke-virtual/range {v11 .. v16}, Lcom/google/android/exoplayer2/PlaybackInfo;->resetToNewPosition(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJ)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v9
iput-object v9, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 1324
.end local v0 # "defaultPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
.end local v6 # "periodUid":Ljava/lang/Object;
.end local v7 # "startPositionUs":J
.end local v17 # "periodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
:cond_10e
return-void
.line 1326
:cond_10f
iget-object v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getFrontPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
.line 1327
.local v0, "periodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
iget-object v11, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-wide v14, v11, Lcom/google/android/exoplayer2/PlaybackInfo;->contentPositionUs:J
.line 1328
.local v14, "contentPositionUs":J
if-nez v0, :cond_122
iget-object v11, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v11, v11, Lcom/google/android/exoplayer2/PlaybackInfo;->periodId:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-object v11, v11, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->periodUid:Ljava/lang/Object;
goto :goto_124
:cond_122
iget-object v11, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->uid:Ljava/lang/Object;
.line 1330
.local v11, "playingPeriodUid":Ljava/lang/Object;
:goto_124
invoke-virtual {v4, v11}, Lcom/google/android/exoplayer2/Timeline;->getIndexOfPeriod(Ljava/lang/Object;)I
move-result v13
.line 1331
.local v13, "periodIndex":I
const/4 v12, -0x1
if-ne v13, v12, :cond_195
.line 1334
invoke-direct {v1, v11, v3, v4}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->resolveSubsequentPeriod(Ljava/lang/Object;Lcom/google/android/exoplayer2/Timeline;Lcom/google/android/exoplayer2/Timeline;)Ljava/lang/Object;
move-result-object v6
.line 1335
.local v6, "newPeriodUid":Ljava/lang/Object;
if-nez v6, :cond_135
.line 1337
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handleSourceInfoRefreshEndedPlayback()V
.line 1338
return-void
.line 1341
:cond_135
iget-object v12, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->period:Lcom/google/android/exoplayer2/Timeline$Period;
.line 1343
invoke-virtual {v4, v6, v12}, Lcom/google/android/exoplayer2/Timeline;->getPeriodByUid(Ljava/lang/Object;Lcom/google/android/exoplayer2/Timeline$Period;)Lcom/google/android/exoplayer2/Timeline$Period;
move-result-object v12
iget v12, v12, Lcom/google/android/exoplayer2/Timeline$Period;->windowIndex:I
.line 1342
invoke-direct {v1, v4, v12, v7, v8}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->getPeriodPosition(Lcom/google/android/exoplayer2/Timeline;IJ)Landroid/util/Pair;
move-result-object v7
.line 1344
.local v7, "defaultPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
iget-object v6, v7, Landroid/util/Pair;->first:Ljava/lang/Object;
.line 1345
iget-object v8, v7, Landroid/util/Pair;->second:Ljava/lang/Object;
check-cast v8, Ljava/lang/Long;
invoke-virtual {v8}, Ljava/lang/Long;->longValue()J
move-result-wide v14
.line 1346
iget-object v8, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v8, v6, v14, v15}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->resolveMediaPeriodIdForAds(Ljava/lang/Object;J)Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
move-result-object v8
.line 1347
.local v8, "periodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
if-eqz v0, :cond_172
.line 1349
:cond_153
:goto_153
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v12
if-eqz v12, :cond_172
.line 1350
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
.line 1351
iget-object v12, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-object v12, v12, Lcom/google/android/exoplayer2/MediaPeriodInfo;->id:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
invoke-virtual {v12, v8}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->equals(Ljava/lang/Object;)Z
move-result v12
if-eqz v12, :cond_153
.line 1352
iget-object v12, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
iget-object v9, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
invoke-virtual {v12, v9}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getUpdatedMediaPeriodInfo(Lcom/google/android/exoplayer2/MediaPeriodInfo;)Lcom/google/android/exoplayer2/MediaPeriodInfo;
move-result-object v9
iput-object v9, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
goto :goto_153
.line 1357
:cond_172
invoke-virtual {v8}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->isAd()Z
move-result v9
if-eqz v9, :cond_17b
const-wide/16 v9, 0x0
goto :goto_17c
:cond_17b
move-wide v9, v14
:goto_17c
invoke-direct {v1, v8, v9, v10}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->seekToPeriodPosition(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;J)J
move-result-wide v9
.line 1358
.local v9, "seekPositionUs":J
iget-object v12, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 1360
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->getTotalBufferedDurationUs()J
move-result-wide v22
.line 1359
move-object/from16 v16, v12
move-object/from16 v17, v8
move-wide/from16 v18, v9
move-wide/from16 v20, v14
invoke-virtual/range {v16 .. v23}, Lcom/google/android/exoplayer2/PlaybackInfo;->copyWithNewPosition(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJJ)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v12
iput-object v12, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 1361
return-void
.line 1364
.end local v6 # "newPeriodUid":Ljava/lang/Object;
.end local v7 # "defaultPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
.end local v8 # "periodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.end local v9 # "seekPositionUs":J
:cond_195
iget-object v7, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v7, v7, Lcom/google/android/exoplayer2/PlaybackInfo;->periodId:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.line 1365
.local v7, "playingPeriodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
invoke-virtual {v7}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->isAd()Z
move-result v8
if-eqz v8, :cond_1d4
.line 1366
iget-object v8, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
.line 1367
invoke-virtual {v8, v11, v14, v15}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->resolveMediaPeriodIdForAds(Ljava/lang/Object;J)Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
move-result-object v8
.line 1368
.restart local v8 # "periodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
invoke-virtual {v8, v7}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->equals(Ljava/lang/Object;)Z
move-result v9
if-nez v9, :cond_1cf
.line 1370
nop
.line 1371
invoke-virtual {v8}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->isAd()Z
move-result v6
if-eqz v6, :cond_1b5
const-wide/16 v9, 0x0
goto :goto_1b6
:cond_1b5
move-wide v9, v14
:goto_1b6
invoke-direct {v1, v8, v9, v10}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->seekToPeriodPosition(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;J)J
move-result-wide v9
.line 1372
.restart local v9 # "seekPositionUs":J
iget-object v12, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 1374
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->getTotalBufferedDurationUs()J
move-result-wide v18
.line 1373
move/from16 v20, v13
.end local v13 # "periodIndex":I
.local v20, "periodIndex":I
move-object v13, v8
move-wide/from16 v21, v14
.end local v14 # "contentPositionUs":J
.local v21, "contentPositionUs":J
move-wide v14, v9
move-wide/from16 v16, v21
invoke-virtual/range {v12 .. v19}, Lcom/google/android/exoplayer2/PlaybackInfo;->copyWithNewPosition(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJJ)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v6
iput-object v6, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 1375
return-void
.line 1368
.end local v9 # "seekPositionUs":J
.end local v20 # "periodIndex":I
.end local v21 # "contentPositionUs":J
.restart local v13 # "periodIndex":I
.restart local v14 # "contentPositionUs":J
:cond_1cf
move/from16 v20, v13
move-wide/from16 v21, v14
.end local v13 # "periodIndex":I
.end local v14 # "contentPositionUs":J
.restart local v20 # "periodIndex":I
.restart local v21 # "contentPositionUs":J
goto :goto_1d8
.line 1365
.end local v8 # "periodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.end local v20 # "periodIndex":I
.end local v21 # "contentPositionUs":J
.restart local v13 # "periodIndex":I
.restart local v14 # "contentPositionUs":J
:cond_1d4
move/from16 v20, v13
move-wide/from16 v21, v14
.line 1379
.end local v13 # "periodIndex":I
.end local v14 # "contentPositionUs":J
.restart local v20 # "periodIndex":I
.restart local v21 # "contentPositionUs":J
:goto_1d8
iget-object v8, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
iget-wide v9, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rendererPositionUs:J
invoke-virtual {v8, v7, v9, v10}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->updateQueuedPeriods(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;J)Z
move-result v8
if-nez v8, :cond_1e5
.line 1380
invoke-direct {v1, v6}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->seekToCurrentPosition(Z)V
.line 1382
:cond_1e5
invoke-direct {v1, v6}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handleLoadingMediaPeriodChanged(Z)V
.line 1383
return-void
.end method
.method private isTimelineReady()Z
.registers 8
.line 1207
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getPlayingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
.line 1208
.local v0, "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v1
.line 1209
.local v1, "nextPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
iget-object v2, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-wide v2, v2, Lcom/google/android/exoplayer2/MediaPeriodInfo;->durationUs:J
.line 1210
.local v2, "playingPeriodDurationUs":J
const-wide v4, -0x7fffffffffffffffL # -4.9E-324
cmp-long v6, v2, v4
if-eqz v6, :cond_32
iget-object v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-wide v4, v4, Lcom/google/android/exoplayer2/PlaybackInfo;->positionUs:J
cmp-long v6, v4, v2
if-ltz v6, :cond_32
if-eqz v1, :cond_30
iget-boolean v4, v1, Lcom/google/android/exoplayer2/MediaPeriodHolder;->prepared:Z
if-nez v4, :cond_32
iget-object v4, v1, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-object v4, v4, Lcom/google/android/exoplayer2/MediaPeriodInfo;->id:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.line 1213
invoke-virtual {v4}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->isAd()Z
move-result v4
if-eqz v4, :cond_30
goto :goto_32
:cond_30
const/4 v4, 0x0
goto :goto_33
:cond_32
:goto_32
const/4 v4, 0x1
.line 1210
:goto_33
return v4
.end method
.method private maybeContinueLoading()V
.registers 9
.line 1684
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getLoadingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
.line 1685
.local v0, "loadingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNextLoadPositionUs()J
move-result-wide v1
.line 1686
.local v1, "nextLoadPositionUs":J
const-wide/high16 v3, -0x8000000000000000L
cmp-long v5, v1, v3
if-nez v5, :cond_15
.line 1687
const/4 v3, 0x0
invoke-direct {p0, v3}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->setIsLoading(Z)V
.line 1688
return-void
.line 1690
:cond_15
nop
.line 1691
invoke-direct {p0, v1, v2}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->getTotalBufferedDurationUs(J)J
move-result-wide v3
.line 1692
.local v3, "bufferedDurationUs":J
iget-object v5, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->loadControl:Lcom/google/android/exoplayer2/LoadControl;
iget-object v6, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaClock:Lcom/google/android/exoplayer2/DefaultMediaClock;
.line 1694
invoke-virtual {v6}, Lcom/google/android/exoplayer2/DefaultMediaClock;->getPlaybackParameters()Lcom/google/android/exoplayer2/PlaybackParameters;
move-result-object v6
iget v6, v6, Lcom/google/android/exoplayer2/PlaybackParameters;->speed:F
.line 1693
invoke-interface {v5, v3, v4, v6}, Lcom/google/android/exoplayer2/LoadControl;->shouldContinueLoading(JF)Z
move-result v5
.line 1695
.local v5, "continueLoading":Z
invoke-direct {p0, v5}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->setIsLoading(Z)V
.line 1696
if-eqz v5, :cond_32
.line 1697
iget-wide v6, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rendererPositionUs:J
invoke-virtual {v0, v6, v7}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->continueLoading(J)V
.line 1699
:cond_32
return-void
.end method
.method private maybeNotifyPlaybackInfoChanged()V
.registers 6
.line 420
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfoUpdate:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;->hasPendingUpdate(Lcom/google/android/exoplayer2/PlaybackInfo;)Z
move-result v0
if-eqz v0, :cond_33
.line 421
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->eventHandler:Landroid/os/Handler;
const/4 v1, 0x0
iget-object v2, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfoUpdate:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;
.line 424
invoke-static {v2}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;->access$100(Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;)I
move-result v2
iget-object v3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfoUpdate:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;
.line 425
invoke-static {v3}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;->access$200(Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;)Z
move-result v3
if-eqz v3, :cond_22
iget-object v3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfoUpdate:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;
.line 426
invoke-static {v3}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;->access$300(Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;)I
move-result v3
goto :goto_23
:cond_22
const/4 v3, -0x1
:goto_23
iget-object v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 422
invoke-virtual {v0, v1, v2, v3, v4}, Landroid/os/Handler;->obtainMessage(IIILjava/lang/Object;)Landroid/os/Message;
move-result-object v0
.line 429
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
.line 430
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfoUpdate:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;->reset(Lcom/google/android/exoplayer2/PlaybackInfo;)V
.line 432
:cond_33
return-void
.end method
.method private maybeThrowPeriodPrepareError()V
.registers 8
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 1230
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getLoadingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
.line 1231
.local v0, "loadingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getReadingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v1
.line 1232
.local v1, "readingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
if-eqz v0, :cond_31
iget-boolean v2, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->prepared:Z
if-nez v2, :cond_31
if-eqz v1, :cond_1a
.line 1234
invoke-virtual {v1}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v2
if-ne v2, v0, :cond_31
.line 1235
:cond_1a
iget-object v2, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->enabledRenderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v3, v2
const/4 v4, 0x0
:goto_1e
if-ge v4, v3, :cond_2c
aget-object v5, v2, v4
.line 1236
.local v5, "renderer":Lcom/google/android/exoplayer2/Renderer;
invoke-interface {v5}, Lcom/google/android/exoplayer2/Renderer;->hasReadStreamToEnd()Z
move-result v6
if-nez v6, :cond_29
.line 1237
return-void
.line 1235
.end local v5 # "renderer":Lcom/google/android/exoplayer2/Renderer;
:cond_29
add-int/lit8 v4, v4, 0x1
goto :goto_1e
.line 1240
:cond_2c
iget-object v2, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod;
invoke-interface {v2}, Lcom/google/android/exoplayer2/source/MediaPeriod;->maybeThrowPrepareError()V
.line 1242
:cond_31
return-void
.end method
.method private maybeThrowSourceInfoRefreshError()V
.registers 7
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 1217
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getLoadingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
.line 1218
.local v0, "loadingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
if-eqz v0, :cond_1a
.line 1220
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->enabledRenderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v2, v1
const/4 v3, 0x0
:goto_c
if-ge v3, v2, :cond_1a
aget-object v4, v1, v3
.line 1221
.local v4, "renderer":Lcom/google/android/exoplayer2/Renderer;
invoke-interface {v4}, Lcom/google/android/exoplayer2/Renderer;->hasReadStreamToEnd()Z
move-result v5
if-nez v5, :cond_17
.line 1222
return-void
.line 1220
.end local v4 # "renderer":Lcom/google/android/exoplayer2/Renderer;
:cond_17
add-int/lit8 v3, v3, 0x1
goto :goto_c
.line 1226
:cond_1a
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaSource:Lcom/google/android/exoplayer2/source/MediaSource;
invoke-interface {v1}, Lcom/google/android/exoplayer2/source/MediaSource;->maybeThrowSourceInfoRefreshError()V
.line 1227
return-void
.end method
.method private maybeTriggerPendingMessages(JJ)V
.registers 12
.param p1, "oldPeriodPositionUs" # J
.param p3, "newPeriodPositionUs" # J
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 999
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->isEmpty()Z
move-result v0
if-nez v0, :cond_fd
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v0, v0, Lcom/google/android/exoplayer2/PlaybackInfo;->periodId:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->isAd()Z
move-result v0
if-eqz v0, :cond_14
goto/16 :goto_fd
.line 1004
:cond_14
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-wide v0, v0, Lcom/google/android/exoplayer2/PlaybackInfo;->startPositionUs:J
cmp-long v2, v0, p1
if-nez v2, :cond_1f
.line 1005
const-wide/16 v0, 0x1
sub-long/2addr p1, v0
.line 1008
:cond_1f
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v0, v0, Lcom/google/android/exoplayer2/PlaybackInfo;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v1, v1, Lcom/google/android/exoplayer2/PlaybackInfo;->periodId:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-object v1, v1, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->periodUid:Ljava/lang/Object;
.line 1009
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/Timeline;->getIndexOfPeriod(Ljava/lang/Object;)I
move-result v0
.line 1010
.local v0, "currentPeriodIndex":I
iget v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->nextPendingMessageIndex:I
const/4 v2, 0x0
if-lez v1, :cond_3d
iget-object v3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
add-int/lit8 v1, v1, -0x1
.line 1011
invoke-virtual {v3, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;
goto :goto_3e
:cond_3d
move-object v1, v2
.line 1012
.local v1, "previousInfo":Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;
:goto_3e
if-eqz v1, :cond_64
iget v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->resolvedPeriodIndex:I
if-gt v3, v0, :cond_4e
iget v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->resolvedPeriodIndex:I
if-ne v3, v0, :cond_64
iget-wide v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->resolvedPeriodTimeUs:J
cmp-long v5, v3, p1
if-lez v5, :cond_64
.line 1016
:cond_4e
iget v3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->nextPendingMessageIndex:I
add-int/lit8 v3, v3, -0x1
iput v3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->nextPendingMessageIndex:I
.line 1017
if-lez v3, :cond_61
iget-object v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
add-int/lit8 v3, v3, -0x1
.line 1018
invoke-virtual {v4, v3}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v3
check-cast v3, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;
goto :goto_62
:cond_61
move-object v3, v2
:goto_62
move-object v1, v3
goto :goto_3e
.line 1020
:cond_64
iget v3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->nextPendingMessageIndex:I
iget-object v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
.line 1021
invoke-virtual {v4}, Ljava/util/ArrayList;->size()I
move-result v4
if-ge v3, v4, :cond_79
iget-object v3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
iget v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->nextPendingMessageIndex:I
.line 1022
invoke-virtual {v3, v4}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v3
check-cast v3, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;
goto :goto_7a
:cond_79
move-object v3, v2
.line 1024
.local v3, "nextInfo":Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;
:goto_7a
if-eqz v3, :cond_aa
iget-object v4, v3, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->resolvedPeriodUid:Ljava/lang/Object;
if-eqz v4, :cond_aa
iget v4, v3, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->resolvedPeriodIndex:I
if-lt v4, v0, :cond_8e
iget v4, v3, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->resolvedPeriodIndex:I
if-ne v4, v0, :cond_aa
iget-wide v4, v3, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->resolvedPeriodTimeUs:J
cmp-long v6, v4, p1
if-gtz v6, :cond_aa
.line 1029
:cond_8e
iget v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->nextPendingMessageIndex:I
add-int/lit8 v4, v4, 0x1
iput v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->nextPendingMessageIndex:I
.line 1030
iget-object v5, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
.line 1031
invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
move-result v5
if-ge v4, v5, :cond_a7
iget-object v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
iget v5, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->nextPendingMessageIndex:I
.line 1032
invoke-virtual {v4, v5}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v4
check-cast v4, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;
goto :goto_a8
:cond_a7
move-object v4, v2
:goto_a8
move-object v3, v4
goto :goto_7a
.line 1036
:cond_aa
:goto_aa
if-eqz v3, :cond_fc
iget-object v4, v3, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->resolvedPeriodUid:Ljava/lang/Object;
if-eqz v4, :cond_fc
iget v4, v3, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->resolvedPeriodIndex:I
if-ne v4, v0, :cond_fc
iget-wide v4, v3, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->resolvedPeriodTimeUs:J
cmp-long v6, v4, p1
if-lez v6, :cond_fc
iget-wide v4, v3, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->resolvedPeriodTimeUs:J
cmp-long v6, v4, p3
if-gtz v6, :cond_fc
.line 1041
iget-object v4, v3, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->message:Lcom/google/android/exoplayer2/PlayerMessage;
invoke-direct {p0, v4}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->sendMessageToTarget(Lcom/google/android/exoplayer2/PlayerMessage;)V
.line 1042
iget-object v4, v3, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->message:Lcom/google/android/exoplayer2/PlayerMessage;
invoke-virtual {v4}, Lcom/google/android/exoplayer2/PlayerMessage;->getDeleteAfterDelivery()Z
move-result v4
if-nez v4, :cond_dd
iget-object v4, v3, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->message:Lcom/google/android/exoplayer2/PlayerMessage;
invoke-virtual {v4}, Lcom/google/android/exoplayer2/PlayerMessage;->isCanceled()Z
move-result v4
if-eqz v4, :cond_d6
goto :goto_dd
.line 1045
:cond_d6
iget v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->nextPendingMessageIndex:I
add-int/lit8 v4, v4, 0x1
iput v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->nextPendingMessageIndex:I
goto :goto_e4
.line 1043
:cond_dd
:goto_dd
iget-object v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
iget v5, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->nextPendingMessageIndex:I
invoke-virtual {v4, v5}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
.line 1047
:goto_e4
iget v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->nextPendingMessageIndex:I
iget-object v5, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
.line 1048
invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
move-result v5
if-ge v4, v5, :cond_f9
iget-object v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
iget v5, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->nextPendingMessageIndex:I
.line 1049
invoke-virtual {v4, v5}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v4
check-cast v4, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;
goto :goto_fa
:cond_f9
move-object v4, v2
:goto_fa
move-object v3, v4
goto :goto_aa
.line 1052
:cond_fc
return-void
.line 1000
.end local v0 # "currentPeriodIndex":I
.end local v1 # "previousInfo":Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;
.end local v3 # "nextInfo":Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;
:cond_fd
:goto_fd
return-void
.end method
.method private maybeUpdateLoadingPeriod()V
.registers 11
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 1624
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
iget-wide v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rendererPositionUs:J
invoke-virtual {v0, v1, v2}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->reevaluateBuffer(J)V
.line 1625
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->shouldLoadNextMediaPeriod()Z
move-result v0
if-eqz v0, :cond_3f
.line 1626
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
iget-wide v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rendererPositionUs:J
iget-object v3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
invoke-virtual {v0, v1, v2, v3}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getNextMediaPeriodInfo(JLcom/google/android/exoplayer2/PlaybackInfo;)Lcom/google/android/exoplayer2/MediaPeriodInfo;
move-result-object v0
.line 1627
.local v0, "info":Lcom/google/android/exoplayer2/MediaPeriodInfo;
if-nez v0, :cond_1f
.line 1628
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->maybeThrowSourceInfoRefreshError()V
goto :goto_3f
.line 1630
:cond_1f
iget-object v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
iget-object v5, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rendererCapabilities:[Lcom/google/android/exoplayer2/RendererCapabilities;
iget-object v6, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->trackSelector:Lcom/google/android/exoplayer2/trackselection/TrackSelector;
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->loadControl:Lcom/google/android/exoplayer2/LoadControl;
.line 1634
invoke-interface {v1}, Lcom/google/android/exoplayer2/LoadControl;->getAllocator()Lcom/google/android/exoplayer2/upstream/Allocator;
move-result-object v7
iget-object v8, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaSource:Lcom/google/android/exoplayer2/source/MediaSource;
.line 1631
move-object v9, v0
invoke-virtual/range {v4 .. v9}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->enqueueNextMediaPeriod([Lcom/google/android/exoplayer2/RendererCapabilities;Lcom/google/android/exoplayer2/trackselection/TrackSelector;Lcom/google/android/exoplayer2/upstream/Allocator;Lcom/google/android/exoplayer2/source/MediaSource;Lcom/google/android/exoplayer2/MediaPeriodInfo;)Lcom/google/android/exoplayer2/source/MediaPeriod;
move-result-object v1
.line 1637
.local v1, "mediaPeriod":Lcom/google/android/exoplayer2/source/MediaPeriod;
iget-wide v2, v0, Lcom/google/android/exoplayer2/MediaPeriodInfo;->startPositionUs:J
invoke-interface {v1, p0, v2, v3}, Lcom/google/android/exoplayer2/source/MediaPeriod;->prepare(Lcom/google/android/exoplayer2/source/MediaPeriod$Callback;J)V
.line 1638
const/4 v2, 0x1
invoke-direct {p0, v2}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->setIsLoading(Z)V
.line 1639
const/4 v2, 0x0
invoke-direct {p0, v2}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handleLoadingMediaPeriodChanged(Z)V
.line 1642
.end local v0 # "info":Lcom/google/android/exoplayer2/MediaPeriodInfo;
.end local v1 # "mediaPeriod":Lcom/google/android/exoplayer2/source/MediaPeriod;
:cond_3f
:goto_3f
return-void
.end method
.method private notifyTrackSelectionDiscontinuity()V
.registers 7
.line 1170
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getFrontPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
.line 1171
.local v0, "periodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
:goto_6
if-eqz v0, :cond_27
.line 1172
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getTrackSelectorResult()Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
move-result-object v1
.line 1173
.local v1, "trackSelectorResult":Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
if-eqz v1, :cond_22
.line 1174
iget-object v2, v1, Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;->selections:Lcom/google/android/exoplayer2/trackselection/TrackSelectionArray;
invoke-virtual {v2}, Lcom/google/android/exoplayer2/trackselection/TrackSelectionArray;->getAll()[Lcom/google/android/exoplayer2/trackselection/TrackSelection;
move-result-object v2
.line 1175
.local v2, "trackSelections":[Lcom/google/android/exoplayer2/trackselection/TrackSelection;
array-length v3, v2
const/4 v4, 0x0
:goto_16
if-ge v4, v3, :cond_22
aget-object v5, v2, v4
.line 1176
.local v5, "trackSelection":Lcom/google/android/exoplayer2/trackselection/TrackSelection;
if-eqz v5, :cond_1f
.line 1177
invoke-interface {v5}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->onDiscontinuity()V
.line 1175
.end local v5 # "trackSelection":Lcom/google/android/exoplayer2/trackselection/TrackSelection;
:cond_1f
add-int/lit8 v4, v4, 0x1
goto :goto_16
.line 1181
.end local v2 # "trackSelections":[Lcom/google/android/exoplayer2/trackselection/TrackSelection;
:cond_22
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
.line 1182
.end local v1 # "trackSelectorResult":Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
goto :goto_6
.line 1183
:cond_27
return-void
.end method
.method private prepareInternal(Lcom/google/android/exoplayer2/source/MediaSource;ZZ)V
.registers 6
.param p1, "mediaSource" # Lcom/google/android/exoplayer2/source/MediaSource;
.param p2, "resetPosition" # Z
.param p3, "resetState" # Z
.line 435
iget v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingPrepareCount:I
const/4 v1, 0x1
add-int/2addr v0, v1
iput v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingPrepareCount:I
.line 436
const/4 v0, 0x0
invoke-direct {p0, v0, v1, p2, p3}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->resetInternal(ZZZZ)V
.line 438
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->loadControl:Lcom/google/android/exoplayer2/LoadControl;
invoke-interface {v0}, Lcom/google/android/exoplayer2/LoadControl;->onPrepared()V
.line 439
iput-object p1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaSource:Lcom/google/android/exoplayer2/source/MediaSource;
.line 440
const/4 v0, 0x2
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->setState(I)V
.line 441
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->bandwidthMeter:Lcom/google/android/exoplayer2/upstream/BandwidthMeter;
invoke-interface {v1}, Lcom/google/android/exoplayer2/upstream/BandwidthMeter;->getTransferListener()Lcom/google/android/exoplayer2/upstream/TransferListener;
move-result-object v1
invoke-interface {p1, p0, v1}, Lcom/google/android/exoplayer2/source/MediaSource;->prepareSource(Lcom/google/android/exoplayer2/source/MediaSource$SourceInfoRefreshListener;Lcom/google/android/exoplayer2/upstream/TransferListener;)V
.line 442
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
invoke-interface {v1, v0}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->sendEmptyMessage(I)Z
.line 443
return-void
.end method
.method private releaseInternal()V
.registers 3
.line 816
const/4 v0, 0x1
invoke-direct {p0, v0, v0, v0, v0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->resetInternal(ZZZZ)V
.line 821
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->loadControl:Lcom/google/android/exoplayer2/LoadControl;
invoke-interface {v1}, Lcom/google/android/exoplayer2/LoadControl;->onReleased()V
.line 822
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->setState(I)V
.line 823
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->internalPlaybackThread:Landroid/os/HandlerThread;
invoke-virtual {v1}, Landroid/os/HandlerThread;->quit()Z
.line 824
monitor-enter p0
.line 825
:try_start_12
iput-boolean v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->released:Z
.line 826
invoke-virtual {p0}, Ljava/lang/Object;->notifyAll()V
.line 827
monitor-exit p0
.line 828
return-void
.line 827
:catchall_19
move-exception v0
monitor-exit p0
:try_end_1b
.catchall {:try_start_12 .. :try_end_1b} :catchall_19
throw v0
.end method
.method private rendererWaitingForNextStream(Lcom/google/android/exoplayer2/Renderer;)Z
.registers 5
.param p1, "renderer" # Lcom/google/android/exoplayer2/Renderer;
.line 1782
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getReadingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
.line 1783
.local v0, "readingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v1
.line 1784
.local v1, "nextPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
if-eqz v1, :cond_18
iget-boolean v2, v1, Lcom/google/android/exoplayer2/MediaPeriodHolder;->prepared:Z
if-eqz v2, :cond_18
invoke-interface {p1}, Lcom/google/android/exoplayer2/Renderer;->hasReadStreamToEnd()Z
move-result v2
if-eqz v2, :cond_18
const/4 v2, 0x1
goto :goto_19
:cond_18
const/4 v2, 0x0
:goto_19
return v2
.end method
.method private reselectTracksInternal()V
.registers 27
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 1067
move-object/from16 v0, p0
iget-object v1, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->hasPlayingPeriod()Z
move-result v1
if-nez v1, :cond_b
.line 1069
return-void
.line 1071
:cond_b
iget-object v1, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaClock:Lcom/google/android/exoplayer2/DefaultMediaClock;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/DefaultMediaClock;->getPlaybackParameters()Lcom/google/android/exoplayer2/PlaybackParameters;
move-result-object v1
iget v1, v1, Lcom/google/android/exoplayer2/PlaybackParameters;->speed:F
.line 1073
.local v1, "playbackSpeed":F
iget-object v2, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v2}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getPlayingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v2
.line 1074
.local v2, "periodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
iget-object v3, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v3}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getReadingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v3
.line 1075
.local v3, "readingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
const/4 v4, 0x1
.line 1078
.local v4, "selectionsChangedForReadPeriod":Z
:goto_20
if-eqz v2, :cond_119
iget-boolean v5, v2, Lcom/google/android/exoplayer2/MediaPeriodHolder;->prepared:Z
if-nez v5, :cond_28
goto/16 :goto_119
.line 1082
:cond_28
iget-object v5, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v5, v5, Lcom/google/android/exoplayer2/PlaybackInfo;->timeline:Lcom/google/android/exoplayer2/Timeline;
invoke-virtual {v2, v1, v5}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->selectTracks(FLcom/google/android/exoplayer2/Timeline;)Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
move-result-object v5
.line 1083
.local v5, "newTrackSelectorResult":Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
if-eqz v5, :cond_110
.line 1085
nop
.line 1094
const/4 v13, 0x4
if-eqz v4, :cond_dd
.line 1096
iget-object v6, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v6}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getPlayingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v15
.line 1097
.local v15, "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
iget-object v6, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v6, v15}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->removeAfter(Lcom/google/android/exoplayer2/MediaPeriodHolder;)Z
move-result v16
.line 1099
.local v16, "recreateStreams":Z
iget-object v6, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->renderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v6, v6
new-array v11, v6, [Z
.line 1100
.local v11, "streamResetFlags":[Z
iget-object v6, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-wide v8, v6, Lcom/google/android/exoplayer2/PlaybackInfo;->positionUs:J
.line 1101
move-object v6, v15
move-object v7, v5
move/from16 v10, v16
move-object/from16 v17, v11
.end local v11 # "streamResetFlags":[Z
.local v17, "streamResetFlags":[Z
invoke-virtual/range {v6 .. v11}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->applyTrackSelection(Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;JZ[Z)J
move-result-wide v6
.line 1103
.local v6, "periodPositionUs":J
iget-object v8, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget v8, v8, Lcom/google/android/exoplayer2/PlaybackInfo;->playbackState:I
if-eq v8, v13, :cond_85
iget-object v8, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-wide v8, v8, Lcom/google/android/exoplayer2/PlaybackInfo;->positionUs:J
cmp-long v10, v6, v8
if-eqz v10, :cond_85
.line 1105
iget-object v8, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v9, v8, Lcom/google/android/exoplayer2/PlaybackInfo;->periodId:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-object v10, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-wide v10, v10, Lcom/google/android/exoplayer2/PlaybackInfo;->contentPositionUs:J
.line 1110
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->getTotalBufferedDurationUs()J
move-result-wide v24
.line 1106
move-object/from16 v18, v8
move-object/from16 v19, v9
move-wide/from16 v20, v6
move-wide/from16 v22, v10
invoke-virtual/range {v18 .. v25}, Lcom/google/android/exoplayer2/PlaybackInfo;->copyWithNewPosition(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJJ)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v8
iput-object v8, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 1111
iget-object v8, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfoUpdate:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;
invoke-virtual {v8, v13}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;->setPositionDiscontinuity(I)V
.line 1112
invoke-direct {v0, v6, v7}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->resetRendererPosition(J)V
.line 1115
:cond_85
const/4 v8, 0x0
.line 1116
.local v8, "enabledRendererCount":I
iget-object v9, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->renderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v9, v9
new-array v9, v9, [Z
.line 1117
.local v9, "rendererWasEnabledFlags":[Z
const/4 v10, 0x0
.local v10, "i":I
:goto_8c
iget-object v11, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->renderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v13, v11
if-ge v10, v13, :cond_c9
.line 1118
aget-object v11, v11, v10
.line 1119
.local v11, "renderer":Lcom/google/android/exoplayer2/Renderer;
invoke-interface {v11}, Lcom/google/android/exoplayer2/Renderer;->getState()I
move-result v13
if-eqz v13, :cond_9b
const/4 v13, 0x1
goto :goto_9c
:cond_9b
const/4 v13, 0x0
:goto_9c
aput-boolean v13, v9, v10
.line 1120
iget-object v13, v15, Lcom/google/android/exoplayer2/MediaPeriodHolder;->sampleStreams:[Lcom/google/android/exoplayer2/source/SampleStream;
aget-object v13, v13, v10
.line 1121
.local v13, "sampleStream":Lcom/google/android/exoplayer2/source/SampleStream;
if-eqz v13, :cond_a6
.line 1122
add-int/lit8 v8, v8, 0x1
.line 1124
:cond_a6
aget-boolean v19, v9, v10
if-eqz v19, :cond_c3
.line 1125
invoke-interface {v11}, Lcom/google/android/exoplayer2/Renderer;->getStream()Lcom/google/android/exoplayer2/source/SampleStream;
move-result-object v14
if-eq v13, v14, :cond_b4
.line 1127
invoke-direct {v0, v11}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->disableRenderer(Lcom/google/android/exoplayer2/Renderer;)V
goto :goto_c5
.line 1128
:cond_b4
aget-boolean v14, v17, v10
if-eqz v14, :cond_c0
.line 1130
move-object/from16 v20, v13
.end local v13 # "sampleStream":Lcom/google/android/exoplayer2/source/SampleStream;
.local v20, "sampleStream":Lcom/google/android/exoplayer2/source/SampleStream;
iget-wide v12, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rendererPositionUs:J
invoke-interface {v11, v12, v13}, Lcom/google/android/exoplayer2/Renderer;->resetPosition(J)V
goto :goto_c5
.line 1128
.end local v20 # "sampleStream":Lcom/google/android/exoplayer2/source/SampleStream;
.restart local v13 # "sampleStream":Lcom/google/android/exoplayer2/source/SampleStream;
:cond_c0
move-object/from16 v20, v13
.end local v13 # "sampleStream":Lcom/google/android/exoplayer2/source/SampleStream;
.restart local v20 # "sampleStream":Lcom/google/android/exoplayer2/source/SampleStream;
goto :goto_c5
.line 1124
.end local v20 # "sampleStream":Lcom/google/android/exoplayer2/source/SampleStream;
.restart local v13 # "sampleStream":Lcom/google/android/exoplayer2/source/SampleStream;
:cond_c3
move-object/from16 v20, v13
.line 1117
.end local v11 # "renderer":Lcom/google/android/exoplayer2/Renderer;
.end local v13 # "sampleStream":Lcom/google/android/exoplayer2/source/SampleStream;
:goto_c5
add-int/lit8 v10, v10, 0x1
const/4 v13, 0x4
goto :goto_8c
.line 1134
.end local v10 # "i":I
:cond_c9
iget-object v10, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 1136
invoke-virtual {v15}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getTrackGroups()Lcom/google/android/exoplayer2/source/TrackGroupArray;
move-result-object v11
invoke-virtual {v15}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getTrackSelectorResult()Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
move-result-object v12
.line 1135
invoke-virtual {v10, v11, v12}, Lcom/google/android/exoplayer2/PlaybackInfo;->copyWithTrackInfo(Lcom/google/android/exoplayer2/source/TrackGroupArray;Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v10
iput-object v10, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 1137
invoke-direct {v0, v9, v8}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->enableRenderers([ZI)V
.line 1138
.end local v6 # "periodPositionUs":J
.end local v8 # "enabledRendererCount":I
.end local v9 # "rendererWasEnabledFlags":[Z
.end local v15 # "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.end local v16 # "recreateStreams":Z
.end local v17 # "streamResetFlags":[Z
goto :goto_f8
.line 1140
:cond_dd
iget-object v6, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v6, v2}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->removeAfter(Lcom/google/android/exoplayer2/MediaPeriodHolder;)Z
.line 1141
iget-boolean v6, v2, Lcom/google/android/exoplayer2/MediaPeriodHolder;->prepared:Z
if-eqz v6, :cond_f8
.line 1142
iget-object v6, v2, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-wide v6, v6, Lcom/google/android/exoplayer2/MediaPeriodInfo;->startPositionUs:J
iget-wide v8, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rendererPositionUs:J
.line 1144
invoke-virtual {v2, v8, v9}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->toPeriodTime(J)J
move-result-wide v8
.line 1143
invoke-static {v6, v7, v8, v9}, Ljava/lang/Math;->max(JJ)J
move-result-wide v6
.line 1145
.local v6, "loadingPeriodPositionUs":J
const/4 v8, 0x0
invoke-virtual {v2, v5, v6, v7, v8}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->applyTrackSelection(Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;JZ)J
.line 1148
.end local v6 # "loadingPeriodPositionUs":J
:cond_f8
:goto_f8
const/4 v6, 0x1
invoke-direct {v0, v6}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handleLoadingMediaPeriodChanged(Z)V
.line 1149
iget-object v6, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget v6, v6, Lcom/google/android/exoplayer2/PlaybackInfo;->playbackState:I
const/4 v7, 0x4
if-eq v6, v7, :cond_10f
.line 1150
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->maybeContinueLoading()V
.line 1151
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->updatePlaybackPositions()V
.line 1152
iget-object v6, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
const/4 v7, 0x2
invoke-interface {v6, v7}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->sendEmptyMessage(I)Z
.line 1154
:cond_10f
return-void
.line 1087
:cond_110
if-ne v2, v3, :cond_113
.line 1089
const/4 v4, 0x0
.line 1091
:cond_113
invoke-virtual {v2}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v2
goto/16 :goto_20
.line 1080
.end local v5 # "newTrackSelectorResult":Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
:cond_119
:goto_119
return-void
.end method
.method private resetInternal(ZZZZ)V
.registers 27
.param p1, "resetRenderers" # Z
.param p2, "releaseMediaSource" # Z
.param p3, "resetPosition" # Z
.param p4, "resetState" # Z
.line 835
move-object/from16 v1, p0
iget-object v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
const/4 v2, 0x2
invoke-interface {v0, v2}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->removeMessages(I)V
.line 836
const/4 v2, 0x0
iput-boolean v2, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rebuffering:Z
.line 837
iget-object v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaClock:Lcom/google/android/exoplayer2/DefaultMediaClock;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/DefaultMediaClock;->stop()V
.line 838
const-wide/16 v3, 0x0
iput-wide v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rendererPositionUs:J
.line 839
iget-object v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->enabledRenderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v4, v3
const/4 v5, 0x0
:goto_18
const-string v6, "ExoPlayerImplInternal"
if-ge v5, v4, :cond_2d
aget-object v7, v3, v5
.line 841
.local v7, "renderer":Lcom/google/android/exoplayer2/Renderer;
:try_start_1e
invoke-direct {v1, v7}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->disableRenderer(Lcom/google/android/exoplayer2/Renderer;)V
:try_end_21
.catch Lcom/google/android/exoplayer2/ExoPlaybackException; {:try_start_1e .. :try_end_21} :catch_24
.catch Ljava/lang/RuntimeException; {:try_start_1e .. :try_end_21} :catch_22
.line 845
goto :goto_2a
.line 842
:catch_22
move-exception v0
goto :goto_25
:catch_24
move-exception v0
.line 844
.local v0, "e":Ljava/lang/Exception;
:goto_25
const-string v8, "Disable failed."
invoke-static {v6, v8, v0}, Lcom/google/android/exoplayer2/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 839
.end local v0 # "e":Ljava/lang/Exception;
.end local v7 # "renderer":Lcom/google/android/exoplayer2/Renderer;
:goto_2a
add-int/lit8 v5, v5, 0x1
goto :goto_18
.line 847
:cond_2d
if-eqz p1, :cond_46
.line 848
iget-object v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->renderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v4, v3
const/4 v5, 0x0
:goto_33
if-ge v5, v4, :cond_46
aget-object v7, v3, v5
.line 850
.restart local v7 # "renderer":Lcom/google/android/exoplayer2/Renderer;
:try_start_37
invoke-interface {v7}, Lcom/google/android/exoplayer2/Renderer;->reset()V
:try_end_3a
.catch Ljava/lang/RuntimeException; {:try_start_37 .. :try_end_3a} :catch_3b
.line 854
goto :goto_43
.line 851
:catch_3b
move-exception v0
move-object v8, v0
move-object v0, v8
.line 853
.local v0, "e":Ljava/lang/RuntimeException;
const-string v8, "Reset failed."
invoke-static {v6, v8, v0}, Lcom/google/android/exoplayer2/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 848
.end local v0 # "e":Ljava/lang/RuntimeException;
.end local v7 # "renderer":Lcom/google/android/exoplayer2/Renderer;
:goto_43
add-int/lit8 v5, v5, 0x1
goto :goto_33
.line 857
:cond_46
new-array v0, v2, [Lcom/google/android/exoplayer2/Renderer;
iput-object v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->enabledRenderers:[Lcom/google/android/exoplayer2/Renderer;
.line 858
iget-object v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
xor-int/lit8 v3, p3, 0x1
invoke-virtual {v0, v3}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->clear(Z)V
.line 859
invoke-direct {v1, v2}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->setIsLoading(Z)V
.line 860
const/4 v0, 0x0
if-eqz p3, :cond_59
.line 861
iput-object v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingInitialSeekPosition:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;
.line 863
:cond_59
if-eqz p4, :cond_81
.line 864
iget-object v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
sget-object v4, Lcom/google/android/exoplayer2/Timeline;->EMPTY:Lcom/google/android/exoplayer2/Timeline;
invoke-virtual {v3, v4}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->setTimeline(Lcom/google/android/exoplayer2/Timeline;)V
.line 865
iget-object v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
invoke-virtual {v3}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
move-result-object v3
:goto_68
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v4
if-eqz v4, :cond_7a
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v4
check-cast v4, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;
.line 866
.local v4, "pendingMessageInfo":Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;
iget-object v5, v4, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->message:Lcom/google/android/exoplayer2/PlayerMessage;
invoke-virtual {v5, v2}, Lcom/google/android/exoplayer2/PlayerMessage;->markAsProcessed(Z)V
.line 867
.end local v4 # "pendingMessageInfo":Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;
goto :goto_68
.line 868
:cond_7a
iget-object v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
invoke-virtual {v3}, Ljava/util/ArrayList;->clear()V
.line 869
iput v2, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->nextPendingMessageIndex:I
.line 871
:cond_81
if-eqz p3, :cond_8e
iget-object v2, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-boolean v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->shuffleModeEnabled:Z
iget-object v4, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->window:Lcom/google/android/exoplayer2/Timeline$Window;
.line 873
invoke-virtual {v2, v3, v4}, Lcom/google/android/exoplayer2/PlaybackInfo;->getDummyFirstMediaPeriodId(ZLcom/google/android/exoplayer2/Timeline$Window;)Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
move-result-object v2
goto :goto_92
:cond_8e
iget-object v2, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v2, v2, Lcom/google/android/exoplayer2/PlaybackInfo;->periodId:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
:goto_92
move-object v6, v2
.line 876
.local v6, "mediaPeriodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
const-wide v2, -0x7fffffffffffffffL # -4.9E-324
if-eqz p3, :cond_9c
move-wide v7, v2
goto :goto_a1
:cond_9c
iget-object v4, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-wide v4, v4, Lcom/google/android/exoplayer2/PlaybackInfo;->positionUs:J
move-wide v7, v4
.line 877
.local v7, "startPositionUs":J
:goto_a1
if-eqz p3, :cond_a4
goto :goto_a8
:cond_a4
iget-object v2, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-wide v2, v2, Lcom/google/android/exoplayer2/PlaybackInfo;->contentPositionUs:J
:goto_a8
move-wide v9, v2
.line 878
.local v9, "contentPositionUs":J
new-instance v2, Lcom/google/android/exoplayer2/PlaybackInfo;
if-eqz p4, :cond_b0
sget-object v3, Lcom/google/android/exoplayer2/Timeline;->EMPTY:Lcom/google/android/exoplayer2/Timeline;
goto :goto_b4
:cond_b0
iget-object v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v3, v3, Lcom/google/android/exoplayer2/PlaybackInfo;->timeline:Lcom/google/android/exoplayer2/Timeline;
:goto_b4
move-object v4, v3
if-eqz p4, :cond_b9
move-object v5, v0
goto :goto_be
:cond_b9
iget-object v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v3, v3, Lcom/google/android/exoplayer2/PlaybackInfo;->manifest:Ljava/lang/Object;
move-object v5, v3
:goto_be
iget-object v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget v11, v3, Lcom/google/android/exoplayer2/PlaybackInfo;->playbackState:I
const/4 v12, 0x0
if-eqz p4, :cond_c8
sget-object v3, Lcom/google/android/exoplayer2/source/TrackGroupArray;->EMPTY:Lcom/google/android/exoplayer2/source/TrackGroupArray;
goto :goto_cc
:cond_c8
iget-object v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v3, v3, Lcom/google/android/exoplayer2/PlaybackInfo;->trackGroups:Lcom/google/android/exoplayer2/source/TrackGroupArray;
:goto_cc
move-object v13, v3
if-eqz p4, :cond_d2
iget-object v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->emptyTrackSelectorResult:Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
goto :goto_d6
:cond_d2
iget-object v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v3, v3, Lcom/google/android/exoplayer2/PlaybackInfo;->trackSelectorResult:Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
:goto_d6
move-object v14, v3
const-wide/16 v18, 0x0
move-object v3, v2
move-object v15, v6
move-wide/from16 v16, v7
move-wide/from16 v20, v7
invoke-direct/range {v3 .. v21}, Lcom/google/android/exoplayer2/PlaybackInfo;-><init>(Lcom/google/android/exoplayer2/Timeline;Ljava/lang/Object;Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJIZLcom/google/android/exoplayer2/source/TrackGroupArray;Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJJ)V
iput-object v2, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 893
if-eqz p2, :cond_ef
.line 894
iget-object v2, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaSource:Lcom/google/android/exoplayer2/source/MediaSource;
if-eqz v2, :cond_ef
.line 895
invoke-interface {v2, v1}, Lcom/google/android/exoplayer2/source/MediaSource;->releaseSource(Lcom/google/android/exoplayer2/source/MediaSource$SourceInfoRefreshListener;)V
.line 896
iput-object v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaSource:Lcom/google/android/exoplayer2/source/MediaSource;
.line 899
:cond_ef
return-void
.end method
.method private resetRendererPosition(J)V
.registers 9
.param p1, "periodPositionUs" # J
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 762
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
.line 763
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->hasPlayingPeriod()Z
move-result v0
if-nez v0, :cond_a
move-wide v0, p1
goto :goto_14
:cond_a
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
.line 765
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getPlayingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
invoke-virtual {v0, p1, p2}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->toRendererTime(J)J
move-result-wide v0
:goto_14
iput-wide v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rendererPositionUs:J
.line 766
iget-object v2, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaClock:Lcom/google/android/exoplayer2/DefaultMediaClock;
invoke-virtual {v2, v0, v1}, Lcom/google/android/exoplayer2/DefaultMediaClock;->resetPosition(J)V
.line 767
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->enabledRenderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v1, v0
const/4 v2, 0x0
:goto_1f
if-ge v2, v1, :cond_2b
aget-object v3, v0, v2
.line 768
.local v3, "renderer":Lcom/google/android/exoplayer2/Renderer;
iget-wide v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rendererPositionUs:J
invoke-interface {v3, v4, v5}, Lcom/google/android/exoplayer2/Renderer;->resetPosition(J)V
.line 767
.end local v3 # "renderer":Lcom/google/android/exoplayer2/Renderer;
add-int/lit8 v2, v2, 0x1
goto :goto_1f
.line 770
:cond_2b
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->notifyTrackSelectionDiscontinuity()V
.line 771
return-void
.end method
.method private resolvePendingMessagePosition(Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;)Z
.registers 8
.param p1, "pendingMessageInfo" # Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;
.line 970
iget-object v0, p1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->resolvedPeriodUid:Ljava/lang/Object;
const/4 v1, 0x0
if-nez v0, :cond_3f
.line 972
new-instance v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;
iget-object v2, p1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->message:Lcom/google/android/exoplayer2/PlayerMessage;
.line 975
invoke-virtual {v2}, Lcom/google/android/exoplayer2/PlayerMessage;->getTimeline()Lcom/google/android/exoplayer2/Timeline;
move-result-object v2
iget-object v3, p1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->message:Lcom/google/android/exoplayer2/PlayerMessage;
.line 976
invoke-virtual {v3}, Lcom/google/android/exoplayer2/PlayerMessage;->getWindowIndex()I
move-result v3
iget-object v4, p1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->message:Lcom/google/android/exoplayer2/PlayerMessage;
.line 977
invoke-virtual {v4}, Lcom/google/android/exoplayer2/PlayerMessage;->getPositionMs()J
move-result-wide v4
invoke-static {v4, v5}, Lcom/google/android/exoplayer2/C;->msToUs(J)J
move-result-wide v4
invoke-direct {v0, v2, v3, v4, v5}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;-><init>(Lcom/google/android/exoplayer2/Timeline;IJ)V
.line 973
invoke-direct {p0, v0, v1}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->resolveSeekPosition(Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;Z)Landroid/util/Pair;
move-result-object v0
.line 979
.local v0, "periodPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
if-nez v0, :cond_27
.line 980
return v1
.line 982
:cond_27
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v1, v1, Lcom/google/android/exoplayer2/PlaybackInfo;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v2, v0, Landroid/util/Pair;->first:Ljava/lang/Object;
.line 983
invoke-virtual {v1, v2}, Lcom/google/android/exoplayer2/Timeline;->getIndexOfPeriod(Ljava/lang/Object;)I
move-result v1
iget-object v2, v0, Landroid/util/Pair;->second:Ljava/lang/Object;
check-cast v2, Ljava/lang/Long;
.line 984
invoke-virtual {v2}, Ljava/lang/Long;->longValue()J
move-result-wide v2
iget-object v4, v0, Landroid/util/Pair;->first:Ljava/lang/Object;
.line 982
invoke-virtual {p1, v1, v2, v3, v4}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->setResolvedPosition(IJLjava/lang/Object;)V
.line 986
.end local v0 # "periodPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
goto :goto_4f
.line 988
:cond_3f
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v0, v0, Lcom/google/android/exoplayer2/PlaybackInfo;->timeline:Lcom/google/android/exoplayer2/Timeline;
iget-object v2, p1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->resolvedPeriodUid:Ljava/lang/Object;
invoke-virtual {v0, v2}, Lcom/google/android/exoplayer2/Timeline;->getIndexOfPeriod(Ljava/lang/Object;)I
move-result v0
.line 989
.local v0, "index":I
const/4 v2, -0x1
if-ne v0, v2, :cond_4d
.line 990
return v1
.line 992
:cond_4d
iput v0, p1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->resolvedPeriodIndex:I
.line 994
.end local v0 # "index":I
:goto_4f
const/4 v0, 0x1
return v0
.end method
.method private resolvePendingMessagePositions()V
.registers 4
.line 958
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v0
add-int/lit8 v0, v0, -0x1
.local v0, "i":I
:goto_8
if-ltz v0, :cond_2e
.line 959
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
invoke-virtual {v1, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;
invoke-direct {p0, v1}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->resolvePendingMessagePosition(Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;)Z
move-result v1
if-nez v1, :cond_2b
.line 961
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
invoke-virtual {v1, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;
iget-object v1, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;->message:Lcom/google/android/exoplayer2/PlayerMessage;
const/4 v2, 0x0
invoke-virtual {v1, v2}, Lcom/google/android/exoplayer2/PlayerMessage;->markAsProcessed(Z)V
.line 962
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
invoke-virtual {v1, v0}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
.line 958
:cond_2b
add-int/lit8 v0, v0, -0x1
goto :goto_8
.line 966
.end local v0 # "i":I
:cond_2e
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
invoke-static {v0}, Ljava/util/Collections;->sort(Ljava/util/List;)V
.line 967
return-void
.end method
.method private resolveSeekPosition(Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;Z)Landroid/util/Pair;
.registers 13
.param p1, "seekPosition" # Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;
.param p2, "trySubsequentPeriods" # Z
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;",
"Z)",
"Landroid/util/Pair<",
"Ljava/lang/Object;",
"Ljava/lang/Long;",
">;"
}
.end annotation
.line 1435
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v0, v0, Lcom/google/android/exoplayer2/PlaybackInfo;->timeline:Lcom/google/android/exoplayer2/Timeline;
.line 1436
.local v0, "timeline":Lcom/google/android/exoplayer2/Timeline;
iget-object v1, p1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;->timeline:Lcom/google/android/exoplayer2/Timeline;
.line 1437
.local v1, "seekTimeline":Lcom/google/android/exoplayer2/Timeline;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/Timeline;->isEmpty()Z
move-result v2
const/4 v3, 0x0
if-eqz v2, :cond_e
.line 1439
return-object v3
.line 1441
:cond_e
invoke-virtual {v1}, Lcom/google/android/exoplayer2/Timeline;->isEmpty()Z
move-result v2
if-eqz v2, :cond_15
.line 1444
move-object v1, v0
.line 1449
:cond_15
:try_start_15
iget-object v5, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->window:Lcom/google/android/exoplayer2/Timeline$Window;
iget-object v6, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->period:Lcom/google/android/exoplayer2/Timeline$Period;
iget v7, p1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;->windowIndex:I
iget-wide v8, p1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;->windowPositionUs:J
move-object v4, v1
invoke-virtual/range {v4 .. v9}, Lcom/google/android/exoplayer2/Timeline;->getPeriodPosition(Lcom/google/android/exoplayer2/Timeline$Window;Lcom/google/android/exoplayer2/Timeline$Period;IJ)Landroid/util/Pair;
move-result-object v2
:try_end_22
.catch Ljava/lang/IndexOutOfBoundsException; {:try_start_15 .. :try_end_22} :catch_4d
.line 1455
.local v2, "periodPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
nop
.line 1456
if-ne v0, v1, :cond_26
.line 1458
return-object v2
.line 1461
:cond_26
iget-object v4, v2, Landroid/util/Pair;->first:Ljava/lang/Object;
invoke-virtual {v0, v4}, Lcom/google/android/exoplayer2/Timeline;->getIndexOfPeriod(Ljava/lang/Object;)I
move-result v4
.line 1462
.local v4, "periodIndex":I
const/4 v5, -0x1
if-eq v4, v5, :cond_30
.line 1464
return-object v2
.line 1466
:cond_30
if-eqz p2, :cond_4c
.line 1468
iget-object v5, v2, Landroid/util/Pair;->first:Ljava/lang/Object;
invoke-direct {p0, v5, v1, v0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->resolveSubsequentPeriod(Ljava/lang/Object;Lcom/google/android/exoplayer2/Timeline;Lcom/google/android/exoplayer2/Timeline;)Ljava/lang/Object;
move-result-object v5
.line 1469
.local v5, "periodUid":Ljava/lang/Object;
if-eqz v5, :cond_4c
.line 1471
iget-object v3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->period:Lcom/google/android/exoplayer2/Timeline$Period;
.line 1472
invoke-virtual {v0, v4, v3}, Lcom/google/android/exoplayer2/Timeline;->getPeriod(ILcom/google/android/exoplayer2/Timeline$Period;)Lcom/google/android/exoplayer2/Timeline$Period;
move-result-object v3
iget v3, v3, Lcom/google/android/exoplayer2/Timeline$Period;->windowIndex:I
const-wide v6, -0x7fffffffffffffffL # -4.9E-324
.line 1471
invoke-direct {p0, v0, v3, v6, v7}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->getPeriodPosition(Lcom/google/android/exoplayer2/Timeline;IJ)Landroid/util/Pair;
move-result-object v3
return-object v3
.line 1476
.end local v5 # "periodUid":Ljava/lang/Object;
:cond_4c
return-object v3
.line 1451
.end local v2 # "periodPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
.end local v4 # "periodIndex":I
:catch_4d
move-exception v2
.line 1453
.local v2, "e":Ljava/lang/IndexOutOfBoundsException;
new-instance v3, Lcom/google/android/exoplayer2/IllegalSeekPositionException;
iget v4, p1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;->windowIndex:I
iget-wide v5, p1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;->windowPositionUs:J
invoke-direct {v3, v0, v4, v5, v6}, Lcom/google/android/exoplayer2/IllegalSeekPositionException;-><init>(Lcom/google/android/exoplayer2/Timeline;IJ)V
throw v3
.end method
.method private resolveSubsequentPeriod(Ljava/lang/Object;Lcom/google/android/exoplayer2/Timeline;Lcom/google/android/exoplayer2/Timeline;)Ljava/lang/Object;
.registers 15
.param p1, "oldPeriodUid" # Ljava/lang/Object;
.param p2, "oldTimeline" # Lcom/google/android/exoplayer2/Timeline;
.param p3, "newTimeline" # Lcom/google/android/exoplayer2/Timeline;
.line 1407
invoke-virtual {p2, p1}, Lcom/google/android/exoplayer2/Timeline;->getIndexOfPeriod(Ljava/lang/Object;)I
move-result v0
.line 1408
.local v0, "oldPeriodIndex":I
const/4 v1, -0x1
.line 1409
.local v1, "newPeriodIndex":I
invoke-virtual {p2}, Lcom/google/android/exoplayer2/Timeline;->getPeriodCount()I
move-result v2
.line 1410
.local v2, "maxIterations":I
const/4 v3, 0x0
.local v3, "i":I
:goto_a
const/4 v10, -0x1
if-ge v3, v2, :cond_2b
if-ne v1, v10, :cond_2b
.line 1411
iget-object v6, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->period:Lcom/google/android/exoplayer2/Timeline$Period;
iget-object v7, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->window:Lcom/google/android/exoplayer2/Timeline$Window;
iget v8, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->repeatMode:I
iget-boolean v9, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->shuffleModeEnabled:Z
move-object v4, p2
move v5, v0
invoke-virtual/range {v4 .. v9}, Lcom/google/android/exoplayer2/Timeline;->getNextPeriodIndex(ILcom/google/android/exoplayer2/Timeline$Period;Lcom/google/android/exoplayer2/Timeline$Window;IZ)I
move-result v0
.line 1413
if-ne v0, v10, :cond_20
.line 1415
goto :goto_2b
.line 1417
:cond_20
invoke-virtual {p2, v0}, Lcom/google/android/exoplayer2/Timeline;->getUidOfPeriod(I)Ljava/lang/Object;
move-result-object v4
invoke-virtual {p3, v4}, Lcom/google/android/exoplayer2/Timeline;->getIndexOfPeriod(Ljava/lang/Object;)I
move-result v1
.line 1410
add-int/lit8 v3, v3, 0x1
goto :goto_a
.line 1419
.end local v3 # "i":I
:cond_2b
:goto_2b
if-ne v1, v10, :cond_2f
const/4 v3, 0x0
goto :goto_33
:cond_2f
invoke-virtual {p3, v1}, Lcom/google/android/exoplayer2/Timeline;->getUidOfPeriod(I)Ljava/lang/Object;
move-result-object v3
:goto_33
return-object v3
.end method
.method private scheduleNextWork(JJ)V
.registers 9
.param p1, "thisOperationStartTimeMs" # J
.param p3, "intervalMs" # J
.line 628
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
const/4 v1, 0x2
invoke-interface {v0, v1}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->removeMessages(I)V
.line 629
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
add-long v2, p1, p3
invoke-interface {v0, v1, v2, v3}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->sendEmptyMessageAtTime(IJ)Z
.line 630
return-void
.end method
.method private seekToCurrentPosition(Z)V
.registers 13
.param p1, "sendDiscontinuity" # Z
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 482
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getPlayingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
iget-object v0, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-object v0, v0, Lcom/google/android/exoplayer2/MediaPeriodInfo;->id:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.line 483
.local v0, "periodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-wide v1, v1, Lcom/google/android/exoplayer2/PlaybackInfo;->positionUs:J
.line 484
const/4 v3, 0x1
invoke-direct {p0, v0, v1, v2, v3}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->seekToPeriodPosition(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JZ)J
move-result-wide v9
.line 485
.local v9, "newPositionUs":J
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-wide v1, v1, Lcom/google/android/exoplayer2/PlaybackInfo;->positionUs:J
cmp-long v3, v9, v1
if-eqz v3, :cond_33
.line 486
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-wide v5, v1, Lcom/google/android/exoplayer2/PlaybackInfo;->contentPositionUs:J
.line 491
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->getTotalBufferedDurationUs()J
move-result-wide v7
.line 487
move-object v2, v0
move-wide v3, v9
invoke-virtual/range {v1 .. v8}, Lcom/google/android/exoplayer2/PlaybackInfo;->copyWithNewPosition(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJJ)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v1
iput-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 492
if-eqz p1, :cond_33
.line 493
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfoUpdate:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;
const/4 v2, 0x4
invoke-virtual {v1, v2}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;->setPositionDiscontinuity(I)V
.line 496
:cond_33
return-void
.end method
.method private seekToInternal(Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;)V
.registers 27
.param p1, "seekPosition" # Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 633
move-object/from16 v1, p0
move-object/from16 v2, p1
iget-object v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfoUpdate:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;
const/4 v3, 0x1
invoke-virtual {v0, v3}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;->incrementPendingOperationAcks(I)V
.line 639
nop
.line 640
invoke-direct {v1, v2, v3}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->resolveSeekPosition(Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;Z)Landroid/util/Pair;
move-result-object v4
.line 641
.local v4, "resolvedSeekPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
const-wide v5, -0x7fffffffffffffffL # -4.9E-324
const/4 v0, 0x0
if-nez v4, :cond_2d
.line 644
iget-object v7, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-boolean v8, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->shuffleModeEnabled:Z
iget-object v9, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->window:Lcom/google/android/exoplayer2/Timeline$Window;
invoke-virtual {v7, v8, v9}, Lcom/google/android/exoplayer2/PlaybackInfo;->getDummyFirstMediaPeriodId(ZLcom/google/android/exoplayer2/Timeline$Window;)Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
move-result-object v7
.line 645
.local v7, "periodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
const-wide v8, -0x7fffffffffffffffL # -4.9E-324
.line 646
.local v8, "periodPositionUs":J
const-wide v10, -0x7fffffffffffffffL # -4.9E-324
.line 647
.local v10, "contentPositionUs":J
const/4 v12, 0x1
.local v12, "seekPositionAdjusted":Z
goto :goto_64
.line 650
.end local v7 # "periodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.end local v8 # "periodPositionUs":J
.end local v10 # "contentPositionUs":J
.end local v12 # "seekPositionAdjusted":Z
:cond_2d
iget-object v7, v4, Landroid/util/Pair;->first:Ljava/lang/Object;
.line 651
.local v7, "periodUid":Ljava/lang/Object;
iget-object v8, v4, Landroid/util/Pair;->second:Ljava/lang/Object;
check-cast v8, Ljava/lang/Long;
invoke-virtual {v8}, Ljava/lang/Long;->longValue()J
move-result-wide v10
.line 652
.restart local v10 # "contentPositionUs":J
iget-object v8, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v8, v7, v10, v11}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->resolveMediaPeriodIdForAds(Ljava/lang/Object;J)Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
move-result-object v8
.line 653
.local v8, "periodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
invoke-virtual {v8}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->isAd()Z
move-result v9
if-eqz v9, :cond_4d
.line 654
const-wide/16 v12, 0x0
.line 655
.local v12, "periodPositionUs":J
const/4 v9, 0x1
move-object v7, v8
move-wide/from16 v23, v12
move v12, v9
move-wide/from16 v8, v23
.local v9, "seekPositionAdjusted":Z
goto :goto_64
.line 657
.end local v9 # "seekPositionAdjusted":Z
.end local v12 # "periodPositionUs":J
:cond_4d
iget-object v9, v4, Landroid/util/Pair;->second:Ljava/lang/Object;
check-cast v9, Ljava/lang/Long;
invoke-virtual {v9}, Ljava/lang/Long;->longValue()J
move-result-wide v12
.line 658
.restart local v12 # "periodPositionUs":J
iget-wide v14, v2, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;->windowPositionUs:J
cmp-long v9, v14, v5
if-nez v9, :cond_5d
const/4 v9, 0x1
goto :goto_5e
:cond_5d
const/4 v9, 0x0
:goto_5e
move-object v7, v8
move-wide/from16 v23, v12
move v12, v9
move-wide/from16 v8, v23
.line 663
.local v7, "periodId":Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.local v8, "periodPositionUs":J
.local v12, "seekPositionAdjusted":Z
:goto_64
const/4 v13, 0x2
:try_start_65
iget-object v14, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaSource:Lcom/google/android/exoplayer2/source/MediaSource;
if-eqz v14, :cond_eb
iget v14, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingPrepareCount:I
:try_end_6b
.catchall {:try_start_65 .. :try_end_6b} :catchall_10a
if-lez v14, :cond_71
move-object/from16 v22, v4
goto/16 :goto_ed
.line 666
:cond_71
cmp-long v14, v8, v5
if-nez v14, :cond_85
.line 668
const/4 v5, 0x4
:try_start_76
invoke-direct {v1, v5}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->setState(I)V
.line 669
invoke-direct {v1, v0, v0, v3, v0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->resetInternal(ZZZZ)V
:try_end_7c
.catchall {:try_start_76 .. :try_end_7c} :catchall_80
move-object/from16 v22, v4
goto/16 :goto_ef
.line 695
:catchall_80
move-exception v0
move-object/from16 v22, v4
goto/16 :goto_10d
.line 676
:cond_85
move-wide v5, v8
.line 677
.local v5, "newPeriodPositionUs":J
:try_start_86
iget-object v14, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v14, v14, Lcom/google/android/exoplayer2/PlaybackInfo;->periodId:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
invoke-virtual {v7, v14}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->equals(Ljava/lang/Object;)Z
move-result v14
if-eqz v14, :cond_db
.line 678
iget-object v14, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v14}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getPlayingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v14
:try_end_96
.catchall {:try_start_86 .. :try_end_96} :catchall_10a
move-object v15, v14
.line 679
.local v15, "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
if-eqz v15, :cond_a9
const-wide/16 v16, 0x0
cmp-long v14, v5, v16
if-eqz v14, :cond_a9
.line 680
:try_start_9f
iget-object v14, v15, Lcom/google/android/exoplayer2/MediaPeriodHolder;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod;
iget-object v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->seekParameters:Lcom/google/android/exoplayer2/SeekParameters;
.line 681
invoke-interface {v14, v5, v6, v0}, Lcom/google/android/exoplayer2/source/MediaPeriod;->getAdjustedSeekPositionUs(JLcom/google/android/exoplayer2/SeekParameters;)J
move-result-wide v17
:try_end_a7
.catchall {:try_start_9f .. :try_end_a7} :catchall_80
move-wide/from16 v5, v17
.line 684
:cond_a9
:try_start_a9
invoke-static {v5, v6}, Lcom/google/android/exoplayer2/C;->usToMs(J)J
move-result-wide v17
iget-object v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
:try_end_af
.catchall {:try_start_a9 .. :try_end_af} :catchall_10a
move-object/from16 v22, v4
.end local v4 # "resolvedSeekPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
.local v22, "resolvedSeekPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
:try_start_b1
iget-wide v3, v0, Lcom/google/android/exoplayer2/PlaybackInfo;->positionUs:J
invoke-static {v3, v4}, Lcom/google/android/exoplayer2/C;->usToMs(J)J
move-result-wide v3
cmp-long v0, v17, v3
if-nez v0, :cond_d9
.line 686
iget-object v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-wide v3, v0, Lcom/google/android/exoplayer2/PlaybackInfo;->positionUs:J
:try_end_bf
.catchall {:try_start_b1 .. :try_end_bf} :catchall_108
move-wide/from16 v16, v3
.line 695
.end local v8 # "periodPositionUs":J
.local v16, "periodPositionUs":J
iget-object v14, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 697
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->getTotalBufferedDurationUs()J
move-result-wide v20
.line 696
move-object v0, v15
.end local v15 # "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.local v0, "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-object v15, v7
move-wide/from16 v18, v10
invoke-virtual/range {v14 .. v21}, Lcom/google/android/exoplayer2/PlaybackInfo;->copyWithNewPosition(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJJ)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v3
iput-object v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 698
if-eqz v12, :cond_d8
.line 699
iget-object v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfoUpdate:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;
invoke-virtual {v3, v13}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;->setPositionDiscontinuity(I)V
.line 687
:cond_d8
return-void
.line 684
.end local v0 # "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.end local v16 # "periodPositionUs":J
.restart local v8 # "periodPositionUs":J
.restart local v15 # "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
:cond_d9
move-object v0, v15
.end local v15 # "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.restart local v0 # "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
goto :goto_dd
.line 677
.end local v0 # "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.end local v22 # "resolvedSeekPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
.restart local v4 # "resolvedSeekPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
:cond_db
move-object/from16 v22, v4
.line 690
.end local v4 # "resolvedSeekPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
.restart local v22 # "resolvedSeekPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
:goto_dd
:try_start_dd
invoke-direct {v1, v7, v5, v6}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->seekToPeriodPosition(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;J)J
move-result-wide v3
.line 691
.end local v5 # "newPeriodPositionUs":J
.local v3, "newPeriodPositionUs":J
cmp-long v0, v8, v3
if-eqz v0, :cond_e7
const/4 v14, 0x1
goto :goto_e8
:cond_e7
const/4 v14, 0x0
:goto_e8
or-int/2addr v12, v14
.line 692
move-wide v8, v3
goto :goto_ef
.line 663
.end local v3 # "newPeriodPositionUs":J
.end local v22 # "resolvedSeekPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
.restart local v4 # "resolvedSeekPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
:cond_eb
move-object/from16 v22, v4
.line 665
.end local v4 # "resolvedSeekPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
.restart local v22 # "resolvedSeekPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
:goto_ed
iput-object v2, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingInitialSeekPosition:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;
:try_end_ef
.catchall {:try_start_dd .. :try_end_ef} :catchall_108
.line 695
:goto_ef
iget-object v14, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 697
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->getTotalBufferedDurationUs()J
move-result-wide v20
.line 696
move-object v15, v7
move-wide/from16 v16, v8
move-wide/from16 v18, v10
invoke-virtual/range {v14 .. v21}, Lcom/google/android/exoplayer2/PlaybackInfo;->copyWithNewPosition(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJJ)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v0
iput-object v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 698
if-eqz v12, :cond_107
.line 699
iget-object v0, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfoUpdate:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;
invoke-virtual {v0, v13}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;->setPositionDiscontinuity(I)V
.line 702
:cond_107
return-void
.line 695
:catchall_108
move-exception v0
goto :goto_10d
.end local v22 # "resolvedSeekPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
.restart local v4 # "resolvedSeekPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
:catchall_10a
move-exception v0
move-object/from16 v22, v4
.end local v4 # "resolvedSeekPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
.restart local v22 # "resolvedSeekPosition":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Object;Ljava/lang/Long;>;"
:goto_10d
iget-object v14, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 697
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->getTotalBufferedDurationUs()J
move-result-wide v20
.line 696
move-object v15, v7
move-wide/from16 v16, v8
move-wide/from16 v18, v10
invoke-virtual/range {v14 .. v21}, Lcom/google/android/exoplayer2/PlaybackInfo;->copyWithNewPosition(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJJ)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v3
iput-object v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 698
if-eqz v12, :cond_125
.line 699
iget-object v3, v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfoUpdate:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;
invoke-virtual {v3, v13}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;->setPositionDiscontinuity(I)V
.line 701
:cond_125
throw v0
.end method
.method private seekToPeriodPosition(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;J)J
.registers 6
.param p1, "periodId" # Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.param p2, "periodPositionUs" # J
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 707
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
.line 708
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getPlayingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getReadingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v1
if-eq v0, v1, :cond_10
const/4 v0, 0x1
goto :goto_11
:cond_10
const/4 v0, 0x0
.line 707
:goto_11
invoke-direct {p0, p1, p2, p3, v0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->seekToPeriodPosition(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JZ)J
move-result-wide v0
return-wide v0
.end method
.method private seekToPeriodPosition(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JZ)J
.registers 13
.param p1, "periodId" # Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.param p2, "periodPositionUs" # J
.param p4, "forceDisableRenderers" # Z
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 714
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->stopRenderers()V
.line 715
const/4 v0, 0x0
iput-boolean v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rebuffering:Z
.line 716
const/4 v1, 0x2
invoke-direct {p0, v1}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->setState(I)V
.line 719
iget-object v2, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v2}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getPlayingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v2
.line 720
.local v2, "oldPlayingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-object v3, v2
.line 721
.local v3, "newPlayingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
:goto_11
if-eqz v3, :cond_2e
.line 722
iget-object v4, v3, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-object v4, v4, Lcom/google/android/exoplayer2/MediaPeriodInfo;->id:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
invoke-virtual {p1, v4}, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->equals(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_27
iget-boolean v4, v3, Lcom/google/android/exoplayer2/MediaPeriodHolder;->prepared:Z
if-eqz v4, :cond_27
.line 723
iget-object v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v4, v3}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->removeAfter(Lcom/google/android/exoplayer2/MediaPeriodHolder;)Z
.line 724
goto :goto_2e
.line 726
:cond_27
iget-object v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v4}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->advancePlayingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v3
goto :goto_11
.line 730
:cond_2e
:goto_2e
if-ne v2, v3, :cond_32
if-eqz p4, :cond_45
.line 731
:cond_32
iget-object v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->enabledRenderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v5, v4
const/4 v6, 0x0
:goto_36
if-ge v6, v5, :cond_40
aget-object v7, v4, v6
.line 732
.local v7, "renderer":Lcom/google/android/exoplayer2/Renderer;
invoke-direct {p0, v7}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->disableRenderer(Lcom/google/android/exoplayer2/Renderer;)V
.line 731
.end local v7 # "renderer":Lcom/google/android/exoplayer2/Renderer;
add-int/lit8 v6, v6, 0x1
goto :goto_36
.line 734
:cond_40
new-array v4, v0, [Lcom/google/android/exoplayer2/Renderer;
iput-object v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->enabledRenderers:[Lcom/google/android/exoplayer2/Renderer;
.line 735
const/4 v2, 0x0
.line 739
:cond_45
if-eqz v3, :cond_66
.line 740
invoke-direct {p0, v2}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->updatePlayingPeriodRenderers(Lcom/google/android/exoplayer2/MediaPeriodHolder;)V
.line 741
iget-boolean v4, v3, Lcom/google/android/exoplayer2/MediaPeriodHolder;->hasEnabledTracks:Z
if-eqz v4, :cond_5f
.line 742
iget-object v4, v3, Lcom/google/android/exoplayer2/MediaPeriodHolder;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod;
invoke-interface {v4, p2, p3}, Lcom/google/android/exoplayer2/source/MediaPeriod;->seekToUs(J)J
move-result-wide p2
.line 743
iget-object v4, v3, Lcom/google/android/exoplayer2/MediaPeriodHolder;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod;
iget-wide v5, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->backBufferDurationUs:J
sub-long v5, p2, v5
iget-boolean v7, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->retainBackBufferFromKeyframe:Z
invoke-interface {v4, v5, v6, v7}, Lcom/google/android/exoplayer2/source/MediaPeriod;->discardBuffer(JZ)V
.line 746
:cond_5f
invoke-direct {p0, p2, p3}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->resetRendererPosition(J)V
.line 747
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->maybeContinueLoading()V
goto :goto_7b
.line 749
:cond_66
iget-object v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
const/4 v5, 0x1
invoke-virtual {v4, v5}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->clear(Z)V
.line 751
iget-object v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
sget-object v5, Lcom/google/android/exoplayer2/source/TrackGroupArray;->EMPTY:Lcom/google/android/exoplayer2/source/TrackGroupArray;
iget-object v6, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->emptyTrackSelectorResult:Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
.line 752
invoke-virtual {v4, v5, v6}, Lcom/google/android/exoplayer2/PlaybackInfo;->copyWithTrackInfo(Lcom/google/android/exoplayer2/source/TrackGroupArray;Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v4
iput-object v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 753
invoke-direct {p0, p2, p3}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->resetRendererPosition(J)V
.line 756
:goto_7b
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handleLoadingMediaPeriodChanged(Z)V
.line 757
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
invoke-interface {v0, v1}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->sendEmptyMessage(I)Z
.line 758
return-wide p2
.end method
.method private sendMessageInternal(Lcom/google/android/exoplayer2/PlayerMessage;)V
.registers 7
.param p1, "message" # Lcom/google/android/exoplayer2/PlayerMessage;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 902
invoke-virtual {p1}, Lcom/google/android/exoplayer2/PlayerMessage;->getPositionMs()J
move-result-wide v0
const-wide v2, -0x7fffffffffffffffL # -4.9E-324
cmp-long v4, v0, v2
if-nez v4, :cond_11
.line 904
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->sendMessageToTarget(Lcom/google/android/exoplayer2/PlayerMessage;)V
goto :goto_3f
.line 905
:cond_11
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaSource:Lcom/google/android/exoplayer2/source/MediaSource;
if-eqz v0, :cond_35
iget v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingPrepareCount:I
if-lez v0, :cond_1a
goto :goto_35
.line 909
:cond_1a
new-instance v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;
invoke-direct {v0, p1}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;-><init>(Lcom/google/android/exoplayer2/PlayerMessage;)V
.line 910
.local v0, "pendingMessageInfo":Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->resolvePendingMessagePosition(Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;)Z
move-result v1
if-eqz v1, :cond_30
.line 911
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
invoke-virtual {v1, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 913
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
invoke-static {v1}, Ljava/util/Collections;->sort(Ljava/util/List;)V
goto :goto_3f
.line 915
:cond_30
const/4 v1, 0x0
invoke-virtual {p1, v1}, Lcom/google/android/exoplayer2/PlayerMessage;->markAsProcessed(Z)V
goto :goto_3f
.line 907
.end local v0 # "pendingMessageInfo":Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;
:cond_35
:goto_35
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingMessages:Ljava/util/ArrayList;
new-instance v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;
invoke-direct {v1, p1}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PendingMessageInfo;-><init>(Lcom/google/android/exoplayer2/PlayerMessage;)V
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 918
:goto_3f
return-void
.end method
.method private sendMessageToTarget(Lcom/google/android/exoplayer2/PlayerMessage;)V
.registers 5
.param p1, "message" # Lcom/google/android/exoplayer2/PlayerMessage;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 921
invoke-virtual {p1}, Lcom/google/android/exoplayer2/PlayerMessage;->getHandler()Landroid/os/Handler;
move-result-object v0
invoke-virtual {v0}, Landroid/os/Handler;->getLooper()Landroid/os/Looper;
move-result-object v0
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
invoke-interface {v1}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->getLooper()Landroid/os/Looper;
move-result-object v1
if-ne v0, v1, :cond_27
.line 922
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->deliverMessage(Lcom/google/android/exoplayer2/PlayerMessage;)V
.line 923
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget v0, v0, Lcom/google/android/exoplayer2/PlaybackInfo;->playbackState:I
const/4 v1, 0x3
const/4 v2, 0x2
if-eq v0, v1, :cond_21
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget v0, v0, Lcom/google/android/exoplayer2/PlaybackInfo;->playbackState:I
if-ne v0, v2, :cond_32
.line 926
:cond_21
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
invoke-interface {v0, v2}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->sendEmptyMessage(I)Z
goto :goto_32
.line 929
:cond_27
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
const/16 v1, 0x10
invoke-interface {v0, v1, p1}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
move-result-object v0
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
.line 931
:cond_32
:goto_32
return-void
.end method
.method private sendMessageToTargetThread(Lcom/google/android/exoplayer2/PlayerMessage;)V
.registers 4
.param p1, "message" # Lcom/google/android/exoplayer2/PlayerMessage;
.line 934
invoke-virtual {p1}, Lcom/google/android/exoplayer2/PlayerMessage;->getHandler()Landroid/os/Handler;
move-result-object v0
.line 935
.local v0, "handler":Landroid/os/Handler;
new-instance v1, Lcom/google/android/exoplayer2/-$$Lambda$ExoPlayerImplInternal$XwFxncwlyfAWA4k618O8BNtCsr0;
invoke-direct {v1, p0, p1}, Lcom/google/android/exoplayer2/-$$Lambda$ExoPlayerImplInternal$XwFxncwlyfAWA4k618O8BNtCsr0;-><init>(Lcom/google/android/exoplayer2/ExoPlayerImplInternal;Lcom/google/android/exoplayer2/PlayerMessage;)V
invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
.line 944
return-void
.end method
.method private setForegroundModeInternal(ZLjava/util/concurrent/atomic/AtomicBoolean;)V
.registers 8
.param p1, "foregroundMode" # Z
.param p2, "processedFlag" # Ljava/util/concurrent/atomic/AtomicBoolean;
.line 783
iget-boolean v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->foregroundMode:Z
if-eq v0, p1, :cond_1c
.line 784
iput-boolean p1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->foregroundMode:Z
.line 785
if-nez p1, :cond_1c
.line 786
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->renderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v1, v0
const/4 v2, 0x0
:goto_c
if-ge v2, v1, :cond_1c
aget-object v3, v0, v2
.line 787
.local v3, "renderer":Lcom/google/android/exoplayer2/Renderer;
invoke-interface {v3}, Lcom/google/android/exoplayer2/Renderer;->getState()I
move-result v4
if-nez v4, :cond_19
.line 788
invoke-interface {v3}, Lcom/google/android/exoplayer2/Renderer;->reset()V
.line 786
.end local v3 # "renderer":Lcom/google/android/exoplayer2/Renderer;
:cond_19
add-int/lit8 v2, v2, 0x1
goto :goto_c
.line 793
:cond_1c
if-eqz p2, :cond_2b
.line 794
monitor-enter p0
.line 795
const/4 v0, 0x1
:try_start_20
invoke-virtual {p2, v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V
.line 796
invoke-virtual {p0}, Ljava/lang/Object;->notifyAll()V
.line 797
monitor-exit p0
goto :goto_2b
:catchall_28
move-exception v0
monitor-exit p0
:try_end_2a
.catchall {:try_start_20 .. :try_end_2a} :catchall_28
throw v0
.line 799
:cond_2b
:goto_2b
return-void
.end method
.method private setIsLoading(Z)V
.registers 3
.param p1, "isLoading" # Z
.line 414
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-boolean v0, v0, Lcom/google/android/exoplayer2/PlaybackInfo;->isLoading:Z
if-eq v0, p1, :cond_e
.line 415
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/PlaybackInfo;->copyWithIsLoading(Z)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v0
iput-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 417
:cond_e
return-void
.end method
.method private setPlayWhenReadyInternal(Z)V
.registers 5
.param p1, "playWhenReady" # Z
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 446
const/4 v0, 0x0
iput-boolean v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rebuffering:Z
.line 447
iput-boolean p1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playWhenReady:Z
.line 448
if-nez p1, :cond_e
.line 449
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->stopRenderers()V
.line 450
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->updatePlaybackPositions()V
goto :goto_2a
.line 452
:cond_e
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget v0, v0, Lcom/google/android/exoplayer2/PlaybackInfo;->playbackState:I
const/4 v1, 0x3
const/4 v2, 0x2
if-ne v0, v1, :cond_1f
.line 453
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->startRenderers()V
.line 454
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
invoke-interface {v0, v2}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->sendEmptyMessage(I)Z
goto :goto_2a
.line 455
:cond_1f
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget v0, v0, Lcom/google/android/exoplayer2/PlaybackInfo;->playbackState:I
if-ne v0, v2, :cond_2a
.line 456
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
invoke-interface {v0, v2}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->sendEmptyMessage(I)Z
.line 459
:cond_2a
:goto_2a
return-void
.end method
.method private setPlaybackParametersInternal(Lcom/google/android/exoplayer2/PlaybackParameters;)V
.registers 3
.param p1, "playbackParameters" # Lcom/google/android/exoplayer2/PlaybackParameters;
.line 774
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaClock:Lcom/google/android/exoplayer2/DefaultMediaClock;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/DefaultMediaClock;->setPlaybackParameters(Lcom/google/android/exoplayer2/PlaybackParameters;)Lcom/google/android/exoplayer2/PlaybackParameters;
.line 775
return-void
.end method
.method private setRepeatModeInternal(I)V
.registers 3
.param p1, "repeatMode" # I
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 463
iput p1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->repeatMode:I
.line 464
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->updateRepeatMode(I)Z
move-result v0
if-nez v0, :cond_e
.line 465
const/4 v0, 0x1
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->seekToCurrentPosition(Z)V
.line 467
:cond_e
const/4 v0, 0x0
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handleLoadingMediaPeriodChanged(Z)V
.line 468
return-void
.end method
.method private setSeekParametersInternal(Lcom/google/android/exoplayer2/SeekParameters;)V
.registers 2
.param p1, "seekParameters" # Lcom/google/android/exoplayer2/SeekParameters;
.line 778
iput-object p1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->seekParameters:Lcom/google/android/exoplayer2/SeekParameters;
.line 779
return-void
.end method
.method private setShuffleModeEnabledInternal(Z)V
.registers 3
.param p1, "shuffleModeEnabled" # Z
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 472
iput-boolean p1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->shuffleModeEnabled:Z
.line 473
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->updateShuffleModeEnabled(Z)Z
move-result v0
if-nez v0, :cond_e
.line 474
const/4 v0, 0x1
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->seekToCurrentPosition(Z)V
.line 476
:cond_e
const/4 v0, 0x0
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handleLoadingMediaPeriodChanged(Z)V
.line 477
return-void
.end method
.method private setState(I)V
.registers 3
.param p1, "state" # I
.line 408
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget v0, v0, Lcom/google/android/exoplayer2/PlaybackInfo;->playbackState:I
if-eq v0, p1, :cond_e
.line 409
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/PlaybackInfo;->copyWithPlaybackState(I)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v0
iput-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 411
:cond_e
return-void
.end method
.method private shouldTransitionToReadyState(Z)Z
.registers 11
.param p1, "renderersReadyOrEnded" # Z
.line 1186
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->enabledRenderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v0, v0
if-nez v0, :cond_a
.line 1188
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->isTimelineReady()Z
move-result v0
return v0
.line 1190
:cond_a
const/4 v0, 0x0
if-nez p1, :cond_e
.line 1191
return v0
.line 1193
:cond_e
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-boolean v1, v1, Lcom/google/android/exoplayer2/PlaybackInfo;->isLoading:Z
const/4 v2, 0x1
if-nez v1, :cond_16
.line 1196
return v2
.line 1199
:cond_16
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getLoadingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v1
.line 1200
.local v1, "loadingHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->isFullyBuffered()Z
move-result v3
if-eqz v3, :cond_2a
iget-object v3, v1, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-boolean v3, v3, Lcom/google/android/exoplayer2/MediaPeriodInfo;->isFinal:Z
if-eqz v3, :cond_2a
const/4 v3, 0x1
goto :goto_2b
:cond_2a
const/4 v3, 0x0
.line 1201
.local v3, "bufferedToEnd":Z
:goto_2b
if-nez v3, :cond_43
iget-object v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->loadControl:Lcom/google/android/exoplayer2/LoadControl;
.line 1203
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->getTotalBufferedDurationUs()J
move-result-wide v5
iget-object v7, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaClock:Lcom/google/android/exoplayer2/DefaultMediaClock;
invoke-virtual {v7}, Lcom/google/android/exoplayer2/DefaultMediaClock;->getPlaybackParameters()Lcom/google/android/exoplayer2/PlaybackParameters;
move-result-object v7
iget v7, v7, Lcom/google/android/exoplayer2/PlaybackParameters;->speed:F
iget-boolean v8, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rebuffering:Z
.line 1202
invoke-interface {v4, v5, v6, v7, v8}, Lcom/google/android/exoplayer2/LoadControl;->shouldStartPlayback(JFZ)Z
move-result v4
if-eqz v4, :cond_44
:cond_43
const/4 v0, 0x1
.line 1201
:cond_44
return v0
.end method
.method private startRenderers()V
.registers 5
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 499
const/4 v0, 0x0
iput-boolean v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rebuffering:Z
.line 500
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaClock:Lcom/google/android/exoplayer2/DefaultMediaClock;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/DefaultMediaClock;->start()V
.line 501
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->enabledRenderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v2, v1
:goto_b
if-ge v0, v2, :cond_15
aget-object v3, v1, v0
.line 502
.local v3, "renderer":Lcom/google/android/exoplayer2/Renderer;
invoke-interface {v3}, Lcom/google/android/exoplayer2/Renderer;->start()V
.line 501
.end local v3 # "renderer":Lcom/google/android/exoplayer2/Renderer;
add-int/lit8 v0, v0, 0x1
goto :goto_b
.line 504
:cond_15
return-void
.end method
.method private stopInternal(ZZZ)V
.registers 8
.param p1, "forceResetRenderers" # Z
.param p2, "resetPositionAndState" # Z
.param p3, "acknowledgeStop" # Z
.line 803
const/4 v0, 0x0
const/4 v1, 0x1
if-nez p1, :cond_b
iget-boolean v2, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->foregroundMode:Z
if-nez v2, :cond_9
goto :goto_b
:cond_9
const/4 v2, 0x0
goto :goto_c
:cond_b
:goto_b
const/4 v2, 0x1
:goto_c
invoke-direct {p0, v2, v1, p2, p2}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->resetInternal(ZZZZ)V
.line 808
iget-object v2, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfoUpdate:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;
iget v3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingPrepareCount:I
add-int/2addr v3, p3
invoke-virtual {v2, v3}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;->incrementPendingOperationAcks(I)V
.line 810
iput v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingPrepareCount:I
.line 811
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->loadControl:Lcom/google/android/exoplayer2/LoadControl;
invoke-interface {v0}, Lcom/google/android/exoplayer2/LoadControl;->onStopped()V
.line 812
invoke-direct {p0, v1}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->setState(I)V
.line 813
return-void
.end method
.method private stopRenderers()V
.registers 5
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 507
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaClock:Lcom/google/android/exoplayer2/DefaultMediaClock;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/DefaultMediaClock;->stop()V
.line 508
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->enabledRenderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v1, v0
const/4 v2, 0x0
:goto_9
if-ge v2, v1, :cond_13
aget-object v3, v0, v2
.line 509
.local v3, "renderer":Lcom/google/android/exoplayer2/Renderer;
invoke-direct {p0, v3}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->ensureStopped(Lcom/google/android/exoplayer2/Renderer;)V
.line 508
.end local v3 # "renderer":Lcom/google/android/exoplayer2/Renderer;
add-int/lit8 v2, v2, 0x1
goto :goto_9
.line 511
:cond_13
return-void
.end method
.method private updateLoadControlTrackSelection(Lcom/google/android/exoplayer2/source/TrackGroupArray;Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;)V
.registers 6
.param p1, "trackGroups" # Lcom/google/android/exoplayer2/source/TrackGroupArray;
.param p2, "trackSelectorResult" # Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
.line 1823
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->loadControl:Lcom/google/android/exoplayer2/LoadControl;
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->renderers:[Lcom/google/android/exoplayer2/Renderer;
iget-object v2, p2, Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;->selections:Lcom/google/android/exoplayer2/trackselection/TrackSelectionArray;
invoke-interface {v0, v1, p1, v2}, Lcom/google/android/exoplayer2/LoadControl;->onTracksSelected([Lcom/google/android/exoplayer2/Renderer;Lcom/google/android/exoplayer2/source/TrackGroupArray;Lcom/google/android/exoplayer2/trackselection/TrackSelectionArray;)V
.line 1824
return-void
.end method
.method private updatePeriods()V
.registers 20
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;,
Ljava/io/IOException;
}
.end annotation
.line 1489
move-object/from16 v0, p0
iget-object v1, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaSource:Lcom/google/android/exoplayer2/source/MediaSource;
if-nez v1, :cond_7
.line 1491
return-void
.line 1493
:cond_7
iget v2, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->pendingPrepareCount:I
if-lez v2, :cond_f
.line 1495
invoke-interface {v1}, Lcom/google/android/exoplayer2/source/MediaSource;->maybeThrowSourceInfoRefreshError()V
.line 1496
return-void
.line 1500
:cond_f
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->maybeUpdateLoadingPeriod()V
.line 1501
iget-object v1, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getLoadingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v1
.line 1502
.local v1, "loadingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
const/4 v2, 0x0
if-eqz v1, :cond_2c
invoke-virtual {v1}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->isFullyBuffered()Z
move-result v3
if-eqz v3, :cond_22
goto :goto_2c
.line 1504
:cond_22
iget-object v3, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-boolean v3, v3, Lcom/google/android/exoplayer2/PlaybackInfo;->isLoading:Z
if-nez v3, :cond_2f
.line 1505
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->maybeContinueLoading()V
goto :goto_2f
.line 1503
:cond_2c
:goto_2c
invoke-direct {v0, v2}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->setIsLoading(Z)V
.line 1508
:cond_2f
:goto_2f
iget-object v3, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v3}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->hasPlayingPeriod()Z
move-result v3
if-nez v3, :cond_38
.line 1510
return-void
.line 1514
:cond_38
iget-object v3, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v3}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getPlayingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v3
.line 1515
.local v3, "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
iget-object v4, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v4}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getReadingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v4
.line 1516
.local v4, "readingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
const/4 v5, 0x0
.line 1517
.local v5, "advancedPlayingPeriod":Z
:goto_45
iget-boolean v6, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playWhenReady:Z
if-eqz v6, :cond_93
if-eq v3, v4, :cond_93
iget-wide v6, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rendererPositionUs:J
.line 1519
invoke-virtual {v3}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v8
invoke-virtual {v8}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getStartPositionRendererTime()J
move-result-wide v8
cmp-long v10, v6, v8
if-ltz v10, :cond_93
.line 1522
if-eqz v5, :cond_5e
.line 1524
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->maybeNotifyPlaybackInfoChanged()V
.line 1526
:cond_5e
iget-object v6, v3, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-boolean v6, v6, Lcom/google/android/exoplayer2/MediaPeriodInfo;->isLastInTimelinePeriod:Z
if-eqz v6, :cond_66
const/4 v6, 0x0
goto :goto_67
:cond_66
const/4 v6, 0x3
.line 1530
.local v6, "discontinuityReason":I
:goto_67
move-object v7, v3
.line 1531
.local v7, "oldPlayingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
iget-object v8, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v8}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->advancePlayingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v3
.line 1532
invoke-direct {v0, v7}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->updatePlayingPeriodRenderers(Lcom/google/android/exoplayer2/MediaPeriodHolder;)V
.line 1533
iget-object v8, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v9, v3, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-object v9, v9, Lcom/google/android/exoplayer2/MediaPeriodInfo;->id:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-object v10, v3, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-wide v10, v10, Lcom/google/android/exoplayer2/MediaPeriodInfo;->startPositionUs:J
iget-object v12, v3, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-wide v12, v12, Lcom/google/android/exoplayer2/MediaPeriodInfo;->contentPositionUs:J
.line 1538
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->getTotalBufferedDurationUs()J
move-result-wide v14
.line 1534
invoke-virtual/range {v8 .. v15}, Lcom/google/android/exoplayer2/PlaybackInfo;->copyWithNewPosition(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJJ)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v8
iput-object v8, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 1539
iget-object v8, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfoUpdate:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;
invoke-virtual {v8, v6}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;->setPositionDiscontinuity(I)V
.line 1540
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->updatePlaybackPositions()V
.line 1541
const/4 v5, 0x1
.line 1542
.end local v6 # "discontinuityReason":I
.end local v7 # "oldPlayingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
goto :goto_45
.line 1544
:cond_93
iget-object v6, v4, Lcom/google/android/exoplayer2/MediaPeriodHolder;->info:Lcom/google/android/exoplayer2/MediaPeriodInfo;
iget-boolean v6, v6, Lcom/google/android/exoplayer2/MediaPeriodInfo;->isFinal:Z
if-eqz v6, :cond_ba
.line 1545
const/4 v2, 0x0
.local v2, "i":I
:goto_9a
iget-object v6, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->renderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v7, v6
if-ge v2, v7, :cond_b9
.line 1546
aget-object v6, v6, v2
.line 1547
.local v6, "renderer":Lcom/google/android/exoplayer2/Renderer;
iget-object v7, v4, Lcom/google/android/exoplayer2/MediaPeriodHolder;->sampleStreams:[Lcom/google/android/exoplayer2/source/SampleStream;
aget-object v7, v7, v2
.line 1550
.local v7, "sampleStream":Lcom/google/android/exoplayer2/source/SampleStream;
if-eqz v7, :cond_b6
invoke-interface {v6}, Lcom/google/android/exoplayer2/Renderer;->getStream()Lcom/google/android/exoplayer2/source/SampleStream;
move-result-object v8
if-ne v8, v7, :cond_b6
.line 1551
invoke-interface {v6}, Lcom/google/android/exoplayer2/Renderer;->hasReadStreamToEnd()Z
move-result v8
if-eqz v8, :cond_b6
.line 1552
invoke-interface {v6}, Lcom/google/android/exoplayer2/Renderer;->setCurrentStreamFinal()V
.line 1545
.end local v6 # "renderer":Lcom/google/android/exoplayer2/Renderer;
.end local v7 # "sampleStream":Lcom/google/android/exoplayer2/source/SampleStream;
:cond_b6
add-int/lit8 v2, v2, 0x1
goto :goto_9a
.line 1555
.end local v2 # "i":I
:cond_b9
return-void
.line 1559
:cond_ba
invoke-virtual {v4}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v6
if-nez v6, :cond_c1
.line 1561
return-void
.line 1564
:cond_c1
const/4 v6, 0x0
.local v6, "i":I
:goto_c2
iget-object v7, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->renderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v8, v7
if-ge v6, v8, :cond_e0
.line 1565
aget-object v7, v7, v6
.line 1566
.local v7, "renderer":Lcom/google/android/exoplayer2/Renderer;
iget-object v8, v4, Lcom/google/android/exoplayer2/MediaPeriodHolder;->sampleStreams:[Lcom/google/android/exoplayer2/source/SampleStream;
aget-object v8, v8, v6
.line 1567
.local v8, "sampleStream":Lcom/google/android/exoplayer2/source/SampleStream;
invoke-interface {v7}, Lcom/google/android/exoplayer2/Renderer;->getStream()Lcom/google/android/exoplayer2/source/SampleStream;
move-result-object v9
if-ne v9, v8, :cond_df
if-eqz v8, :cond_dc
.line 1568
invoke-interface {v7}, Lcom/google/android/exoplayer2/Renderer;->hasReadStreamToEnd()Z
move-result v9
if-nez v9, :cond_dc
goto :goto_df
.line 1564
.end local v7 # "renderer":Lcom/google/android/exoplayer2/Renderer;
.end local v8 # "sampleStream":Lcom/google/android/exoplayer2/source/SampleStream;
:cond_dc
add-int/lit8 v6, v6, 0x1
goto :goto_c2
.line 1570
.restart local v7 # "renderer":Lcom/google/android/exoplayer2/Renderer;
.restart local v8 # "sampleStream":Lcom/google/android/exoplayer2/source/SampleStream;
:cond_df
:goto_df
return-void
.line 1574
.end local v6 # "i":I
.end local v7 # "renderer":Lcom/google/android/exoplayer2/Renderer;
.end local v8 # "sampleStream":Lcom/google/android/exoplayer2/source/SampleStream;
:cond_e0
invoke-virtual {v4}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v6
iget-boolean v6, v6, Lcom/google/android/exoplayer2/MediaPeriodHolder;->prepared:Z
if-nez v6, :cond_ec
.line 1576
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->maybeThrowPeriodPrepareError()V
.line 1577
return-void
.line 1580
:cond_ec
invoke-virtual {v4}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getTrackSelectorResult()Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
move-result-object v6
.line 1581
.local v6, "oldTrackSelectorResult":Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
iget-object v7, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v7}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->advanceReadingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v4
.line 1582
invoke-virtual {v4}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getTrackSelectorResult()Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
move-result-object v7
.line 1584
.local v7, "newTrackSelectorResult":Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
iget-object v8, v4, Lcom/google/android/exoplayer2/MediaPeriodHolder;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod;
.line 1585
invoke-interface {v8}, Lcom/google/android/exoplayer2/source/MediaPeriod;->readDiscontinuity()J
move-result-wide v8
const-wide v10, -0x7fffffffffffffffL # -4.9E-324
cmp-long v13, v8, v10
if-eqz v13, :cond_10b
const/4 v8, 0x1
goto :goto_10c
:cond_10b
const/4 v8, 0x0
.line 1586
.local v8, "initialDiscontinuity":Z
:goto_10c
const/4 v9, 0x0
.local v9, "i":I
:goto_10d
iget-object v10, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->renderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v11, v10
if-ge v9, v11, :cond_187
.line 1587
aget-object v10, v10, v9
.line 1588
.local v10, "renderer":Lcom/google/android/exoplayer2/Renderer;
invoke-virtual {v6, v9}, Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;->isRendererEnabled(I)Z
move-result v11
.line 1589
.local v11, "rendererWasEnabled":Z
if-nez v11, :cond_11f
move-object/from16 v16, v1
move-object/from16 v17, v3
goto :goto_17d
.line 1591
:cond_11f
if-eqz v8, :cond_129
.line 1594
invoke-interface {v10}, Lcom/google/android/exoplayer2/Renderer;->setCurrentStreamFinal()V
move-object/from16 v16, v1
move-object/from16 v17, v3
goto :goto_17d
.line 1595
:cond_129
invoke-interface {v10}, Lcom/google/android/exoplayer2/Renderer;->isCurrentStreamFinal()Z
move-result v13
if-nez v13, :cond_179
.line 1596
iget-object v13, v7, Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;->selections:Lcom/google/android/exoplayer2/trackselection/TrackSelectionArray;
invoke-virtual {v13, v9}, Lcom/google/android/exoplayer2/trackselection/TrackSelectionArray;->get(I)Lcom/google/android/exoplayer2/trackselection/TrackSelection;
move-result-object v13
.line 1597
.local v13, "newSelection":Lcom/google/android/exoplayer2/trackselection/TrackSelection;
invoke-virtual {v7, v9}, Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;->isRendererEnabled(I)Z
move-result v14
.line 1598
.local v14, "newRendererEnabled":Z
iget-object v15, v0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rendererCapabilities:[Lcom/google/android/exoplayer2/RendererCapabilities;
aget-object v15, v15, v9
invoke-interface {v15}, Lcom/google/android/exoplayer2/RendererCapabilities;->getTrackType()I
move-result v15
const/4 v2, 0x6
if-ne v15, v2, :cond_146
const/4 v2, 0x1
goto :goto_147
:cond_146
const/4 v2, 0x0
.line 1599
.local v2, "isNoSampleRenderer":Z
:goto_147
iget-object v15, v6, Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;->rendererConfigurations:[Lcom/google/android/exoplayer2/RendererConfiguration;
aget-object v15, v15, v9
.line 1600
.local v15, "oldConfig":Lcom/google/android/exoplayer2/RendererConfiguration;
iget-object v12, v7, Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;->rendererConfigurations:[Lcom/google/android/exoplayer2/RendererConfiguration;
aget-object v12, v12, v9
.line 1601
.local v12, "newConfig":Lcom/google/android/exoplayer2/RendererConfiguration;
if-eqz v14, :cond_16f
invoke-virtual {v12, v15}, Lcom/google/android/exoplayer2/RendererConfiguration;->equals(Ljava/lang/Object;)Z
move-result v16
if-eqz v16, :cond_16f
if-nez v2, :cond_16f
.line 1608
invoke-static {v13}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->getFormats(Lcom/google/android/exoplayer2/trackselection/TrackSelection;)[Lcom/google/android/exoplayer2/Format;
move-result-object v0
.line 1609
.local v0, "formats":[Lcom/google/android/exoplayer2/Format;
move-object/from16 v16, v1
.end local v1 # "loadingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.local v16, "loadingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
iget-object v1, v4, Lcom/google/android/exoplayer2/MediaPeriodHolder;->sampleStreams:[Lcom/google/android/exoplayer2/source/SampleStream;
aget-object v1, v1, v9
.line 1610
move/from16 v18, v2
move-object/from16 v17, v3
.end local v2 # "isNoSampleRenderer":Z
.end local v3 # "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.local v17, "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.local v18, "isNoSampleRenderer":Z
invoke-virtual {v4}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getRendererOffset()J
move-result-wide v2
.line 1609
invoke-interface {v10, v0, v1, v2, v3}, Lcom/google/android/exoplayer2/Renderer;->replaceStream([Lcom/google/android/exoplayer2/Format;Lcom/google/android/exoplayer2/source/SampleStream;J)V
.line 1611
.end local v0 # "formats":[Lcom/google/android/exoplayer2/Format;
goto :goto_17d
.line 1601
.end local v16 # "loadingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.end local v17 # "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.end local v18 # "isNoSampleRenderer":Z
.restart local v1 # "loadingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.restart local v2 # "isNoSampleRenderer":Z
.restart local v3 # "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
:cond_16f
move-object/from16 v16, v1
move/from16 v18, v2
move-object/from16 v17, v3
.line 1617
.end local v1 # "loadingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.end local v2 # "isNoSampleRenderer":Z
.end local v3 # "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.restart local v16 # "loadingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.restart local v17 # "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.restart local v18 # "isNoSampleRenderer":Z
invoke-interface {v10}, Lcom/google/android/exoplayer2/Renderer;->setCurrentStreamFinal()V
goto :goto_17d
.line 1595
.end local v12 # "newConfig":Lcom/google/android/exoplayer2/RendererConfiguration;
.end local v13 # "newSelection":Lcom/google/android/exoplayer2/trackselection/TrackSelection;
.end local v14 # "newRendererEnabled":Z
.end local v15 # "oldConfig":Lcom/google/android/exoplayer2/RendererConfiguration;
.end local v16 # "loadingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.end local v17 # "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.end local v18 # "isNoSampleRenderer":Z
.restart local v1 # "loadingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.restart local v3 # "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
:cond_179
move-object/from16 v16, v1
move-object/from16 v17, v3
.line 1586
.end local v1 # "loadingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.end local v3 # "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.end local v10 # "renderer":Lcom/google/android/exoplayer2/Renderer;
.end local v11 # "rendererWasEnabled":Z
.restart local v16 # "loadingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.restart local v17 # "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
:goto_17d
add-int/lit8 v9, v9, 0x1
const/4 v2, 0x0
move-object/from16 v0, p0
move-object/from16 v1, v16
move-object/from16 v3, v17
goto :goto_10d
.line 1621
.end local v9 # "i":I
.end local v16 # "loadingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.end local v17 # "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.restart local v1 # "loadingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
.restart local v3 # "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
:cond_187
return-void
.end method
.method private updatePlaybackPositions()V
.registers 13
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 514
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->hasPlayingPeriod()Z
move-result v0
if-nez v0, :cond_9
.line 515
return-void
.line 519
:cond_9
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getPlayingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
.line 520
.local v0, "playingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
iget-object v1, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->mediaPeriod:Lcom/google/android/exoplayer2/source/MediaPeriod;
invoke-interface {v1}, Lcom/google/android/exoplayer2/source/MediaPeriod;->readDiscontinuity()J
move-result-wide v10
.line 521
.local v10, "periodPositionUs":J
const-wide v1, -0x7fffffffffffffffL # -4.9E-324
cmp-long v3, v10, v1
if-eqz v3, :cond_43
.line 522
invoke-direct {p0, v10, v11}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->resetRendererPosition(J)V
.line 525
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-wide v1, v1, Lcom/google/android/exoplayer2/PlaybackInfo;->positionUs:J
cmp-long v3, v10, v1
if-eqz v3, :cond_5a
.line 526
iget-object v2, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-object v3, v2, Lcom/google/android/exoplayer2/PlaybackInfo;->periodId:Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-wide v6, v1, Lcom/google/android/exoplayer2/PlaybackInfo;->contentPositionUs:J
.line 531
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->getTotalBufferedDurationUs()J
move-result-wide v8
.line 527
move-wide v4, v10
invoke-virtual/range {v2 .. v9}, Lcom/google/android/exoplayer2/PlaybackInfo;->copyWithNewPosition(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;JJJ)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v1
iput-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 532
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfoUpdate:Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;
const/4 v2, 0x4
invoke-virtual {v1, v2}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$PlaybackInfoUpdate;->setPositionDiscontinuity(I)V
goto :goto_5a
.line 535
:cond_43
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->mediaClock:Lcom/google/android/exoplayer2/DefaultMediaClock;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/DefaultMediaClock;->syncAndGetPositionUs()J
move-result-wide v1
iput-wide v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->rendererPositionUs:J
.line 536
invoke-virtual {v0, v1, v2}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->toPeriodTime(J)J
move-result-wide v10
.line 537
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iget-wide v1, v1, Lcom/google/android/exoplayer2/PlaybackInfo;->positionUs:J
invoke-direct {p0, v1, v2, v10, v11}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->maybeTriggerPendingMessages(JJ)V
.line 538
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
iput-wide v10, v1, Lcom/google/android/exoplayer2/PlaybackInfo;->positionUs:J
.line 542
:cond_5a
:goto_5a
iget-object v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getLoadingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v1
.line 543
.local v1, "loadingPeriod":Lcom/google/android/exoplayer2/MediaPeriodHolder;
iget-object v2, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getBufferedPositionUs()J
move-result-wide v3
iput-wide v3, v2, Lcom/google/android/exoplayer2/PlaybackInfo;->bufferedPositionUs:J
.line 544
iget-object v2, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->getTotalBufferedDurationUs()J
move-result-wide v3
iput-wide v3, v2, Lcom/google/android/exoplayer2/PlaybackInfo;->totalBufferedDurationUs:J
.line 545
return-void
.end method
.method private updatePlayingPeriodRenderers(Lcom/google/android/exoplayer2/MediaPeriodHolder;)V
.registers 9
.param p1, "oldPlayingPeriodHolder" # Lcom/google/android/exoplayer2/MediaPeriodHolder;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 1704
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getPlayingPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
.line 1705
.local v0, "newPlayingPeriodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
if-eqz v0, :cond_68
if-ne p1, v0, :cond_b
goto :goto_68
.line 1708
:cond_b
const/4 v1, 0x0
.line 1709
.local v1, "enabledRendererCount":I
iget-object v2, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->renderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v2, v2
new-array v2, v2, [Z
.line 1710
.local v2, "rendererWasEnabledFlags":[Z
const/4 v3, 0x0
.local v3, "i":I
:goto_12
iget-object v4, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->renderers:[Lcom/google/android/exoplayer2/Renderer;
array-length v5, v4
if-ge v3, v5, :cond_54
.line 1711
aget-object v4, v4, v3
.line 1712
.local v4, "renderer":Lcom/google/android/exoplayer2/Renderer;
invoke-interface {v4}, Lcom/google/android/exoplayer2/Renderer;->getState()I
move-result v5
if-eqz v5, :cond_21
const/4 v5, 0x1
goto :goto_22
:cond_21
const/4 v5, 0x0
:goto_22
aput-boolean v5, v2, v3
.line 1713
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getTrackSelectorResult()Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
move-result-object v5
invoke-virtual {v5, v3}, Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;->isRendererEnabled(I)Z
move-result v5
if-eqz v5, :cond_30
.line 1714
add-int/lit8 v1, v1, 0x1
.line 1716
:cond_30
aget-boolean v5, v2, v3
if-eqz v5, :cond_51
.line 1717
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getTrackSelectorResult()Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
move-result-object v5
invoke-virtual {v5, v3}, Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;->isRendererEnabled(I)Z
move-result v5
if-eqz v5, :cond_4e
.line 1718
invoke-interface {v4}, Lcom/google/android/exoplayer2/Renderer;->isCurrentStreamFinal()Z
move-result v5
if-eqz v5, :cond_51
.line 1719
invoke-interface {v4}, Lcom/google/android/exoplayer2/Renderer;->getStream()Lcom/google/android/exoplayer2/source/SampleStream;
move-result-object v5
iget-object v6, p1, Lcom/google/android/exoplayer2/MediaPeriodHolder;->sampleStreams:[Lcom/google/android/exoplayer2/source/SampleStream;
aget-object v6, v6, v3
if-ne v5, v6, :cond_51
.line 1723
:cond_4e
invoke-direct {p0, v4}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->disableRenderer(Lcom/google/android/exoplayer2/Renderer;)V
.line 1710
.end local v4 # "renderer":Lcom/google/android/exoplayer2/Renderer;
:cond_51
add-int/lit8 v3, v3, 0x1
goto :goto_12
.line 1726
.end local v3 # "i":I
:cond_54
iget-object v3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 1728
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getTrackGroups()Lcom/google/android/exoplayer2/source/TrackGroupArray;
move-result-object v4
.line 1729
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getTrackSelectorResult()Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
move-result-object v5
.line 1727
invoke-virtual {v3, v4, v5}, Lcom/google/android/exoplayer2/PlaybackInfo;->copyWithTrackInfo(Lcom/google/android/exoplayer2/source/TrackGroupArray;Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;)Lcom/google/android/exoplayer2/PlaybackInfo;
move-result-object v3
iput-object v3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->playbackInfo:Lcom/google/android/exoplayer2/PlaybackInfo;
.line 1730
invoke-direct {p0, v2, v1}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->enableRenderers([ZI)V
.line 1731
return-void
.line 1706
.end local v1 # "enabledRendererCount":I
.end local v2 # "rendererWasEnabledFlags":[Z
:cond_68
:goto_68
return-void
.end method
.method private updateTrackSelectionPlaybackSpeed(F)V
.registers 7
.param p1, "playbackSpeed" # F
.line 1157
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->queue:Lcom/google/android/exoplayer2/MediaPeriodQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodQueue;->getFrontPeriod()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
.line 1158
.local v0, "periodHolder":Lcom/google/android/exoplayer2/MediaPeriodHolder;
:goto_6
if-eqz v0, :cond_29
iget-boolean v1, v0, Lcom/google/android/exoplayer2/MediaPeriodHolder;->prepared:Z
if-eqz v1, :cond_29
.line 1159
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getTrackSelectorResult()Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
move-result-object v1
iget-object v1, v1, Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;->selections:Lcom/google/android/exoplayer2/trackselection/TrackSelectionArray;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/trackselection/TrackSelectionArray;->getAll()[Lcom/google/android/exoplayer2/trackselection/TrackSelection;
move-result-object v1
.line 1160
.local v1, "trackSelections":[Lcom/google/android/exoplayer2/trackselection/TrackSelection;
array-length v2, v1
const/4 v3, 0x0
:goto_18
if-ge v3, v2, :cond_24
aget-object v4, v1, v3
.line 1161
.local v4, "trackSelection":Lcom/google/android/exoplayer2/trackselection/TrackSelection;
if-eqz v4, :cond_21
.line 1162
invoke-interface {v4, p1}, Lcom/google/android/exoplayer2/trackselection/TrackSelection;->onPlaybackSpeed(F)V
.line 1160
.end local v4 # "trackSelection":Lcom/google/android/exoplayer2/trackselection/TrackSelection;
:cond_21
add-int/lit8 v3, v3, 0x1
goto :goto_18
.line 1165
:cond_24
invoke-virtual {v0}, Lcom/google/android/exoplayer2/MediaPeriodHolder;->getNext()Lcom/google/android/exoplayer2/MediaPeriodHolder;
move-result-object v0
.line 1166
.end local v1 # "trackSelections":[Lcom/google/android/exoplayer2/trackselection/TrackSelection;
goto :goto_6
.line 1167
:cond_29
return-void
.end method
# virtual methods
.method public getPlaybackLooper()Landroid/os/Looper;
.registers 2
.line 264
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->internalPlaybackThread:Landroid/os/HandlerThread;
invoke-virtual {v0}, Landroid/os/HandlerThread;->getLooper()Landroid/os/Looper;
move-result-object v0
return-object v0
.end method
.method public handleMessage(Landroid/os/Message;)Z
.registers 9
.param p1, "msg" # Landroid/os/Message;
.line 309
const-string v0, "ExoPlayerImplInternal"
const/4 v1, 0x2
const/4 v2, 0x1
const/4 v3, 0x0
:try_start_5
iget v4, p1, Landroid/os/Message;->what:I
packed-switch v4, :pswitch_data_102
.line 373
return v3
.line 360
:pswitch_b
iget-object v4, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
check-cast v4, Lcom/google/android/exoplayer2/PlaybackParameters;
invoke-direct {p0, v4}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handlePlaybackParameters(Lcom/google/android/exoplayer2/PlaybackParameters;)V
.line 361
goto/16 :goto_b2
.line 366
:pswitch_14
iget-object v4, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
check-cast v4, Lcom/google/android/exoplayer2/PlayerMessage;
invoke-direct {p0, v4}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->sendMessageToTargetThread(Lcom/google/android/exoplayer2/PlayerMessage;)V
.line 367
goto/16 :goto_b2
.line 363
:pswitch_1d
iget-object v4, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
check-cast v4, Lcom/google/android/exoplayer2/PlayerMessage;
invoke-direct {p0, v4}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->sendMessageInternal(Lcom/google/android/exoplayer2/PlayerMessage;)V
.line 364
goto/16 :goto_b2
.line 338
:pswitch_26
iget v4, p1, Landroid/os/Message;->arg1:I
if-eqz v4, :cond_2c
const/4 v4, 0x1
goto :goto_2d
:cond_2c
const/4 v4, 0x0
:goto_2d
iget-object v5, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
check-cast v5, Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-direct {p0, v4, v5}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->setForegroundModeInternal(ZLjava/util/concurrent/atomic/AtomicBoolean;)V
.line 340
goto/16 :goto_b2
.line 323
:pswitch_36
iget v4, p1, Landroid/os/Message;->arg1:I
if-eqz v4, :cond_3c
const/4 v4, 0x1
goto :goto_3d
:cond_3c
const/4 v4, 0x0
:goto_3d
invoke-direct {p0, v4}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->setShuffleModeEnabledInternal(Z)V
.line 324
goto/16 :goto_b2
.line 320
:pswitch_42
iget v4, p1, Landroid/os/Message;->arg1:I
invoke-direct {p0, v4}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->setRepeatModeInternal(I)V
.line 321
goto/16 :goto_b2
.line 357
:pswitch_49
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->reselectTracksInternal()V
.line 358
goto/16 :goto_b2
.line 354
:pswitch_4e
iget-object v4, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
check-cast v4, Lcom/google/android/exoplayer2/source/MediaPeriod;
invoke-direct {p0, v4}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handleContinueLoadingRequested(Lcom/google/android/exoplayer2/source/MediaPeriod;)V
.line 355
goto :goto_b2
.line 348
:pswitch_56
iget-object v4, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
check-cast v4, Lcom/google/android/exoplayer2/source/MediaPeriod;
invoke-direct {p0, v4}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handlePeriodPrepared(Lcom/google/android/exoplayer2/source/MediaPeriod;)V
.line 349
goto :goto_b2
.line 351
:pswitch_5e
iget-object v4, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
check-cast v4, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$MediaSourceRefreshInfo;
invoke-direct {p0, v4}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handleSourceInfoRefreshed(Lcom/google/android/exoplayer2/ExoPlayerImplInternal$MediaSourceRefreshInfo;)V
.line 352
goto :goto_b2
.line 369
:pswitch_66
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->releaseInternal()V
.line 371
return v2
.line 342
:pswitch_6a
iget v4, p1, Landroid/os/Message;->arg1:I
if-eqz v4, :cond_70
const/4 v4, 0x1
goto :goto_71
:cond_70
const/4 v4, 0x0
:goto_71
invoke-direct {p0, v3, v4, v2}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->stopInternal(ZZZ)V
.line 346
goto :goto_b2
.line 335
:pswitch_75
iget-object v4, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
check-cast v4, Lcom/google/android/exoplayer2/SeekParameters;
invoke-direct {p0, v4}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->setSeekParametersInternal(Lcom/google/android/exoplayer2/SeekParameters;)V
.line 336
goto :goto_b2
.line 332
:pswitch_7d
iget-object v4, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
check-cast v4, Lcom/google/android/exoplayer2/PlaybackParameters;
invoke-direct {p0, v4}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->setPlaybackParametersInternal(Lcom/google/android/exoplayer2/PlaybackParameters;)V
.line 333
goto :goto_b2
.line 329
:pswitch_85
iget-object v4, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
check-cast v4, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;
invoke-direct {p0, v4}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->seekToInternal(Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;)V
.line 330
goto :goto_b2
.line 326
:pswitch_8d
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->doSomeWork()V
.line 327
goto :goto_b2
.line 317
:pswitch_91
iget v4, p1, Landroid/os/Message;->arg1:I
if-eqz v4, :cond_97
const/4 v4, 0x1
goto :goto_98
:cond_97
const/4 v4, 0x0
:goto_98
invoke-direct {p0, v4}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->setPlayWhenReadyInternal(Z)V
.line 318
goto :goto_b2
.line 311
:pswitch_9c
iget-object v4, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
check-cast v4, Lcom/google/android/exoplayer2/source/MediaSource;
iget v5, p1, Landroid/os/Message;->arg1:I
if-eqz v5, :cond_a6
const/4 v5, 0x1
goto :goto_a7
:cond_a6
const/4 v5, 0x0
:goto_a7
iget v6, p1, Landroid/os/Message;->arg2:I
if-eqz v6, :cond_ad
const/4 v6, 0x1
goto :goto_ae
:cond_ad
const/4 v6, 0x0
:goto_ae
invoke-direct {p0, v4, v5, v6}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->prepareInternal(Lcom/google/android/exoplayer2/source/MediaSource;ZZ)V
.line 315
nop
.line 375
:goto_b2
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->maybeNotifyPlaybackInfoChanged()V
:try_end_b5
.catch Lcom/google/android/exoplayer2/ExoPlaybackException; {:try_start_5 .. :try_end_b5} :catch_ea
.catch Ljava/io/IOException; {:try_start_5 .. :try_end_b5} :catch_d0
.catch Ljava/lang/RuntimeException; {:try_start_5 .. :try_end_b5} :catch_b6
goto :goto_ff
.line 392
:catch_b6
move-exception v4
.line 393
.local v4, "e":Ljava/lang/RuntimeException;
const-string v5, "Internal runtime error."
invoke-static {v0, v5, v4}, Lcom/google/android/exoplayer2/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 394
invoke-direct {p0, v2, v3, v3}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->stopInternal(ZZZ)V
.line 398
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->eventHandler:Landroid/os/Handler;
invoke-static {v4}, Lcom/google/android/exoplayer2/ExoPlaybackException;->createForUnexpected(Ljava/lang/RuntimeException;)Lcom/google/android/exoplayer2/ExoPlaybackException;
move-result-object v3
invoke-virtual {v0, v1, v3}, Landroid/os/Handler;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
move-result-object v0
.line 399
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
.line 400
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->maybeNotifyPlaybackInfoChanged()V
goto :goto_100
.line 384
.end local v4 # "e":Ljava/lang/RuntimeException;
:catch_d0
move-exception v4
.line 385
.local v4, "e":Ljava/io/IOException;
const-string v5, "Source error."
invoke-static {v0, v5, v4}, Lcom/google/android/exoplayer2/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 386
invoke-direct {p0, v3, v3, v3}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->stopInternal(ZZZ)V
.line 390
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->eventHandler:Landroid/os/Handler;
invoke-static {v4}, Lcom/google/android/exoplayer2/ExoPlaybackException;->createForSource(Ljava/io/IOException;)Lcom/google/android/exoplayer2/ExoPlaybackException;
move-result-object v3
invoke-virtual {v0, v1, v3}, Landroid/os/Handler;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
move-result-object v0
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
.line 391
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->maybeNotifyPlaybackInfoChanged()V
.end local v4 # "e":Ljava/io/IOException;
goto :goto_ff
.line 376
:catch_ea
move-exception v4
.line 377
.local v4, "e":Lcom/google/android/exoplayer2/ExoPlaybackException;
const-string v5, "Playback error."
invoke-static {v0, v5, v4}, Lcom/google/android/exoplayer2/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 378
invoke-direct {p0, v2, v3, v3}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->stopInternal(ZZZ)V
.line 382
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->eventHandler:Landroid/os/Handler;
invoke-virtual {v0, v1, v4}, Landroid/os/Handler;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
move-result-object v0
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
.line 383
invoke-direct {p0}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->maybeNotifyPlaybackInfoChanged()V
.line 401
.end local v4 # "e":Lcom/google/android/exoplayer2/ExoPlaybackException;
:goto_ff
nop
.line 402
:goto_100
return v2
nop
:pswitch_data_102
.packed-switch 0x0
:pswitch_9c
:pswitch_91
:pswitch_8d
:pswitch_85
:pswitch_7d
:pswitch_75
:pswitch_6a
:pswitch_66
:pswitch_5e
:pswitch_56
:pswitch_4e
:pswitch_49
:pswitch_42
:pswitch_36
:pswitch_26
:pswitch_1d
:pswitch_14
:pswitch_b
.end packed-switch
.end method
.method public synthetic lambda$sendMessageToTargetThread$0$ExoPlayerImplInternal(Lcom/google/android/exoplayer2/PlayerMessage;)V
.registers 5
.param p1, "message" # Lcom/google/android/exoplayer2/PlayerMessage;
.line 938
:try_start_0
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->deliverMessage(Lcom/google/android/exoplayer2/PlayerMessage;)V
:try_end_3
.catch Lcom/google/android/exoplayer2/ExoPlaybackException; {:try_start_0 .. :try_end_3} :catch_5
.line 942
nop
.line 943
return-void
.line 939
:catch_5
move-exception v0
.line 940
.local v0, "e":Lcom/google/android/exoplayer2/ExoPlaybackException;
const-string v1, "ExoPlayerImplInternal"
const-string v2, "Unexpected error delivering message on external thread."
invoke-static {v1, v2, v0}, Lcom/google/android/exoplayer2/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 941
new-instance v1, Ljava/lang/RuntimeException;
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v1
.end method
.method public onContinueLoadingRequested(Lcom/google/android/exoplayer2/source/MediaPeriod;)V
.registers 4
.param p1, "source" # Lcom/google/android/exoplayer2/source/MediaPeriod;
.line 284
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
const/16 v1, 0xa
invoke-interface {v0, v1, p1}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
move-result-object v0
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
.line 285
return-void
.end method
.method public bridge synthetic onContinueLoadingRequested(Lcom/google/android/exoplayer2/source/SequenceableLoader;)V
.registers 2
.line 50
check-cast p1, Lcom/google/android/exoplayer2/source/MediaPeriod;
invoke-virtual {p0, p1}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->onContinueLoadingRequested(Lcom/google/android/exoplayer2/source/MediaPeriod;)V
return-void
.end method
.method public onPlaybackParametersChanged(Lcom/google/android/exoplayer2/PlaybackParameters;)V
.registers 4
.param p1, "playbackParameters" # Lcom/google/android/exoplayer2/PlaybackParameters;
.line 298
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
.line 299
const/16 v1, 0x11
invoke-interface {v0, v1, p1}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
move-result-object v0
.line 300
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
.line 301
return-void
.end method
.method public onPrepared(Lcom/google/android/exoplayer2/source/MediaPeriod;)V
.registers 4
.param p1, "source" # Lcom/google/android/exoplayer2/source/MediaPeriod;
.line 279
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
const/16 v1, 0x9
invoke-interface {v0, v1, p1}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
move-result-object v0
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
.line 280
return-void
.end method
.method public onSourceInfoRefreshed(Lcom/google/android/exoplayer2/source/MediaSource;Lcom/google/android/exoplayer2/Timeline;Ljava/lang/Object;)V
.registers 7
.param p1, "source" # Lcom/google/android/exoplayer2/source/MediaSource;
.param p2, "timeline" # Lcom/google/android/exoplayer2/Timeline;
.param p3, "manifest" # Ljava/lang/Object;
.line 271
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
new-instance v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$MediaSourceRefreshInfo;
invoke-direct {v1, p1, p2, p3}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$MediaSourceRefreshInfo;-><init>(Lcom/google/android/exoplayer2/source/MediaSource;Lcom/google/android/exoplayer2/Timeline;Ljava/lang/Object;)V
const/16 v2, 0x8
invoke-interface {v0, v2, v1}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
move-result-object v0
.line 272
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
.line 273
return-void
.end method
.method public onTrackSelectionsInvalidated()V
.registers 3
.line 291
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
const/16 v1, 0xb
invoke-interface {v0, v1}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->sendEmptyMessage(I)Z
.line 292
return-void
.end method
.method public prepare(Lcom/google/android/exoplayer2/source/MediaSource;ZZ)V
.registers 6
.param p1, "mediaSource" # Lcom/google/android/exoplayer2/source/MediaSource;
.param p2, "resetPosition" # Z
.param p3, "resetState" # Z
.line 177
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
.line 178
const/4 v1, 0x0
invoke-interface {v0, v1, p2, p3, p1}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->obtainMessage(IIILjava/lang/Object;)Landroid/os/Message;
move-result-object v0
.line 179
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
.line 180
return-void
.end method
.method public declared-synchronized release()V
.registers 3
monitor-enter p0
.line 245
:try_start_1
iget-boolean v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->released:Z
:try_end_3
.catchall {:try_start_1 .. :try_end_3} :catchall_24
if-eqz v0, :cond_7
.line 246
monitor-exit p0
return-void
.line 248
:cond_7
:try_start_7
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
const/4 v1, 0x7
invoke-interface {v0, v1}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->sendEmptyMessage(I)Z
.line 249
const/4 v0, 0x0
.line 250
.local v0, "wasInterrupted":Z
:goto_e
iget-boolean v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->released:Z
:try_end_10
.catchall {:try_start_7 .. :try_end_10} :catchall_24
if-nez v1, :cond_19
.line 252
:try_start_12
invoke-virtual {p0}, Ljava/lang/Object;->wait()V
:try_end_15
.catch Ljava/lang/InterruptedException; {:try_start_12 .. :try_end_15} :catch_16
.catchall {:try_start_12 .. :try_end_15} :catchall_24
.line 255
goto :goto_e
.line 253
.end local p0 # "this":Lcom/google/android/exoplayer2/ExoPlayerImplInternal;
:catch_16
move-exception v1
.line 254
.local v1, "e":Ljava/lang/InterruptedException;
const/4 v0, 0x1
.line 255
.end local v1 # "e":Ljava/lang/InterruptedException;
goto :goto_e
.line 257
:cond_19
if-eqz v0, :cond_22
.line 259
:try_start_1b
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Thread;->interrupt()V
:try_end_22
.catchall {:try_start_1b .. :try_end_22} :catchall_24
.line 261
:cond_22
monitor-exit p0
return-void
.line 244
.end local v0 # "wasInterrupted":Z
:catchall_24
move-exception v0
monitor-exit p0
goto :goto_28
:goto_27
throw v0
:goto_28
goto :goto_27
.end method
.method public seekTo(Lcom/google/android/exoplayer2/Timeline;IJ)V
.registers 8
.param p1, "timeline" # Lcom/google/android/exoplayer2/Timeline;
.param p2, "windowIndex" # I
.param p3, "positionUs" # J
.line 195
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
new-instance v1, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;
invoke-direct {v1, p1, p2, p3, p4}, Lcom/google/android/exoplayer2/ExoPlayerImplInternal$SeekPosition;-><init>(Lcom/google/android/exoplayer2/Timeline;IJ)V
const/4 v2, 0x3
invoke-interface {v0, v2, v1}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
move-result-object v0
.line 196
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
.line 197
return-void
.end method
.method public declared-synchronized sendMessage(Lcom/google/android/exoplayer2/PlayerMessage;)V
.registers 4
.param p1, "message" # Lcom/google/android/exoplayer2/PlayerMessage;
monitor-enter p0
.line 213
:try_start_1
iget-boolean v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->released:Z
if-eqz v0, :cond_12
.line 214
const-string v0, "ExoPlayerImplInternal"
const-string v1, "Ignoring messages sent after release."
invoke-static {v0, v1}, Lcom/google/android/exoplayer2/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V
.line 215
const/4 v0, 0x0
invoke-virtual {p1, v0}, Lcom/google/android/exoplayer2/PlayerMessage;->markAsProcessed(Z)V
:try_end_10
.catchall {:try_start_1 .. :try_end_10} :catchall_1f
.line 216
monitor-exit p0
return-void
.line 218
.end local p0 # "this":Lcom/google/android/exoplayer2/ExoPlayerImplInternal;
:cond_12
:try_start_12
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
const/16 v1, 0xf
invoke-interface {v0, v1, p1}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
move-result-object v0
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
:try_end_1d
.catchall {:try_start_12 .. :try_end_1d} :catchall_1f
.line 219
monitor-exit p0
return-void
.line 212
.end local p1 # "message":Lcom/google/android/exoplayer2/PlayerMessage;
:catchall_1f
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized setForegroundMode(Z)V
.registers 6
.param p1, "foregroundMode" # Z
monitor-enter p0
.line 222
const/16 v0, 0xe
const/4 v1, 0x0
if-eqz p1, :cond_11
.line 223
:try_start_6
iget-object v2, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
const/4 v3, 0x1
invoke-interface {v2, v0, v3, v1}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->obtainMessage(III)Landroid/os/Message;
move-result-object v0
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
goto :goto_3a
.line 225
.end local p0 # "this":Lcom/google/android/exoplayer2/ExoPlayerImplInternal;
:cond_11
new-instance v2, Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-direct {v2}, Ljava/util/concurrent/atomic/AtomicBoolean;-><init>()V
.line 226
.local v2, "processedFlag":Ljava/util/concurrent/atomic/AtomicBoolean;
iget-object v3, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
.line 227
invoke-interface {v3, v0, v1, v1, v2}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->obtainMessage(IIILjava/lang/Object;)Landroid/os/Message;
move-result-object v0
.line 228
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
.line 229
const/4 v0, 0x0
.line 230
.local v0, "wasInterrupted":Z
:goto_20
invoke-virtual {v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z
move-result v1
if-nez v1, :cond_31
iget-boolean v1, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->released:Z
:try_end_28
.catchall {:try_start_6 .. :try_end_28} :catchall_3c
if-nez v1, :cond_31
.line 232
:try_start_2a
invoke-virtual {p0}, Ljava/lang/Object;->wait()V
:try_end_2d
.catch Ljava/lang/InterruptedException; {:try_start_2a .. :try_end_2d} :catch_2e
.catchall {:try_start_2a .. :try_end_2d} :catchall_3c
.line 235
:goto_2d
goto :goto_20
.line 233
:catch_2e
move-exception v1
.line 234
.local v1, "e":Ljava/lang/InterruptedException;
const/4 v0, 0x1
.end local v1 # "e":Ljava/lang/InterruptedException;
goto :goto_2d
.line 237
:cond_31
if-eqz v0, :cond_3a
.line 239
:try_start_33
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Thread;->interrupt()V
:try_end_3a
.catchall {:try_start_33 .. :try_end_3a} :catchall_3c
.line 242
.end local v0 # "wasInterrupted":Z
.end local v2 # "processedFlag":Ljava/util/concurrent/atomic/AtomicBoolean;
:cond_3a
:goto_3a
monitor-exit p0
return-void
.line 221
.end local p1 # "foregroundMode":Z
:catchall_3c
move-exception p1
monitor-exit p0
goto :goto_40
:goto_3f
throw p1
:goto_40
goto :goto_3f
.end method
.method public setPlayWhenReady(Z)V
.registers 5
.param p1, "playWhenReady" # Z
.line 183
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
const/4 v1, 0x0
const/4 v2, 0x1
invoke-interface {v0, v2, p1, v1}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->obtainMessage(III)Landroid/os/Message;
move-result-object v0
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
.line 184
return-void
.end method
.method public setPlaybackParameters(Lcom/google/android/exoplayer2/PlaybackParameters;)V
.registers 4
.param p1, "playbackParameters" # Lcom/google/android/exoplayer2/PlaybackParameters;
.line 200
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
const/4 v1, 0x4
invoke-interface {v0, v1, p1}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
move-result-object v0
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
.line 201
return-void
.end method
.method public setRepeatMode(I)V
.registers 5
.param p1, "repeatMode" # I
.line 187
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
const/16 v1, 0xc
const/4 v2, 0x0
invoke-interface {v0, v1, p1, v2}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->obtainMessage(III)Landroid/os/Message;
move-result-object v0
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
.line 188
return-void
.end method
.method public setSeekParameters(Lcom/google/android/exoplayer2/SeekParameters;)V
.registers 4
.param p1, "seekParameters" # Lcom/google/android/exoplayer2/SeekParameters;
.line 204
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
const/4 v1, 0x5
invoke-interface {v0, v1, p1}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
move-result-object v0
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
.line 205
return-void
.end method
.method public setShuffleModeEnabled(Z)V
.registers 5
.param p1, "shuffleModeEnabled" # Z
.line 191
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
const/4 v1, 0x0
const/16 v2, 0xd
invoke-interface {v0, v2, p1, v1}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->obtainMessage(III)Landroid/os/Message;
move-result-object v0
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
.line 192
return-void
.end method
.method public stop(Z)V
.registers 5
.param p1, "reset" # Z
.line 208
iget-object v0, p0, Lcom/google/android/exoplayer2/ExoPlayerImplInternal;->handler:Lcom/google/android/exoplayer2/util/HandlerWrapper;
const/4 v1, 0x0
const/4 v2, 0x6
invoke-interface {v0, v2, p1, v1}, Lcom/google/android/exoplayer2/util/HandlerWrapper;->obtainMessage(III)Landroid/os/Message;
move-result-object v0
invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
.line 209
return-void
.end method